메뉴 건너뛰기

박영식 홈페이지

[글쓰기] 나는 테스터다. 단위 테스트는 지양한다.

lispro062015.10.22 23:24조회 수 252댓글 0

    • 글자 크기

개발자 입장에서 실제 사용자는 어떤 식으로 입력할지, 기능을 사용할지 알 수 없다.


물론 초기에 "A는 B에 입력하고, C를 D와 같이 사용하세요." 라고 하더라도, " A?, B?, C?, D? == 가, 나, 다, 라 "로 흘려 들을 수 있다. 사실 제품 제작자가 아닌 내 자신이 사용자가 된다면, 설명서에 집중하여 최대한 시행착오를 줄이려 노력한다 해도 결국 한 두가지를 간과하여 실패에 이른다.


자주 짧은 코드를 작성하고, 간단한 단위의 배포 소스를 수정해 적용하는 업무를 하고 있다. 아무리 코드의 양이 적더라도 단위 테스트 등을 통해 품질을 관리할 필요가 있다. 이는 확장성에 닿아 있기 때문이다. 그러나 나는 게으르기 때문에 테스트를 위한 코딩은 하지 않는다. 단지 디버깅 로그를 사용할 뿐이다. 또한 핑계를 하나 더 붙여서 사용자의 입력과 행동이 단위 테스트 범위를 넘어서는 경우가 많아 차라리 사용자 테스트를 통해 버그를 수정하고, 축적된 데이터를 분석하는 것을 선호한다.


그동안은 나의 게으름을 완전히 숨겨왔지만, 이를 정당화(?)해 줄만한 글을 읽었기에 옮겨 놓는다.


테스트는 해야 한다. 테스트, 테스트, 테스트. 하지만 나는 단 한번도 (a) 설정하는 데 걸리는시간이 100 시간/사람 이상 걸리지 않거나 (b) 수많은 공학적 자원을 빨아들이지 않거나 (c) 실제로 상관이 있는 버그를 발견하는 구조적인 테스트 프로그램을 본 적이 없다. 단위 테스트라는 것은 수많은 엔지니어에게 지루함을 견디고 아무것도 찾아내지 않는 것의 대가로 급여를 지급하는 수단에 불과하다 - 윌 쉬플리-


개인적으로 나는 테스트 주도 개발이라 생각했다. 작은 코딩을 하고 테스트하여 원하는 결과를 얻고, 같은 방식으로 새로운 함수를 만들거나 확장하는 식으로 코딩을 하기 때문이다. 그러나 적확하지는 않음을 깨달았다. 이런 개발방식은 차라리 주먹구구식에 가까울지도 모른다. 그래도 설계가 어느 정도 포함되어 있고, 규모 자체가 워낙 작기에 효율적이다.


보안 점검에서 좀 더 과격한 테스터의 관점을 더한다면 아래의 조언을 받아들일 수 있다.


과감하게 말하겠다. 당신의 망할 프로그램을 반드시 테스트해야 한다. 실행하라. 사용하라. 이상한 일들을 해보라. 키보드를 망가뜨려라. 지나치게 많은 항목을 더해보라. 2MB 짜리 텍스트 파일을 넣어보라. 그것이 어떻게 오동작하는지 발견하라. 이렇게 하는 것이 매우 중요하기 때문에 나는 지금 고함을 지르고 있다. - 윌 쉬플리 -


한국은 너무과도한 테스트를 했는지도 모른다. 정말 2MB 를 넣었더니 디버깅이 불가능한 수준으로 갔다. IT 테스트베드로 좋다는 것은 인정하지만, 실험정신이 너무 강했는지도 모른다.


내가 제작한 프로그램은 사용자가 IT 관련이 아니다. 물론 이것은 중요하지 않을 수도 있다. 정말 생각지도 못한 사용이 일어나기도 하여, 끔찍한 결과가 나온 적도 있다.(그렇게 끔직하진 않다.) 아무튼 난 단위 테스트라기 보다는 사용전 테스트와 사용자 테스트를 통해 코딩을 한다. 이건 단순 테스트 주도 개발이 아닌 "주먹구구식 사용자 테스트 주도 개발" 정도로 불러본다.

