기본 콘텐츠로 건너뛰기

Featured Post

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

소프트웨어테스터가 꼭 알아야 할 QA업무 20가지 노하우

  QA가 전문적인 분야로 인식되어 가면서 QA 전문가와 테스터에 대한 개념과 업무에 대한 이론이 더욱 자리 잡아가고 있다. 단순히 테스트만 하는 테스터와 QA 전문가를 분류하는 기준은 명확하게 말할 수 있다. "QA가 무엇인가?" 이 물음에 답할 수 있느냐이다. 소프트웨어 테스트라는 업무를 진행하면서 단순히 테스트만 진행했다면 대답하기 어려울 것이다. 단순히 테스트만 한 테스터가 있다면 아래의 테스팅 노하우를 읽어보는 것을 권하고 싶다. 그리고 한번쯤은 왜라는 의문점을 스스로 가져보길 바란다. 이 포스트를 주의 깊게 읽어보면 테스트 활동을 실천하고 적용해 볼 수 있다. 이후에 경험을 통해 모든 사례를 배울 수 있고 실패하는 사례도 경험의 과정이고 배움이라는 것을 인지해야 한다.


경험을 통해 배운 20가지 최선의 소프트웨어 테스트 업무 노하우

1) 소프트웨어 요구 사항과 설계 단계에서 테스트팀의 권한을 확보해야 한다.
 이 방법으로 테스트팀이 애플리케이션 의존도에 대해 아는 것이 상세한 테스트 커버리지를 달성 시킬 수 있다. 만약 테스트팀이 개발 수명 주기에서 이런 부분을 요청받지 못했다면 관리자나 담당자에게 모든 프로세스 결정이나 관련 회의에 대해 테스트팀을 포함시켜 달라고 요청해야 한다.

2) 사용자 요구 사항 문서에 대한 이의 제기를 생략한다.
 사용자가 어플에 필요하지 않거나 요구하지 않으려고 했던 것을 명시하지는 않는다.

3) 테스트 결과를 철저히 분석해서 인지한다.
 테스트 결과만 보고 지나치면 안 된다. 마지막 테스트 결과는 ‘Pass’ 이거나 ‘Fail’일수 있다. ‘Fail’의 근본적인 원인을 해결하려는 것이 문제의 해결책으로 당신을 안내할 것이다. 테스터가 단순히 결함을 보고하는 것이 아닌 해결책을 제시한다면 인정받을 것이다.

4) 테스트 대상이 되는 소프트웨어의 테스트 범위를 항상 최대로 잡아서 노하우를 터득한다.
 100% 테스트 범위를 충족하는 것은 불가능하지만 항상 근접하게 시도할 수 있다.

5) 최대 테스트 범위를 확실히 하기 위해서 테스트 중인 어플의 비슷한 기능을 모듈화한다.
 각각의 단위 모듈 별로 테스트케이스를 작성한다. 예를 들면 만약 웹사이트 어플을 모듈별로 나눴다고 가정하고 ‘사용자 정보 수락’이라는 하나의 모듈이 있다. 테스트 케이스 작성을 위해 ‘유저 정보’ 화면을 UI 테스트, 보안 테스트, 기능 테스트 등과 같은 항목으로 분류할 수 있다. 테스트 데이터에 대해서 모든 폼 영역 유형과 사이즈, 유효한 값과 부정적인 값을 적용하고 모든 테스트 범위를 충족하는 테스트 케이스를 작성한다.




6) 요구 사항 분석, 설계 단계에서 테스트 케이스를 작성해라.
 이 방법은 당신이 모든 요구 사항을 테스트 가능하게 할 뿐만 아니라 결함을 예방할 수 있다. 테스트를 진행하기에 앞서 테스트 케이스를 준비해 둔다면 더 효율적인 테스트 진행이 가능하다.

7) 테스트 케이스 설계 시 요구 사항에 따른 유효한 조건의 기능을 먼저 작성한다.
 그다음 유효하지 않은 조건의 테스트 케이스를 작성한다. 이렇게 하는 이유는 정상동작을 알아야 비정상동작에 대한 인지가 가능하며 유효한 조건에 만족하지 않는 것은 1 결함으로 판단해야한다.
이 방법으로 테스트 대상의 예상되는 동작과 예상하지 않는 동작에 대해 포함할수 있다.

8) 개발자에게 테스트 케이스를 코딩보다 먼저 인지하게 해라.  더 많은 결함을 발견할 생각에 테스트 케이스를 테스트 버전 어플이 나올 때까지 숨겨 놓고 기다리지 말고 개발자에게 테스트케이스를 리뷰하도록 공유한다. 개발자가 품질 있는 어플을 개발하면 재작업 시간을 절약시킬 것이다.

