소프트웨어 테스트의 7가지 원칙
2024. 8. 7. 00:10ㆍCS 공부, 기타
- SW 테스트의 중요성
지속가능 개발
품질 보증
비용 절감
고객 만족
보안 강화
- SW 테스트의 7가지 원칙
- 테스트는 결함의 존재를 증명하는 활동이다.
- 완벽한 테스트는 불가능
- 테스팅은 초기에 실시
- 결함은 집중
- 살충제 패러독스
- 테스팅은 정황 의존적
- 오류 부재의 궤변
- 원칙 1 : 테스트는 결함의 존재를 증명하는 활동이다
테스트케이스를 수행했는데, 결함이 발견되지 않음
그렇다면 이 테스팅은 대상 시스템이 결함이 없다는 것을 증명한 것인가?
⇒ 테스트 케이스가 얼마나 정교하게 짜여있었는가에 따라 다르다!
- 원칙 2 : 완벽한 테스트는 불가능
테스트 케이스를 엄청 촘촘하게 많이 만들었는데, 다 테스트할 시간이 없다.
⇒ 중요한 기능을 먼저 테스트하는 등 전략적인 접근이 필요
- 원칙 3 : 테스팅은 초기에 실시
아직 구현 결과의 범위가 작은 초기에 테스트를 해야 한다.
구현 결과의 크기가 어느 정도 커지면 오류 찾기가 어려워 진다.
(호수에서 바늘을 찾는 격)
- 원칙 4 : 결함은 집중
결함은 발생한 곳을 중심으로 뭉치는 경향이 있다.
작성한 사람, 코드 복잡도, 변경 이력 등 다양한 영향에 의함
- 원칙 5 : 살충제 패러독스
사람은 동일한 테스트 케이스를 오래 사용하다보면 내성이 생긴다.
테스트 케이스의 구멍을 찾아 또다른 오류가 발생할 가능성이 커짐
- 원칙 6 : 테스팅은 정황 의존적
테스팅 접근법은 소프트웨어의 종류와 목적에 따라 달라질 수 있다.
동일한 로그인 테스트라도 금융 시스템과 이메일 시스템은 다르게 테스트된다.
- 원칙 7 : 오류 부재의 궤변
결함이 없다고 해서 서비스가 사용자의 요구를 반드시 만족시키지는 않는다.
사용자의 요구사항을 체크하는 Validation 활동도 필요하다.
(바퀴가 세모인 자동차를 만들어달라고 해서 그대로 만들면 아무도 쓰지 않을 것)
- 생성형 AI 와 SW 테스팅
- 테스트 케이스의 유효성을 높이기 위해 생성형 AI를 통해 실제 사용자를 모방하게 하여 개발팀이 예상치 못한 테스트 케이스를 만들어 수행
- 우선순위의 근거 데이터를 준비하고 데이터를 토대로 AI가 판단하여 기능별 우선순위를 정하게 함
- 원칙 3는 순서 문제라서 AI 도움 받을 일은 없다.
- GPT 등에 커밋 로그를 제공하여 자주 변경되는 (위험한) 부분을 캐치
- 생성형 AI에게 테스트 케이스를 읽게 하고, 이의 변형을 요청
- 동일한 기능이라도 정황을 다르게 제공
- AI에 페르소나와 기능 명세서를 제공하고 이 페르소나에 맞추어 사용자 인수 테스트 케이스를 요청
'CS 공부, 기타' 카테고리의 다른 글
DTO (Data Transfer Object) (0) | 2024.08.21 |
---|---|
Entity (엔티티) (0) | 2024.08.21 |
코드 리뷰와 Gerrit (0) | 2024.07.30 |
AIoT (0) | 2024.07.30 |
객체 지향 프로그래밍 (OOP) (0) | 2024.07.17 |