lispro06 (비회원)
    • 글자 크기
[도서] 코딩호러의 이펙티브 프로그래밍 (by lispro06) [글쓰기] 당신은 왜 대출을 하지 않는가! (by lispro06)

댓글 달기

[도서] 딸에게 보내는 굿나잇 키스

[원문보기]

쉽게 말해서 나의 통장에 작은 집 한채를 살 돈이 들어 있었다면 과연 그런 그들을 썼겠는가 하는 것이다. 만에 하나라도 내 불만과 저항이 물질적 결핍에서 나온 것이라면 내가 쓴 그 글들이 저금통장의 무게만도 못한 것은 아니었을까.

실제로 나는 그때 글을 쓰다가 펜촉을 부러뜨리면서 맹세했다. 네가 마음 놓고 울 수 있는 공간을 내 손으로 마련할 수 있다면, 악마에게 영혼을 팔 수 있다고. 파우스트 앞에 나타난 그 유식한 메피스토펠레스가 아니더라도, 이따금 시골 머슴방에 등장하는 온몸에 털이 듬성듬성 난 촌스러운 도깨비라 할지라도, 나는 서슴지 않고 내 영혼을 집 한 채와 바꿨을지 모른다. 62페이지


다들 영혼이라도 팔아서 집을 마련하고자 할 것이다.


도시 문화에 익숙해지고 산업 사회의 온갖 물건들 사이에서 자라다 보면 밭이나 논에서 자라나는 곡실들, 그 먹을 것들로부터 점점 멀어지게 되는 법이야. 백화점에 가면 대부분 먹지 못하는 것투성이잖니. 먹을 수 있는 것보다 먹을 수 없는 상품들이 더 귀한 대접을 받는 곳이 바로 도시라고 하는 곳이다. 93페이지


그래도 마트나 백화점 식품 코너는 아직 매출의 큰 비중을 차지하는 곳이다. 사람은 먹어야 산다.(live + buy)


아마도 최초로 경쟁 사회를 경험하게 하는, 말하자면 삶의 게임에서 승자와 패자를 경험하게 하는 놀이라고 할 수 있어. 오늘날의 경쟁 사회에서는 다른 사람을 쓰러뜨려야 자기가 앉을 의자를 확보할 수 있지. 그 의자에 앉기 위해서 피투성이가 되도록 싸우는 현실을 그대로 반영한 놀이인 거야. 114페이지


음악 의자. - 의자 빠앗기 놀이 musical chairs - 오타가 없는 유려한 글들이 모인 책인데, 유일하게 발견된 단어이다. 의자 앉기 게임으로 불리며, 저자가 이런 생각을 했다는 데서 큰 반향을 일으켰다. "최초로 경쟁 사회를 경험한다" 흠 이런 관점에서 보면 빼앗다라는 표현이 맞을 수 있다. 그러나 먼저 앉은 것은 '차지하기'의 개념이지 빼앗는 것은 또 다른 개념이다. 충돌이라는 관점에서 보면 후자는 포기를 하기도 하므로 '빼앗기' 보다는 '앉기'로 보여진다.


방금 전에 쓴 글인데도 생각이 달라져서 다시 지우고 몇 번이고 고쳐. 방금 전에 쓴 글인데도 생각이 달라져서다시 지우고 쓰고를 반복하는 거야. 지우개 달린 연필이 왜 있겠니. 쓰는 것과 지우는 것은 반대말이면서 같은 말이라구. 사랑도 그런 거야. 생각이 달라져. 그때 지우고다시 시작할 수 있어. 왜 지울 수 없는 잉크로 네인생을 쓰려고 하니.~중략~지금 같으면 이렇게 말했을 거다. 컴퓨터가 위대한 것은 덮어쓰기가 가능하고 한숨에 모든 문자을 키보다의 삭제키 하나로 날릴 수 있다는 것야. 종이 위에 쓴 글이 아니라 액정 판에 뜨는 문자처럼 사랑해라. 137페이지


