기본 콘텐츠로 건너뛰기

Featured Post

영어회화 빨리 느는 방법 3가지

테스트 케이스 개선하여 소프트웨어 테스팅 효율성 향상에 대한 연구

테스트 케이스 개선 방법

 소프트웨어 개발 분야에서 유능한 소프트웨어 개발자는 코딩의 효율과 품질을 개선하는 코딩 단계 전에 기능 요구 사항을 기반으로 항상 유닛 테스트 케이스를 작성한다. 이와 같이 소프트웨어 테스터는 소프트웨어 개발 수명주기(Software life Cycle)의 초기 단계에 테스트 케이스를 작성해야 하는데 소프트웨어 요구 사항 취합 단계에 작성하는 것을 권장한다. 테스트 매니저 또는 품질보증 매니저는 아래 목록에 따라 가능한 문서를 준비하고 취합해야 한다.




1 테스트 케이스 작성을 위한 문서 취합
1.1 사용자 요구 사항(User Requirements)
 유저 요구 사항 문서는 비즈니스 절차, 사용자 프로파일, 사용자 환경, 다른 시스템과 호환성, 존재하는 시스템과의 교체 및 대체성, 기능 요구 사항, 비기능 요구 사항, 성능 요구 사항, 요구 사항의 권한 제약, 보안 요구 사항, 사용성 등을 말한다.

1.2 비즈니스 사용 사례(Business Use Case)
 비즈니스 사용 사례 문서는 소프트웨어 적용 업무 관점에서 기능 요구 사항의 사용 사례 시나리오를 자세히 기술한 문서를 말한다. 이 문서는 요구 사항의 범위 내에서 적용 업무 관점의 사용자 동작이나 시스템 동작, 목표, 사전 조건, 사후 조건, 기본 동작 흐름, 대체 동작 흐름, 선택 사항, 시스템적인 업무 흐름에 대한 모든 예외사항을 포함한다.

1.3 기능 요구 사항(Functional Requirements)
 요구 사항 범위 내에서 시스템의 각각의 특징에 대한 기능 요구 사항을 자세히 기술한 문서를 말한다. 일반적으로, 기능 요구 사항 문서는 개발팀이나 테스트팀에게 공통 백과사전과도 같은 정보로, 고객을 포함한 프로젝트 의사결정자에게는 공식적인 요구 사항으로 어떤 소프트웨어 개발사항보다 가장 중요한 정보를 제공한다.

1.4 소프트웨어 프로젝트 계획서 (선택사항)
 소프트웨어 프로젝트 계획 문서는 프로젝트, 목적, 우선순위, 주요 단계, 전반적인 활동, 조직 구조, 전략, 진척 관리, 위험도 분석, 의존도, 제약사항, 교육 제반사항 사용자 준수 사항, 프로젝트 일정 등을 자세히 설명한다.

1.5 테스트 계획서
 테스트 계획서는 품질관리 시스템, 문서 표준, 변경 관리 장치, 위험도 높은 모듈과 기능들, 형상 관리 시스템, 테스티 활동 계획, 결함 추적, 승인 조건을 기술한다. 이 문서는 테스트 되어야 하는 특성과, 테스트 되지 않아야 하는 특성을 판단하는데 사용되고, 테스트팀의 업무할당과 상호 협업, 자원 요구사항, 테스트 일정, 테스트 범위, 테스트 작성 기법, 테스트 산출물, 테스트 수행 필수 요소, 결함 보고 와 결함 추적 기법, 테스트 매트릭스 등이 포함된다.


2 샘플 테스트 케이스 작성하기

 아래 예제와 같이 익숙하고 간단한 'Login' 화면에 대해 효율적인 테스트 케이스를 작성해 보자. 더 위험도 높은 특성을 가진 복잡한 화면이라도 테스팅 접근 방법은 대부분 비슷하다.

2.1 모든 테스트케이스 절차의 첫 번째 접근 방법은 위와 같이 초기화면에 도입하는 것이 될 것이다. 하지만 개발 초기 단계에서는 시험용 디자인 우선순위나 다른 기능들로 인해 접근되지 않을 수도 있다. 소프트웨어 요구 사항 명세서가 프로젝트팀에게 전달되었다면, 대부분의 시험용 화면은 프로젝트 팀에 의해 만들어진다. 시험용 화면은 테스터의 업무를 간소화하고 테스트케이스의 효율을 높인다.

