소프트웨어 테스트
JeongSeulho
2023년 05월 09일
준비중...
클립보드로 복사
📌verification approaches
📖Testing
- 테스트
- 장점 : 버그를 찾으면 확실하게 버그라고 단정지을 수 있다(no false positive)
- 단점 : 완전하지 않음, 못 찾는 경우 존재
- 버그를 존재하는 것을 증명할 수 있지만 버그가 없다고 증명할 수 없다
📖Static verification
- 가능한 모든 인풋, 경우의 수를 고려하는 것
- 장점 : 완전함(모든 경우의 수 고려)
- 단점 : 버그를 찾게되어도 그것이 실제 고쳐할 버그인지 단정지을 수 없다(false positive 존재)
📖Inspections
- 그룹이 모여 코드를 한줄씩 모두 읽어보면서 버그를 찾는 것
- 장점 : 철저함, 체계적
- 단점 : 주관적
📖Formal proofs of correctness
- 수학적으로 프로그램의 동작을 증명하는 것
- 장점 : 강한 보장성
- 단점 : 비용이 많이 들고 전문성이 필요
📌일반적 테스트 방법
- test input을 넣어서 출력되는 output이 기대하는 output과 같은지 확인
📌Test Enviroment
- Driver : 테스트를 실행하는 프로그램
- Stub : 함수A를 테스트하고 싶은데, 해당 함수안에 다른 함수 B가 존재한다면, B의 역할을 하는 임의의 보조 함수를 지칭(B가 아직 구현안됬거나, 테스트를 아직 통과하지 못했을 때)
📌Test Case design
📖Test Case design 고려해야 할 것
- 결함을 발견하는 것을 목적으로 한다
- 어떤 측면에있어서 빠짐없이 디자인 해야 한다
- 비용과 시간을 최소화 해야한다
- 정상적인 input뿐만 아닌 비정상적인 input에대한 테스트도 해야한다(프로그램이 그냥 DOWN되는게 아닌, 비정상적인 input입니다 오류 메세지 출력 등이 필요)
- 버그가 발견된 부분은 다른 input에대한 버그도 존재할 확률이 더 높다
📌Test vs Debugging
- Test : 결함을 찾는 과정
- Debugging : 찾은 결함의 위치를 찾고 고쳐가는 과정
📌Test Approaches
- 테스트의 주체(개발자, 고객) 또는 테스트 범위 등에 따라 나뉨
- 인수 테스트 : 고객이 하는 시스템 테스트
- 회귀 테스트 : V1에서 V2로 업그레이드시 V1를 통과한 케이스가 V2에서도 통과하는지 확인
- alpha test : 개발자들 또는 회사 내부에서의 테스트(너그러움)
- beta test : 개발자들 외부에서의 테스트(엄격함)