이 글은 이른 결혼에 대해 설득하기 위한 내용이다. 삭제는 쉬워 보이지만, 상당히 복잡한 과정으로 진행되고, 전자기적 신호를 기록하는 것이다. 링크를 끊어서 삭제된 것처럼 하는 경우도 있고, 자기정보를 의미없는 값으로 기록하여 삭제하는 방법도 있다. 결국 컴퓨터의 삭제는 또다른 쓰기로 "쓰는 것과 지우는 것은 반대말이면서 같은 말"이라는 저자의 통찰이 들어맞는 상황이다.


그런데 손자 손녀는 그렇지 않아. 자기와 동일시하는 거지. 할아버지와 손자는 궁극적으로 같은 자리에 앚아 있는 존재거든. 이걸 쇠사슬 이론이라고도 해. 쇠사슬을 봐. 반대로 결합되어 있어. 세로 가로 세로 가로, 이렇게 반대로 접합이 되어 있잖아. 그렇기 때문에 사슬과 사슬은 서로 어긋나지만 하나를 건너뛰면 같아지지. 180페이지


일리있는 이론이다.


[전화를 걸 수 없구나]


죽음이란 이렇게도 명백한 것이냐.

전화를 걸 수 없다는 것.


아이폰이 뭣인가

아이폰 2 아이폰 3

이제는 아이폰 4가

나온다고 하던데


~중략~

310페이지

~계속~

너에게 전화를 걸면

녹음된 여자의 목소리가

전원이 꺼져 있어 전화를 받을 수 없다고 하는구나.


모르는 소리 마라 이 바보들아

전원이 아니다

목숨이 꺼진 거다.

~하략~311페이지


이렇게 유치한 시를 쓰다니. 멋지다!!!


[도서] 나는 대학에 가지 않았다

[원문보기]

그때 만든 명함을 보고 싶었다. Life Designer?

"이 명함이 먹혀들던가요?"

"아니요. 다들 보험회사 다니냐며 물었어요."

213페이지


예전에 단체 홍보 명함도 술집 명함으로 오해된 적이 있다. 교회에서는 좋은 단어를 다 가져가고, 상업화에 물은 업체에서는 좋은 단어들을 다 버려놓았다.


보름전에 성당을 나가기 시작한 아버지처럼 용남 씨도 얼마 전 은신처를 하나 찾아냈다. 도서관은 생각보다 이방인의 몸을 숨기기에 안성맞춤이었다. 255페이지


나는 도서관에서 책만 빌릴 뿐이지 은신처로는 삼지 않는다. 나에 한도 없이 대출해 주는 고마운 은행으로 생각한다.

[논단] 주택가 주차난, 이제 보이네

[원문보기]

 차가 없을 때는(물론 지금도 없다) 주차난에 대해서 그냥 약간 불편한 정도로만 생각했다. 그러나 차를 구매하려고 하니, 주차에 대한 생각을 이리저리 하게 되어 매우 심각한 문제임을 깨닫게 되었다. 한 가구당 차량 1.5대라는 통계가 있는데, 이렇다면, 5층정도 되는 건물에 층당 4세 대가 있다면, 최소 20대의 주차공간이 확보되어야 한다. 그러나 원룸 난립과 이익 극대화를 목적으로 하는 건설사, 임대업자 입장에서는 이렇게 하면 손해이므로 절대 그렇지 않는다. 법이나 조례로 규제해야 하는데, 규제완화(?), 자동차 제조사와 판매사의 공격적 전략과 정경유착에 의해 차량등록 제한은 이루어지지 않고 있다. 너도 차를 타는데, 나도 타야겠다는 트랜드에 따라가는 심리로 주차공간은 생각 안하고 무분별하게 차량 구매를 하게되었다. 규제를 안 한 것도 문제지만, 이런 심리를 이용한 제조사와 판매사, 성숙하지 못한 시민의식이, 지옥같은 골목길을 만들어낸 것이다.

차를 살 수 있는 구매력이 되었다. 물론 그렇지 않아도 대출을 이용해 차를 이용해 보는 건 좋은 경험이다. 하지만, 주차공간도 확보하지 않고, 지역 주민뿐만 아니라 자신도 주차 공간으로 인해 고통받으면서 차를 운영하는 건 문화시민으로서 바람직하지 못하다. 주택가 주차난의 심각성을 깨달은 이상, no garage, no car 라는 policy 가 정착될 수 있도록 홍보하는 게 중요할 것이다.