9) "개발자는 자신의 코드를 테스트하지 않는다."라는 것을 염두해 두자.
 개발된 어플의 기본적인 단위 테스트가 끝나면 개발자는 테스터에게 테스트용 어플을 전달한다. 하지만 당신은 개발자에게 테스트 용 어플을 전달하라고 강요해서는 안된다. 처리할 시간을 줘야 한다. 관리자를 포함한 모든 사람들이 언제 모듈과 업데이트가 언제 테스트를 위해 전달되는지 알고 있으며, 그들은 그에 따라 테스트 시간을 추정 할 것이다. 이것이 애자일 프로젝트(Agile Project) 환경에서의 전형적인 상황이다.

10) 결함을 찾을 수 있다는 긍정적인 생각을 하고 테스트를 진행해라.
 사전에 테스트 대상에 결함이 없을 거라고 생각하고 진행하면 안 된다. 결함을 발견한다는 인지를 하고 테스트를 진행하면, 분명히 검출하기 어려운 결함을 발견하게 될 것이다.

11) 우선순위와 중요도가 높은 테스트 업무를 시간이 다 돼서 진행하지 말자.
 테스트 업무에 높고 낮은 우선순위를 정해서 이에 따라서 테스트 업무를 진행해야 한다. 우선순위를 정하기 위해 리스크와 관련된 것을 분석한다.

12) 엄격한 응답시간이 요구되는 어플들은 성능 테스트를 철저히 진행해라.
 성능 테스트는 많은 어플의 중요한 부분이다. 전수 검사에서 성능 테스트는 요구되는 다량의 데이터가 부족하기 때문에 대부분 생략되는 부분이다. 테스트 대상에 대해 성능 테스트를 할 수 있는 방법을 찾아야 한다. 만약 성능 테스트 데이터를 생성하기 어려운 상황일 경우에는 기본적인 스크립트를 작성하거나 담당 개발자에게 요청하여 테스트를 진행한다.

13) 리그레이션 테스트(Regression Test)를 위해 테스트 케이스를 구분하고 그룹화한다.
 이슈가 발생한 부분에 대해서 분석해서 해당 영역에 관련된 기능과 테스트 케이스를 구분할 수 있다면 재 테스트는 효율적이고 신속하게 진행될 수 있다. 하지만 관련 기능을 구분할 때에는 상황과 프로그램의 복잡도에 따라서 개발자 혹은 프로젝트 관리자와 협업이 필요하며 신중하게 분석해야 한다. 잘못 분석한다면 치명적인 결함을 테스트하지 않을 수 있다.

14) 리그레이션 테스트를 진행할 때는 이전 결함 히스토리와 그래프를 사용한다.
 어떤 모듈에서 결함이 많이 발생했는지 등을 측정해서 기록해야 한다. 그래프는 어플의 많은 결함 발생할 부분을 예측하는데 도움이 될 수 있다.



15) 테스트 업무 진행 중 알게 된 새로운 용어와 개념을 메모해라.
 테스트 시 기록 문서를 열어두어야 한다. 테스트 진행 상황과 소견을 기록한다. 최종 테스트 결과 보고를 준비할 때 이 문서를 참고한다. 이 습관은 모호하지 않은 상세한 테스트 완료 보고서를 제공하는데 도움이 될 것이다.

16) 테스트 중 개발자나 테스터로 인해서 변경된 코드 기반에 대해 기록한다.
 이것은 실제 운영 중인 프로젝트에서 변경된 사항이 실제 사용 중인 프로세스에 영향을 미치지 않게 하기 위한 개발과 테스트 환경의 필수적인 사항이다. 테스트 목적을 위한 모든 변경된 코드 내용을 메모하고 최종 배포할 때 변경되고 삭제된 사항들이 적용된 정보가 사용자에게 전달될 수 있도록 해야 한다.

17) 테스트 환경과 개발자는 독립적으로 유지해라.
 이것은 관련 문서나 Release Note에 빠진 어떤 구성요소를 찾기 위해 필수적인 사항이다. 가끔 개발자들은 시스템이나 어플의 구성요소로 변경하는데 해당 사항에 대한 언급을 잊는경우가 있다. 개발자들이 테스트 환경에 대한 접근을 할수 없다면 뜻하지 않게 구성요소를 잘못 변경하는 일은 없을 것이고 놓쳤던 사항들은 정해진 단계에서 발견될 것이다.

18) 애매모호하지 않은 명확하고 기술적인 결함 보고서를 작성해라.
 결함의 증상만 전달하지 말고 미치는 영향과 가능한 해결책을 제안해야 한다.

19) 소프트웨어에 대해 더 많은 정보를 얻기 위해 개발자와 원활한 의사소통을 유지해라.
 언제든 가능하면 분쟁을 해결하기 위해 직접 대면해서 이야기하고 오해를 피해야 한다. 하지만 요구 사항을 받아 들이거나 분쟁이 해결되었을 경우에 구두로만 하지 말고 이메일 같은 서면으로도 기록을 해두자

