기본 콘텐츠로 건너뛰기

STAREAST 참관기 - Build the Right Regression Suite with Behavior-Driven Testing

컨퍼런스 2일차 오후 첫번째 세션은 그 유명한 ThoughtWorks 사의 Anand Bagmar 라는 분이 발표한 'Build the Right Regression Suite with Behavior-Driven Testing'라는 세션을 들었습니다.

처음에 들어갈때는 ThoughtWorks 사의 발표인줄 몰랐다가 나중에 보니 ThoughtWorks 사의 발표더군요.. 웬지 모를 급 호감이...

사실 들을만한 세션이 없어서 반은 호기심으로 들어갔던 세션인데 생각보다 세션 내용이 매우 좋았습니다.

발표를 듣는 사람도 엄청 많아서 좌석이 모자라서 서서 드는 사람이 있을 정도였습니다. 웬지 모를 뜨거운 반응이었습니다. 제가 들었던 세션 중 그토록 뜨거웠던 반응을 보인 세션은 이 세션이 유일했습니다.

발표하시는 분이 인도분이라서 발음을 못알아들을까봐 매우 걱정했는데 발음도 좋으시고...

하지만 이 세션을 들어도 사실 전 아직도 BDT를 잘 모르겟습니다. 개념은 대충 알겠는데.. 흠..

세션 발표내용을 요약하면 이렇습니다.

애자일 개발 조직에서는 단위테스트가 아무래도 자동화가 용이하다보니 단위테스트만 비대해지는 경향이 있다. 그래서 대체로 애자일 개발 조직에서는 테스트가 피라미드 모양이 된다. 아래가 길고 위는 얇은..

이렇게 되면 필연적으로 GUI 테스트가 약해질 수밖에 없다. GUI 테스트는 아무래도 자동화 테스트가 어려운 것이 사실이다. GUI 테스트를 모두 자동화할 수는 없다. 자동화와 함께 탐색적 테스팅과 같이 사람이 하는 테스트도 중요하다.

그럼 GUI 테스트를 어떻게 자동화할것인가?

그에 대한 방안이 BDD 또는 BDT이다.

BDT는 기능이 아닌 행동(액션, 목적)에 집중하는 것이다. 큰 그림을 볼 수 있어야 한다.

기능에 집중하면 테스트 케이스를 많이 만들 수는 있지만 중요한 것을 놓칠 수 있다.

BDT를 작성하기 위해서는 퍼소나를 먼저 작성해야하고 그다음 퍼소나의 비즈니스 플로우에 집중해서 테스트 케이스를 도출해야한다.

정황이 최고다(Context is KING!!).

그리고 BDT로 작성한 테스트 케이스는 CI를 통해 지속적으로 통합, 수행되어야 한다.

머 이런 내용이었습니다.

사실 도구에 대한 소개나 시연 같은 것을 기대했었는데, BDD의 기본 개념만 소개되었고 마지막에 이러한 BDD의 구현은 돌아가서 각자 알아서 하라고 하더군요.

도구는 cucumber를 고려하라고 간단하게 말하고 넘어갔습니다.

그리고 여기서도 역시 CI 도구로 Jenkis를 강조하더군요.

정말로 재미있게 들었던 세션이었습니다.

댓글

이 블로그의 인기 게시물

테스트 케이스와 체크리스트의 차이가 뭐여?

테스트 실무에서 가장 혼돈되어 사용되는 용어 중 하나가 테스트 케이스와 체크리스트입니다. 많은 경우 체크리스트를 테스트 케이스로 사용하는 경우가 많습니다. 실제로 인터넷 커뮤니티나 블로그, ISO, IEEE, ISTQB 등등을 검색해보시면 테스트 케이스와 체크리스트에 대한 구분이 다 제각각입니다. 각각에 대한 정의가 다 제각각입니다. 사정이 이러하다보니 많은 사람들이 테스트 케이스와 체크리스트를 잘 구분하지 못하고 혼동해서 사용하는 경우가 많습니다. 물과 기름처럼 테스트 케이스와 체크리스트를 정확하게 구분할 수는 없겠지만.. ISTQB를 기준으로 말씀드리면 설계 기법을 통해 도출된 것은 테스트 케이스 그렇지 않은 것은 체크리스트라고 생각하시면 쉽습니다. 예를 들면 아래는 결정 테이블 테스팅 기법을 통해 도출된 테스트 케이스의 예제입니다. 실제 테스트 케이스는 위보다 복잡하겠지만 어쨌든 얘기하고 싶은 것은 위와 같이 설계 기법을 통해서 도출된 것은 테스트 케이스라고 합니다. 그런데 딱 보시면 아시겠지만 실제 테스트에서는 저 정도로는 테스트 커버리지를 충분히 만족했다고 얘기하기 힘듭니다. 그렇습니다. 어떤 분들은 테스트 케이스가 전가의 보도, 은 총알 쯤으로 생각하시는데.. 테스트 케이스는 일종의 마지노 선이라고 보시면 됩니다. 최소한 제품을 테스트 할때 이정도는 해줘야 한다는 최후의 방어선 정도라고 보시면 됩니다. 전쟁에서 최후의 방어선은 물러설 수 없는 마지막 보루입니다. 하지만 최후의 방어선만 지킨다고 전쟁에서 승리할 수는 없습니다. 프랑스는 마지노 요새만 믿고 있다가 독일에게 깔끔하게 발렸던 과거가 있지요. 전쟁에서 승리하려면 앞으로 나가야하고 치밀한 전략과 전술이 뒷받침 되어야 합니다. 더 높은 커버리지를 도달하고, 충분히 좋은 테스트가 수행되려면 테스트 케이스는 기본이 되어야 하고 거기에 더해서 체크리스트가 따라와 줘야 합니다. 이러한 체크리스트는 팀의 경험과 과거 프로젝트의 데이

