어느새 200번째 TIL이다. 앞으로도 꾸준하게 계속 이어나가보자!!
애플리케이션에 잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차
SW가 고객의 요구사항을 만족시키는지 확인(Validation)하고 검증(Verification)한다.
파레토법칙 : 20%의 코드에서 전체 결함의 80%가 발견된다는 법칙
살충제 패러독스 : 동일한 테스트 케이스로 동일한 테스트를 반복하면 더이상 결함이 발견되지 않는 현상
오류-부재의 궤변 : SW의 결함을 모두 없에도 사용자의 요구사항을 만족시키지 못하면 해당 SW는 품질이 높다고 할 수 없다.
정적 테스트 : 프로그램을 실행하지 않고 소스코드를 대상으로 분석하는 테스트.
소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위해 사용
ex) 워크스루, 인스팩션, 코드 검사
동적 테스트 : 프로그램을 실행해 오류를 찾는 테스트
SW개발의 모든 단계에서 테스트를 수행
ex) 블랙박스 테스트, 화이트박스 테스트
검증(Verification) 테스트 : 개발자의 시각에서 과정을 검증하는 테스트
제품이 명세서대로 완성됐는지를 테스트
확인(Validation) 테스트 : 사용자의 시각에서 결과를 확인하는 테스트
사용자의 요구사항대로 제품이 완성됐는지, 제품이 정상적으로 동작하는 지를 테스트
회복(Recovery) 테스트 : 시스템에 여러 결함을 주어 실패하도록 한 후 올바르게 복구 되는지 테스트
안전(Security) 테스트 : 시스템 보호 도구가 불법적인 침입으로부터 시스템을 보호할 수 있는지 확인하는 테스트
강도(Stress) 테스트
: 시스템에 과도한 정보량이나 빈도를 부과해 과부하시에도 정상적으로 작도하는지 확인하는 테스트
성능(Performance) 테스트 : 실시간 성능이나 전체적인 효율성을 진단하는 테스트
응답시간, 처리량 등을 테스트
구조(Structure) 테스트 : SW 내부의 논리적 경로, 소스코드의 복잡도 등을 평가
회귀(Regression) 테스트 : 소프트웨어의 변경 또는 수정된 코드에 새로운 결함이 없는지 확인하는 테스트
병행(Parallel) 테스트 : 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력해 결과를 비교하는 테스트
소스코드를 오픈 시킨 상태에서 소스코드의 논리적인 모든 경로를 테스트해 설계하는 방법
모듈 안의 작동을 직접 관찰할 수 있다. 소스코드의 모든 문장을 한번 이상 실행한다.
기초 경로 검사(Base Path Testing)
테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트
대표적인 화이트 박스 테스트
제어 구조 검사(Control Structure Testing)
조건검사(모듈 내 모든 논리적 조건 테스트), 루프검사(반복구조에 초점), 데이터 흐름 검사(변수에 초점)
문장 검증 기준 : Statement Covorage. 소스코드의 모든 구문
이 한 번 이상 수행되도록 테스트를 설계한다.
분기 검증 기준 : Branch Coverage. 소스코드의 모든 조건문
에 대해 조건식의 결과가 True와 False인 경우가 한 번 이상 수행되도록 테스트를 설계한다. 결정 검증 기준이라고도 한다.
조건 검증 기준 : Condition Coverage. 조건식에 상관 없이 개별 조건
이 True와 False일때 수행되도록 수성하는 검증 기준
SW가 수행할 특정 기능을 알기위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트
사용자의 요구사항 명세를 보면서 테스트. 주로 구현된 기능을 테스트
소프트웨어 인터페이스를 통해 실시된다.
동치분할검사
(Equivalance Partitioning Testing)
각 영역에 해당하는 입력값을 균등하게 입력해 예상 결과와 실제 결과를 비교하는 기법
프로그램의 입력 조건에 타당한 입력자료와 타당하지 않은 입력자료의 개수를 균등하게 해 테스트 케이스를 정하고 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 기법
동등분할기법 or 동치 클래스 분해라고도 한다.
경계값 분석
(Boundary Value Analysis)
입력 조건의 중간 값보다 경계값에서 오류가 높다는 점을 이용해 경계값을 케이스로 선정하는 테스트
원인 효과 그래프 검사(Cause-Effect Graphing Testing)
입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정해 검사
하는 방법
오류 예측 검사 : 과거의 경험이나 확인자의 감각으로 테스트
비교 검사 : 여러 버전에 동일한 테스트 자료를 제공해 동일한 결과가 출력되는지 테스트