2.2 기능 요구 사항 명세서는 조직 프로세스에 따라 다양한 문서들 중 활용되는 문서가 달라진다. 사용자 요구 사항, 기능 요구 사항 명세서 또는 소프트웨어 요구사항 명세서 등 사용되는 문서 등 테스트 케이스 작성을 위해 활용도가 높은 문서를 참고하여 테스트 대상에 대해 완벽한 기능 동작 흐름을 파악할 수 있는 문서를 판단하여 활용한다.

2.3 먼저 시험용 화면과 기능 명세서가 확보되면, 테스트팀은 아래와 같은 접근법과 기준으로 테스트케이스를 작성해야 한다.
- UI 테스트 케이스: UI 테스트 케이스는 사용자에게 보이는 컨트롤러나 영역을 대상으로 한다. 동적인 컨트롤러와 정적인 컨트롤러의 보이는 부분이 테스트 대상이 되는데 위 로그인 화면을 예를 들면 '아이디', '비밀번호', 글자 같은 것들이 정적인 컨트롤러로 사용자와 상호작용을 하지 않고 보이기만 하는 컨트롤러이다.
- 기능 테스트 케이스: 반면에 로그인 버튼과 하이퍼 링크('일회용 로그인', '아이디 찾기')와 같이 사용자가 컨트롤러를 클릭한 후에 어떤 동작이 되는 부분이 동적인 영역이다. 기능 테스트 케이스는 동적인 영역을 대상으로 한다.
- 데이터베이스 테스트 케이스 - 먼저 사용자는 아이디와 비밀번호를 입력한다. 테스트 케이스는 관련된 데이터베이스를 대상으로 하는데, 아이디와 패스워드가 데이터 베이스와 테이블에 올바르게 있는지 확인하고, 테스트 중 해당 아이디가 접근 권한이 있는지를 확인한다.
- 프로세스 테스트 케이스 - 화면에 보이는 컨트롤러와 관련된 동작이 아닌 특성과 기능관련된 프로세스 영역을 대상으로 한다. 예를 들어, '아이디찾기'를 클릭하면 신분 확인 및 Email이 발송 되는데 이와 관련된 일련의 과정이 적절한 절차로 확인이 가능한지를 확인한다.



2.4 마지막으로 BAOE 법칙을 상기한다. BAOE란 1) 기본 흐름, 2) 대체 흐름, 3)선택 사항, 4) 다양한 상황의 예외사항. 모든 관점에서 긍정적이고 부정적인 테스트케이스가 적용되어야 한다.
BAOE 접근법에 대해 위의 로그인 화면을 예로 들면 아래와 같다.
- 기본 흐름: 임의의 브라우저에서 로그인 URL을 입력하고 요구되는 정보를 입력하고 로그인한다.
- 대체 흐름: 모바일 기기에 어플을 설치하고 요구되는 정보를 입력하고 로그인한다.
- 선택 사항: 로그인 화면으로 접속할 때 가능한 다른 방법으로 확인한다. 예를 들면, 로그인 후에 로그아웃을 하면 다시 로그인 화면으로 이동되는지, 또는 로그인 접속 시간이 초과 되었을 때 다시 로그인 화면으로 돌아오는지 확인한다.
- 예외사항: 해당 테스트 케이스의 부정적인 테스트케이스를 확인한다. 예를 들면, 로그인 화면에 잘못된 기호를 입력 후에 해당 동작이 되지 않거나 오류 메시지가 출력된다.
참고 가능한 모든 정보를 활용해 문서 전면 커버 등을 포함한 로그인 화면에 대한 테스트 케이스를 정해진 형식으로 설계해 보자.
테스트케이스의 논리적인 순서와 사리에 맞는 번호 정의는 테스트 케이스 내용 및 내역을 빠르게 식별하는데 도움이 된다.


3 샘플 테스트 케이스

3.1 테스트 케이스 전면 페이지 예제

 테스트 케이스 열은 테스트 대상에서 요구되는 테스트 매트릭스에 따라 우선순위, 테스트 목적, 에러 스크린샷 등과 같은 항목이 더 추가될 수 있다.