집에 주차장이 확보되어 있지 않다면, 유료 주차장을 이용하고, 그게 아깝다면 구청 등의 공공기관에서 주차장을 확대하여 운영할 수 있도록 민원을 제기해야 할 것이다. 문득 구청 주차관리 부서에서 업무하는 직원과 통화하면서 답답함에 대해 이해가 되었다. 땅은 좁고, 이익을 극대화하려는 사람들은 주택을 난립하고..... 차라리 주택부지에 주차장을 조성하여 주차비를 받는 것이 타산이 맞을수도 있다. 현재 주택은 공실율이 지속적으로 높아지고 있어 갖고 있으면 손해다. 뭐, 생각 안해보진 않았겠지만, 쾌적한 환경을 위해서는 주택과 자동차, 주차장이 아름다운 비율로 조성되고, 매출도 올릴 수 있게 운영할 방법이 있을 것이다.

[영화] 앤트맨, 탐정, 인사이드 아웃, 위아 유어 프랜즈

[원문보기]

영화를 연달아 봤다.


재밌군.


인사이드 아웃은 눈물 나오는 애니메이션이다.


위아 유어 프랜즈의 경우는 좀 약(drug) 하긴 하지만 꽤 좋은 대사들이 나온다.




넌 우리가 이것보단 더 잘할 수 있는 일이 있다고 있다고 느끼지 않아?

우리가 언젠가는 이것보단 나을 수가 있을까?

요즘은, 넌 앱을 개발할 수도, 블로그를 시작할 수도 있고, 온라인에서 물건을 팔 수도 있지만, 만약 네가 DJ라면, 시작하기 위해서는 노래 한곡이면 된다.

여기 마음에 들어.

정말로 전체에서 가장 좋은 부분이다. 시작하기 전의 순간 말이야.



시작하기 전의 순간, 정말로 전체에서 가장 좋은 부분이다.

[도서] 녹지대2

[원문보기]

"알어. 하지만 이야기란 다 소용없이 거짓말만이 필요하지. 세상이 심심하니까."

12쪽


"법적으로 부인의 이림이 허용돼 있죠. 그것은 남이 말하는 명칭입니다. 저 자신하고는 아무 관계가 없죠."

81쪽


자고로 변화는, 교통사고를 제외하고, 다 천천히 오너리라. ~중략~

"물이 얼기까지 온도가 내려가는 시간은 오래 걸리지만 얼어버리는 것은 순식간에 온다고. 물이 끓을 때도 마찬가지 원리라나? 다 그러가 부지?

132쪽


이제는 눈을 감고 거리를 거닐어도 봄은 피부에 완연하다.

236쪽


이제는 눈을 감고 거리를 거닐어도 겨울은 피부에 완연하다. 춥다.

[영화] 라푼젤, 사도

[원문보기]

라푼젤에 노파는 정말 대응되는 인물이 있다. 탑 밖을 나가지 못하도록 하고 거짓을 이야기하는 노파.


라푼젤은 국민인가?


사도세자도 뒤주에 갇히고.


나도 사람들의 생각을 벗어나지 못하여 죽어가고 있다.


“허공으로 날아간 저 화살이 얼마나 떳떳하냐”


다들 재미없다고 한 것은 정말 떳떳한 발언이다.


그러나 그런 발언을 떳떳하게 할 수 있는가!!!

[잡담] 핫산과 정자, 주임과 청이, 리자와 당자

[원문보기]

핫산은 낙하산이다. 정자는 내정자다.


핫산은 정자씨와 한쌍을 이루는 환상의 커플이다. 둘다 금수저에 속한다고 해야하나? 아닐 수도 있지만 그럴만한 빽이 있는 것이다.


주임은 외주, 청이는 하청을 달리 표현해 봤다.(업체, 트너 등을 떠올려 봤으나 적절한 조어가 안된다.)


청이는 괜찮은데, 주임은 다른 직급과 헛갈릴 수 있다.