20) 테스트 팀은 최선의 테스트 사례와 경험을 다른 팀에게 공유해야 한다.
 테스트 업무는 창의적이고 도전적인 업무라는 것을 잊으면 안 된다. 이 도전적인 과제가 어떻게 전개될지는 본인의 능력과 경험에 따라 달라진다고 생각한다.

댓글

댓글 쓰기

이 블로그의 인기 게시물

스티브 잡스 명언 영어 세상에서 가장 감명 깊은 어록 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

영어 8품사의 문장 구조를 예제로 쉽게 이해하자

1. 영어 8품사 정리  영어 8품사(The 8 parts of speech)란 명사, 대명사, 동사, 형용사, 부사, 전치사, 접속사, 감탄사 를 말하며, 동일한 의미나 기능을 하는 낱말들을 8가지로 분류한 것이다. ① 명사(NOUN) - 사물의 이름으로 사람, 장소, 생물/무생물, 추상적 개념 등 생각해 낼 수 있는 모든 것의 이름이다. 영어에서 명사는 셀 수 있는 명사와 셀 수 없는 명사로 나뉘는데, 셀 수 있는 명사는 단수, 복수에 따라 낱말이 달라지는데, 대게 단어 뒤에 "(e)s"가 붙는다. - 셀 수 있는 명사 ex) book → books, pen → pens, dog → dogs, table → tables, party → parties, woman → women ... - 셀 수 없는 명사 ex) coffee, computer, love, water, family, money, information ... ② 대명사(PRONOUN) - 문장에서 명사 대신 사용한다. 대화나 글에서 사람, 사물 등을 '그녀', '저것'등으로 대신 쓰는 것을 대명사라고 한다. ex) I, you, he, she, it, that, none ... ③ 동사(VERB) - 사람, 사물의 동작이나 상태를 나타내는 품사로 문장에서 필수로 들어간다. 현재시제 3인칭 단수면 동사 뒤에 대게 '(e)s'가 붙는데, 3인칭 단수란 I, You, We를 제외한 다른 인물이나 사물이다. 복수가 아닌 단수를 말하고 현재시제는 미래나 과거가 아닌 현재를 말한다. 또한, 표현하려는 문장이 과거면 동사 뒤에 대게 (e)d가 붙는다. - 현재시제 ex) agree, stay, find, ask, eat, access ... - 3인칭 단수 ex) agrees, stays, finds, asks, eats, accesses ... - 과거시제 ex) agreed, stayed, foun

가산명사 불가산명사를 예제로 쉽게 이해하자

What are the singular and plural noun?  개수를 셀 수 있는 사물을 가산명사라고 하고, 개수를 셀 수 없는 사물을 불가산명사라고 한다. 영어에서는 셀 수 있고 없고에 따라 분류하며, 명사와 동사의 형태가 달라지고 상황에 따라서 한정사도 다르게 사용해야 한다. 한국인, 일본인 등을 포함한 한자문화권에서는 이 부분을 따지지 않는 데 영어는 이걸 굉장히 철저하게 따지며 셀 수 있나 없나에 따라 문법적인 요소가 굉장히 갈리기 때문에 영어를 배울 때 상당히 난항을 겪는 부분이다. TOEIC 등 영어 시험에서도 단골 파트 영역을 차지하고 있다. 예를 들어, 'water'는 셀 수 없지만 물병에 담겨 있는 'a bottle of water'는 셀 수 있는 가산명사이다. 하지만 실제 영어 회화에서는 Native Speaker가 편의상 '2 water'라고 쓰는 경우도 있다. 이를 틀렸다고 말할 수는 없지만 영어 학습지나 시험과 같은 공식적인 영어에서는 삼가야 한다. 아래 링크를 클릭하면 가산명사와 불가산명사에 대한 더 많은 단어를 다뤄서 참고하기 좋다. https://koonhous.tistory.com/entry/countable-and-uncountable-noun 1 가산명사(셀 수 있는 명사)  1개, 2개, 3개 이런 식으로 셀 수 있다는 걸 말하는데 한글이나 영어나 셀 수 있는 종류에는 많은 차이가 없기에 큰 문제가 되지는 않는다. 가산명사가 훨씬 더 많아서 불가산명사 빼고 다 가산명사라고 생각해도 무방하다. 영어권 원어민 강사들은 사고방식으로 이를 간단하게 구분하는 방법은 대상을 반으로 잘라보면 된다. 그다음 대상이 가진 기능이나 모양이 망가진다면 가산 명사이며, 그 기능이나 모양이 망가지지 않거나 나누기 애매한 것이라면 불가산 명사라고 보면 된다. 가산명사에만 단수·복수의 구분이 있고 단수일 때는 반드시 부정관사(a/an)와 같은 한정사(the, my, this)가 필요