3.2 테스트 케이스 예제

 문서를 단순화하고 가독성을 좋게 하기 위해서 아래와 같이 로그인 화면에 대한 테스트 케이스에 재현 절차, 기대 동작과 실제 동작을 작성한다.

3.3 테스트 데이터 수집
 테스트케이스가 작성되어 질 때, 다른 테스터에게 가장 중요한 업무는 테스트 데이터 수집이다. 테스트 케이스에서 수행되어야 하는 테스트에 대한 샘플 데이터나 덤프 파일 같은 것들을 많은 테스터들이 미리 확보하지 않고 넘어가는 경우가 많다. 그러다 요구되어 지거나 수행할 때가 돼서야 데이터를 구하는데 이 부분은 심각한 오해이다.
 테스트 케이스를 작성하는 시기에 테스트 케이스 문서에 데이터가 없거나 업데이트 되지 않는 다면, 테스트를 수행하는 시간에 테스터는 테스트 데이터를 구하느라 비효율적인 시간을 소비하게 된다. 테스트 데이터는 기능적인 흐름 관점에서 긍정적인 테스트 케이스와 부정적인 테스트 케이스에 대해 준비되어야 한다. 비즈니스 사용 사례 문서는 이런 상황에서 매우 유용하다. 소프트웨어와 사용자, 시스템 상호작용이 비즈니스 케이스 문서에 잘 정의되어 있다면 테스트팀은 비즈니스 사례 문서에 가능한 동작의 모든 관점을 고려하여 테스트 케이스와 관련된 테스트 자료를 작성하기 쉬울 것이다.
 테스트 수행 시간에 효율적으로 테스트 데이터를 제공할 아래 샘플 테스트 데이터 문서에서 위에 작성된 테스트 케이스를 위한 데이터를 찾아라.



4 결론

 테스트 케이스의 효율성 개선이라는 것은 간단하게 정의된 용어가 아니지만 지속적인 테스트케이스 작성 연습, 테스트 수행의 과정과 성숙된 프로세스를 거쳐서 테스트케이스를 개선할 수 있다. 소프트웨어가 더욱 복잡해지고 중요한 부분을 차지하면서 테스트팀은 완벽한 테스트 도구를 만들기 위한 노력과 개선을 하는데 게을러지면 안된다.

댓글

이 블로그의 인기 게시물

스티브 잡스 명언 영어 세상에서 가장 감명 깊은 어록 25가지

"Sometimes Life is going to hit you in the head with a brick. Don't lose faith." "때때로 인생은 당신을 심하게 내두를 것이다. 스스로의 믿음을 잃지 마라."   대부분의 사람들은 적당히 즐기고, 적당히 게으르고, 어렵고 힘든 것은 피하고 싶어 한다. 그들이 무지함과 가난에서 벗어나지 못한 것이 그 이유이다. 반대로 큰 성공을 이룬 후에도 스티브잡스는 "내일 죽는다면"이라는 생각으로 극단적 이리만큼 스스로를 동기부여했다. 무엇인가 이룰 수 있는 사람은 그럴만한 자세가 있다.   스티브 잡스가 남긴 어록 중에 사람들이 가장 감명받은 25가지를 선별해 한글로 번역했다. 스티브 잡스 명언 영어  1  "The people who are crazy enough to think they can change the world are the ones who do." 세상을 바꿀수 있다고 생각하는 제대로 정신나간 사람들이 세상을 변화시킨다.  2  "I've always been attracted to the more revolutionary changes. I don't know why. Because they're harder. They're much more stressful emotionally. And you usually go through a period where everybody tells you that you’ve completely failed." 나는 항상 혁신적인 변화를 쫓아왔다. 그건 더 어려웠기 때문인지 모른다. 혁신은 감정적으로 굉장히 압박이 심하다. 그리고 모든사람들이 당신에게 완벽히 실패했다고 이야기 하는 시기를 이겨내야 한다.  3  "It's really hard to design products b