약직과 규직은 방금 생각 남(계약직과 정규직)


리자는 관리자이고, 당자는 담당자이다.


보통 담당자는 관리자 부하직원이고, 외부 직원은 담당자와 일하지만 관리자의 의도를 잘 파악해 일을 해야 한다. 담당자의 생각이나 지시로 잘못된 방향의 일을 수행하게 된다면, 다시 해야 하고, 책임도 당자보다는 주임이 져야한다.


수많은 핫산과 정자씨에게 소외당하는 약직들이 있다.


리자와 당자에게 휘둘리는 주임과 청이도 (고)객사에서는 규직과 멀다.


암튼 이런 조어들에 왜 흥미를 느끼는지 잘 모르겠다. (그런데, 핫산과 정자씨는 너무 잘 어울린다. ㅎㅎㅎㅎ)

[도서] 녹지대

[원문보기]

박경리의 소설이다.

 

"무슨 일이든 할 때까지가 좋지. 다 이루어좋고 보면 쓸쓸하고 외로워지는 거지." 83쪽

 

"원래 연애란 순탄하지 않어." 238쪽

 

 

문학이 끊긴,........ 북카페를 떠올려 줄만한 책.

 

대학생 때, 시화전을 보았던게 떠오른다. 요즘에도 대학 축제 때 시화전을 하는지.....

[도서] 코딩호러의 이펙티브 프로그래밍

[원문보기]

사람들은효과적으로 글을 쓰는 방법을 익히면서 평생을 보낸다. 이 과정에는 속임수가 없다. 글을 쓰는 능력은 돈을 주고 살 수도 없다. 스스로 열심히 익히는 방법 외에는 다른 방법이 없다.


바로 그렇기 때문에 글을 쓰는 것을 두려워하는 사람들은 블로그를 시작해야 한다.


그것은 일종의 운동과 같다. 아무리 몸매가 엉망인 사람이라도 매주 몇 번씩 운동을 열심히 하다 보면 몸매가 차츰 나아지기 마련이다. 자신의 블로그에 짧은 글이나마 일주일에 몇 차례씩 글을 올리면 글쓰기 능력도 차츰 나아진다. 글을 쓰는 것이 무서워서 글쓰기를 회피하면 엉망인 몸매로 평생을 살아가야 한다. 30쪽


초보 프로그래머 혹은 실력은 있지만 열정이 부족한 프로그래머는 원격근무를 하면서 성과를 내기가 어렵다. 적어도 전형적인 관리자나 투덜거리는 팀 리더가 그들의 목 뒤에 콧김을 내뿜지 않으면 말이다. 상처에서 피 대신 1과 0이라는 비트가 흘러내리지 않는 사람, 혹은 스스로 성과를 낼 수 있는 사람이라는 확실한 증거가 있는 사람이 아니라면 그런 사람과 원격근무를 통해 일할 생각은 하지 않는 것이 좋다. 163쪽


사용자는 미쳤다. 자동화된 테스트 스위트는 실제 베타 테스터들이 현실 세계에서 수행하는 베타 테스팅에 미치지 못한다. 사용자는 예측 불가능하기 때문이다. 사용자들은 자기가 선호하는 코드의 경로를 갖기 마련이다. 사용자들은 자신의 PC에 이상한 소프트웨어를 설치해 놓고 있다. 사용자는 미쳤다. 여기에 논쟁의 여지가 없다. 이러한 사용자들에 비해 컴퓨터는 지나칠 정도로 이성적이다. 293쪽


당신의 애플리케이션이나 웹사이트가 사용자의 행동을 유용하고 의미 있는 방식으로 수집하게 만들어라. 사용자의 피드백만 듣고 행동을 결정하지 말아야 한다. 사용자가 제공하는 피드백에 연결 지을 수 있는 실제 행동 데이터를 반드시 가지고 있어야 한다. 사용자의 피드백을 무시하는 것은 궁극적으로 당신을 실패로 몰아넣을지도 모른다. 하지만 모든 사용자의 요청에 맹목적으로 반응하는 것은 당신을 확실한 실패로 몰아 넣는다. 316쪽


