소프트웨어 테스트의 7가지 원칙

2024. 8. 7. 00:10CS 공부, 기타

  • SW 테스트의 중요성

지속가능 개발

품질 보증

비용 절감

고객 만족

보안 강화

 

  • SW 테스트의 7가지 원칙
  1. 테스트는 결함의 존재를 증명하는 활동이다.
  2. 완벽한 테스트는 불가능
  3. 테스팅은 초기에 실시
  4. 결함은 집중
  5. 살충제 패러독스
  6. 테스팅은 정황 의존적
  7. 오류 부재의 궤변

 

  • 원칙 1 : 테스트는 결함의 존재를 증명하는 활동이다

테스트케이스를 수행했는데, 결함이 발견되지 않음

그렇다면 이 테스팅은 대상 시스템이 결함이 없다는 것을 증명한 것인가?

⇒ 테스트 케이스가 얼마나 정교하게 짜여있었는가에 따라 다르다!

 

  • 원칙 2 : 완벽한 테스트는 불가능

테스트 케이스를 엄청 촘촘하게 많이 만들었는데, 다 테스트할 시간이 없다.

⇒ 중요한 기능을 먼저 테스트하는 등 전략적인 접근이 필요

 

  • 원칙 3 : 테스팅은 초기에 실시

아직 구현 결과의 범위가 작은 초기에 테스트를 해야 한다.

구현 결과의 크기가 어느 정도 커지면 오류 찾기가 어려워 진다.

(호수에서 바늘을 찾는 격)

 

  • 원칙 4 : 결함은 집중

결함은 발생한 곳을 중심으로 뭉치는 경향이 있다.

작성한 사람, 코드 복잡도, 변경 이력 등 다양한 영향에 의함

 

  • 원칙 5 : 살충제 패러독스

사람은 동일한 테스트 케이스를 오래 사용하다보면 내성이 생긴다.

테스트 케이스의 구멍을 찾아 또다른 오류가 발생할 가능성이 커짐

 

  • 원칙 6 : 테스팅은 정황 의존적

테스팅 접근법은 소프트웨어의 종류와 목적에 따라 달라질 수 있다.

동일한 로그인 테스트라도 금융 시스템과 이메일 시스템은 다르게 테스트된다.

 

  • 원칙 7 : 오류 부재의 궤변

결함이 없다고 해서 서비스가 사용자의 요구를 반드시 만족시키지는 않는다.

사용자의 요구사항을 체크하는 Validation 활동도 필요하다.

(바퀴가 세모인 자동차를 만들어달라고 해서 그대로 만들면 아무도 쓰지 않을 것)

 

  • 생성형 AI 와 SW 테스팅
  1. 테스트 케이스의 유효성을 높이기 위해 생성형 AI를 통해 실제 사용자를 모방하게 하여 개발팀이 예상치 못한 테스트 케이스를 만들어 수행
  2. 우선순위의 근거 데이터를 준비하고 데이터를 토대로 AI가 판단하여 기능별 우선순위를 정하게 함
  3. 원칙 3는 순서 문제라서 AI 도움 받을 일은 없다.
  4. GPT 등에 커밋 로그를 제공하여 자주 변경되는 (위험한) 부분을 캐치
  5. 생성형 AI에게 테스트 케이스를 읽게 하고, 이의 변형을 요청
  6. 동일한 기능이라도 정황을 다르게 제공
  7. 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