
Structural Testing Technique에는 구문 커버리지, 분기 커버리지, 경로 커버리지 등이 있습니다. 구문 커버리지 테스트(Statement Coverage Test) 프로그램의 모든 구문을 적어도 1번 이상 수행할 때 100%의 커버리지를 가집니다. 구조적 테스트 커버리지 중 가장 간단하고 자동화하기가 쉽습니다. 모든 입력값에 대해 올바르게 작동하는지 보장할 수 없습니다. 모든 경로를 실행할 수 없다는 단점이 있습니다. 분기 커버리지 테스트(Branch Coverage Test) 프로그램의 모든 분기 조건들이 적어도 1번씩 수행될 때 100%의 커버리지를 가집니다. 각 분기문에서 참과 거짓을 적어도 한번 이상 실행시키는 것이 기준이 됩니다. 분기 커버리지는 구문 커버리지를 포함합니다. ..

Functional Testing Technique에는 오류 추측, 경계값 분석, 동치 분할 등이 있습니다. 오류 추측(Error Guessing) 가장 일반적이고 가장 널리 사용되는 기법입니다. 주어진 기능에 대해 직관과 경험을 이용하여 가능한 에러의 종류를 예측하고 이를 바탕으로 테스트를 수행합니다. 시험자의 역량에 테스트 결과가 의존하는 경향이 있습니다. 테스트의 마지막 단계에서 사용하는 것이 적절합니다. 스펙이 거의 없거나 불충분할 때, 시간적인 압박이 심할 경우에 유용한 방식입니다. 다른 기법이나 공식적인 테스트를 보완할 때도 유용합니다. 예) 휴대전화에 저장공간이 5MB가 남아 있는데 10MB짜리 영상을 다운로드 시도하면 어떻게 될까? 동치 분할(Equivalence Class Partitio..

검증하는 방식에 따라 Code Inspection, Runtime Test, Unit Test, Integration Test, System Test, Acceptance Test 등으로 분류할 수 있습니다. Unit Test 클래스, 함수, 이벤트, 메시지 등을 테스트 대상의 단위(모듈)로 하여 동작의 이상 유무를 판단합니다. 설계서 상에 정의된 기능을 제대로 수행하는지 검증하는데 디버깅이 쉬워 결함이 발견될 때마다 수정이 가능하다는 것이 장점입니다. 빡빡한 개발 스케줄 등으로 인해 국내에서는 많이 활용되지 않고 있는 방식입니다. Unit Test는 Test Driven Development 방식으로 테스트를 위한 명세(Spec)가 코드보다 먼저 작성되고 Test Case에 알맞게 코딩을 합니다. 코드..

검증하는 방식에 따라 Code Inspection, Runtime Test, Unit Test, Integration Test, System Test, Acceptance Test 등으로 분류할 수 있습니다. Code Inspection 산출물(작성된 코드)이 미리 정의된 룰에 위반되는 사항은 없는지를 검토하는 작업입니다. Code Inspection을 위해서는 코딩 표준이 필요하며 코딩 표준은 코딩 룰로 구성됩니다. 코딩 룰은 Code Layout, SW Bug Issue, code Portable Issue, SW Metrics 등의 세부분야가 있습니다. 코드 작성 이전에 검토 규칙(룰)은 사전에 작성되어 배포되어야 하며 개발자에게 충분한 교육이 이루어져야 합니다. 이를 통해 초기에 소프트웨어 결함을..

Source Code의 사용 유무에 따라 분류하면 Black Box Testing, White Box Testing, Gray Box Testing 등으로 구분됩니다. Black Box Testing 프로그램이 어떻게 구현되어 있는지는 관여하지 않고 입력값에 대한 결과가 올바른 출력값인지에 대해 검증합니다. SW가 가져야할 기능을 알고 있지만 그 기능이 어떻게 작동되는지는 볼 수 없습니다. 즉, 어떤 내용을 입력했을 때 특정 출력을 얻게 되지만 그 작동원리는 모릅니다. 주로 발견되는 에러는 부정확한 기능 또는 누락된 기능, 인터페이스 오류, 행위 및 성능 오류, 초기화 및 종료 에러 등이 있습니다. 최종 제품의 사용자 입장에서 사용성을 테스트하며, 고객의 제품에 대한 신뢰성과 직결되므로 매우 중요합니다...

프로그램의 실행 여부에 따라 Static 또는 Dynamic Testing으로 구분합니다. Static Testing은 작성한 코드를 직접 검토하여 오류를 유발할 가능성이 있는 코드를 사전에 검출해 내는 것을 의미합니다. 코드 작성자 입장에서의 테스트이며, 빌드 이전의 코드 상태에서 검사를 수행합니다. Dynamic Testing은 프로그램의 실제 동작을 확인함으로써, 원하는 동작을 정상적으로 수행하는지를 검토합니다. 사용자 입장에서의 테스트이며, 빌드 이후 바이너리 코드를 실행시켜 검사를 수행합니다. 작성한 프로그래밍 언어의 동작 방식으로 인해 발생하는 문제를 Runtime Error라고 하는데 Static Test로 검출할 수 있습니다. 소프트웨어의 동작에 의해서 발생하는 문제를 Logical Err..

Testing이란 시스템에서 결함을 찾는 것을 말합니다. 주로 결함 발견의 메커니즘을 의미하지만 결함예방과 조화를 이루어야 합니다. 단지 수천가지 Test Case를 만들어 테스트를 실행하는 것을 의미하지는 않습니다. 이러한 테스트를 포함하여 Testing 전략 수립과 계획, 설계, 결함 수정과 도구의 사용 등을 포괄하는 의미라고 할 수 있습니다. Testing의 정의 초창기에는 코딩 작업의 일부라고 여겨졌습니다. 테스트는 프로그램이나 시스템이 예상대로 작동할 것이라는 신뢰도를 높여주는 과정이었습니다. 하지만 IEEE에서 정의한 내용을 보면, SW의 테스트는 수동 또는 자동으로 시스템을 시험 작동하고 평가하는 작업으로 명시된 요구를 잘 만족하는지, 예상된 결과와 실제 결과와의 차이가 있는지는 인식하기 위..
- Total
- Today
- Yesterday