사용자는 정말 "왜 그렇게 한 거지? 제대로 정신을 갖고 이런 행동을 한 것인가?"라는 생각이 들 만한 행위를 한다. 그래서 입력에 대한 로그를 수집하는 건 참으로 중요하다. 이미 그것을 하고 있는 나로써는 상당히 흥미로운 대목이었으며, OS와 제조사에서 백그라운드 작업으로 로그 수집을 하는 것에 대해 조금 더 잘 이해하게 되었다. 그러나 몰래 수집하는 듯한 느낌을 줄이기 위해, 사용자 정보를 가져가는 행위는 조금 더 공개적으로 하면 좋겠다.

[도서] 코딩호러의 이펙티브 프로그래밍

[원문보기]

사람들은효과적으로 글을 쓰는 방법을 익히면서 평생을 보낸다. 이 과정에는 속임수가 없다. 글을 쓰는 능력은 돈을 주고 살 수도 없다. 스스로 열심히 익히는 방법 외에는 다른 방법이 없다.


바로 그렇기 때문에 글을 쓰는 것을 두려워하는 사람들은 블로그를 시작해야 한다.


그것은 일종의 운동과 같다. 아무리 몸매가 엉망인 사람이라도 매주 몇 번씩 운동을 열심히 하다 보면 몸매가 차츰 나아지기 마련이다. 자신의 블로그에 짧은 글이나마 일주일에 몇 차례씩 글을 올리면 글쓰기 능력도 차츰 나아진다. 글을 쓰는 것이 무서워서 글쓰기를 회피하면 엉망인 몸매로 평생을 살아가야 한다. 30쪽


초보 프로그래머 혹은 실력은 있지만 열정이 부족한 프로그래머는 원격근무를 하면서 성과를 내기가 어렵다. 적어도 전형적인 관리자나 투덜거리는 팀 리더가 그들의 목 뒤에 콧김을 내뿜지 않으면 말이다. 상처에서 피 대신 1과 0이라는 비트가 흘러내리지 않는 사람, 혹은 스스로 성과를 낼 수 있는 사람이라는 확실한 증거가 있는 사람이 아니라면 그런 사람과 원격근무를 통해 일할 생각은 하지 않는 것이 좋다. 163쪽


사용자는 미쳤다. 자동화된 테스트 스위트는 실제 베타 테스터들이 현실 세계에서 수행하는 베타 테스팅에 미치지 못한다. 사용자는 예측 불가능하기 때문이다. 사용자들은 자기가 선호하는 코드의 경로를 갖기 마련이다. 사용자들은 자신의 PC에 이상한 소프트웨어를 설치해 놓고 있다. 사용자는 미쳤다. 여기에 논쟁의 여지가 없다. 이러한 사용자들에 비해 컴퓨터는 지나칠 정도로 이성적이다. 293쪽


당신의 애플리케이션이나 웹사이트가 사용자의 행동을 유용하고 의미 있는 방식으로 수집하게 만들어라. 사용자의 피드백만 듣고 행동을 결정하지 말아야 한다. 사용자가 제공하는 피드백에 연결 지을 수 있는 실제 행동 데이터를 반드시 가지고 있어야 한다. 사용자의 피드백을 무시하는 것은 궁극적으로 당신을 실패로 몰아넣을지도 모른다. 하지만 모든 사용자의 요청에 맹목적으로 반응하는 것은 당신을 확실한 실패로 몰아 넣는다. 316쪽


사용자는 정말 "왜 그렇게 한 거지? 제대로 정신을 갖고 이런 행동을 한 것인가?"라는 생각이 들 만한 행위를 한다. 그래서 입력에 대한 로그를 수집하는 건 참으로 중요하다. 이미 그것을 하고 있는 나로써는 상당히 흥미로운 대목이었으며, OS와 제조사에서 백그라운드 작업으로 로그 수집을 하는 것에 대해 조금 더 잘 이해하게 되었다. 그러나 몰래 수집하는 듯한 느낌을 줄이기 위해, 사용자 정보를 가져가는 행위는 조금 더 공개적으로 하면 좋겠다.

이전 1 ... 26 27 28 29 30 31 32 33 34 35... 76다음
첨부 (0)
위로