리드스위치로 원격에서 가스 검침하기

집 바깥의 가스검침기의 가스 사용량을 집안에서 편하게 조회해볼 수 있는 기능을 구현해보고자 합니다. 그런데, 원격에서 가스 검침을 하시려면 가스 검침기에 해당 기능이 지원되어야 합니다. 본인 집의 가스 검침기에 가셔서 가스 사용량을 표시하는 아래 부분에 리드 센서를 부착하는 곳이 있는지 확인해 보시기 바랍니다. 위에 표시한 곳에 리드 센서를 장착할 수 있는 홈이 있어야 합니다. ​ 자 그럼 시작해볼까요? 우선은 준비물이 필요하겠죠.. 기본적인 준비물은 https://murianwind.blogspot.com/2021/12/esp.html 에서 소개해 드린 준비물과 크게 다르지 않습니다. 이미 지역난방 유량계 작업을 하셨던 분이라면 준비물이 넉넉히 남아 있으실 수도 있고.. 유량계와 가스 검침을 동시에 하시려면 각각 필요한 만큼 적당히 물품을 구매하시면 됩니다. ​ 다만.. 이번에는 유량계에서 사용했던 것만큼의 오버 스펙이 필요한건 아니라서 조금 더 저렴한 ESP8266 을 이용하도록 하겠습니다. ​ 이것도 2번만에 조금 익숙해지고 나서 생각하니.. 유량계도 ESP8266으로 구현해도 충분한 것이었는데.. 뭐.. 이미 구현해버렸으니 후회는 없습니다. ESP8266을 저는 납땜하기 귀찮아서 NodeMCU로 구매했습니다. https://www.11st.co.kr/products/3079314807?&xfrom=&xzone= 그리고 빵보드 2개, 터미널 블록 1개, 점프 케이블 2개가 필요합니다. 그리고 중요한 리스센서가 필요한데.. 리드 센서는 본인의 가스 검침기를 사진으로 찍은신 후에 https://m.blog.naver.com/pjwook0129/221265570229 에 연락해서 구입하시면 됩니다. ​ 준비된 물품을 아래처럼 구현했습니다. D7과 G에 가스 검침기에 부착한 리드센서의 전선을 연결해 주시면 됩니다. ​ ESP8266에 처음으로 플래싱하는 부분은 이전에 올렸던 유량계 게시물을 참조하시면 됩니다. 그리고 윈도우에서 버추얼 박스를 쓰시는

스위치봇 & 스위치봇 허브 미니 간단 사용기

제 블로그에 예전부터 오셨던 분들은 제가 사브작 사브작 홈 오토메이션을 어설프게 해온 것을 아실겁니다. 작년부터 너무 하고 싶었던 도어락 자동화에 도전해봤습니다. 우리 나라에 자체 서비스로 앱을 통해 도어락을 제어하는 제품은 꽤 있습니다. 게이트맨도 있고, 키위도 있고, 삼성도 있죠.. 그런데.. 전 그것보다 구글 어시스턴트를 지원하는 도어락이 필요했는데... 그런건 안만들더라구요.. 꼭 필요한건 아니지만 웬지 해보고 싶은데... 언제 제품이 출시될지도 몰라서.. 가능한 방법을 찾아보다가.. 스위치봇이라는 제품으로 도어락을 버튼을 꾹 누르는 방법을 찾아서 스위치봇이 직구가 아닌 국내에 출시되었길래 낼름 구매해서 도전해봤습니다. 스위치봇 제품에 대한 내용이나 구매는  https://www.wakers.shop/  에서 하시면 됩니다. 저는 스위치봇에 스위치봇을 구글 홈에 연결시키기 위해 스위치봇 허브 미니까지 구매했습니다. 스위치봇 허브 미니가 없으면 스위치봇을 외부에서 제어하거나 구글 홈에 연결할 수 없습니다. 그리고 제가 스위치봇 허브 미니를 구매한 이유 중 다른 하나는 이 제품이 RF 리모컨 기능이 지원됩니다. 집에 있는 모니터를 제어할 필요가 있어서 이참 저참으로 같이 구매했습니다. 제품 등록은 어렵지 않습니다. 여기서는 스위치봇 허브 미니에 RF 리모컨을 등록해서 구글 어시스턴트로 제어하는 방법을 소개해드릴까 합니다. 제가 스위치봇 허브 미니로 모니터를 제어하고 싶었던 부분은 컴퓨터에서 크롬캐스트로 외부 입력을 때에 따라 바꿔야 하는데.. 그때마다 리모컨을 찾는게 너무 불편해서였습니다.  어차피 리모컨은 외부 입력 바꿀 때 빼고는 쓸 일도 없는지라.. 매번 어디로 사라지면 정말 불편해서 이걸 자동화 하고 싶었습니다. 그런데, 처음에 스위치봇 허브 미니를 등록하고 여기에 리모컨을 등록하니.. 구글 홈에 등록된 리모컨이 자동으로 등록이 됩니다. 그런데, 등록된걸 확인해보니 전원 On/Off만 제어되는 것이고, 나머지 버튼은 구글 홈으로 제어가 안되어서..