영어숙어 100가지 필수 암기해야 하는 표현 모음

 영어 숙어(idiom)란 두 개 이상의 단어로 이루어져 사용되면서 한 단어처럼 해석되는 단어이다. 예로 'get in'은 두 개의 단어가 결합되어 '타다, 들어가다'라는 의미를 지니며 한단어처럼 사용한다. 관용구의 한 종류이며 많이 사용하여 익숙해져서 생긴 말들을 말한다.  원어민들의 영어를 접하다 보면 알아듣기 힘들거나 잘못 이해하는 경우가 많이 있는데 이런 경우는 대게 숙어와 같은 관용구가 들어간 문장을 접했을 때이다. 영어 공부를 할 때에는 단어만 외우는 것보다 문장이나 숙어를 암기하는 것이 중요하다.  이 글에서는 필수 암기해야하는 영어 숙어 100가지 를 모아서 정리했으며, 더 많은 영어 숙어는 아래 글에서 외우기 쉽게 정리했다. 영어숙어 100가지 전치사+명사 형태의 숙어로 명사나 문장 뒤에서 꾸며주는 역할을 한다. ex) I recommend that the work (should) be done at once . 나는 그 일을 즉시 처리하도록 권한다. at once - 즉시 at the end of the month - 월 말에 at a surprisingly fast pace - 놀랄만한 속도로 at first - 처음에 at least - 최소한, 적어도 at random - 임의로, 무작위로 at all times - 항상 in print - 발간되고 있는 beyond control - 통제 불능의 out of control - 통제 불능의 in effect - 유효한, 효력이 있는 in advance - 사전에, 미리 ahead of time - 사전에, 미리 in a row - 줄줄이, 연달아 with care - ~조심스럽게 with high unemployment rates - ~높은 실업 상황 하에서 with a few exceptions - ~을 제외하고 명사+전치사 형태의 숙어로 뒤에 명사나 동명사가 온다. ex) Staff were asked to

영어회화 빨리 느는 방법 3가지

영어는 공부가 아니고 운동 이다. 영어회화 빨리 늘고 싶다면 머리로만 하지 말고 귀와 입, 몸으로 해야 한다.  이전 회사에서 모토로라 출신의 팀장이 했던 말이 생각난다. "내가 영어 하려고 한 달에 몇십만 원씩 주면서 강남에 1:1 영어도 해보고, 전화 영어도 해보고, 미국 출장도 오래 있고, 별짓 다해봤는데 영어는 안되더라 . 영어는 미국에 살아야 돼."  지금도 누군가에게는 영어는 별짓 다해도 안 되는 것이겠지만, 누군가에게는 미국, 영국 등 외국인 친구들과 즐겁게 대화하는 언어이고 업무를 처리하기도 하는 수단일 것이다. 당신도 반드시 할 수 있다. 그러니 영어를 별짓 다해도 안되는 걸로 단정 짓지 말고, 우리의 뇌를 멈추게 하지 말자. 지금까지 받은 영어교육은 잘못됐다.  한국인이 일반적으로 영어 교육을 받는 기간은 약 15년이다. 하지만 정작 영어 몇 마디 조차 못하는 게 현실이다. 단면적으로 이 부분만 봐도 과연 실용적인 교육인지 의구심이 들 수밖에 없다. 지금까지도 수십 년 동안 많은 사람들이 여전히 명사, 동사, 5형식 문장 등과 같은 문법 위주의 공부와 독해 위주의 잘못된 공부 방식만 고수하고 있다. 그렇게 공부하다가 하루에 10분 전화영어를 하면 원어민처럼 영어를 할 수 있다는 말에 속아 피 같은 돈을 쓰다가 결국 중도에 포기하는 게 일반적인 사람들의 모습이다. 물론 이런 공부 방식이 전혀 쓸모없는 것은 아니다. 하지만 영어회화에서는 도움이 안 된다는 것이다. 외국인과 대화를 한다거나 미국 드라마를 본다면 철저하게 느낄 것이다. 영어에 투입하는 시간 대부분을 읽고, 듣는 식의 영어공부를 했는데, 입으로 내뱉으라고 하면 안되는 게 당연하다. 또한, 원어민들이 실제로 발음하는 대로 공부하지 않았는데 들리지 않는 것도 당연하다.  장담하건대, 지금까지 했던 영어공부 방법으로는 영어회화를 잘할 수 없다. 돈을 들이지 않아도 되고, 혼자서도 할 수 있는 원초적인 영어회화 빨리 느는 방법 을 알아보자. 영어는 공