1일 1개념정리 24.08.09.금 ~
큰 결정에 큰 동기가 따르지 않을 때도 있다. 하지만 큰 결심이 따라야 이뤄낼 수 있다.
무조건 무조건 1일 1개의 개념 정리하기 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#78. 회귀 테스트
테스트를 할 때 자주 언급되는 것이 기능테스트, 알파/베타 테스트, 성능테스트 등등이 있는데, 그 중 회귀 테스트라는 것이 있다. 약간 직관적이지 않는 것 같아서 정리해보려 한다.
회귀 테스트 Regression Test
회귀 테스트는 코드 변경이 이루어진 후, 변경으로 인해 다른 기존코드가 영향을 받는가 테스트하는 과정이다. 즉, 새로운 기능이 추가됐을 때에도 기존 코드는 여전히 안정적으로 동작하는지 보는 것이다. 사실 SW가 매~~~번 뭔가 추가되는 과정을 거치는데 간혹 원래 되던 것이 안되는 경험을 한 적 있을 것이다. 그런 것을 방지하기 위해 발생 가능한 문제를 조기발견하여 품질을 유지하려 한다.
회귀 테스트 vs 확인 테스트
회귀 테스트는 "확인 테스트"와 구별된다. 비슷하기도 해서 구분을 잘 해야한다.
- 확인 테스트 (Confirmation Test) : 버그가 잘 수정됐는지 확인하는 테스트. 즉, 원래 버그났던 부분만 다시 테스트함. 버그가 이제 안보이면 결함 해결된 것으로 봄.
- 회귀 테스트 : 이쪽 코드를 수정하면서 혹시 저쪽에도 영향 줬는지 테스트한다. 즉, 좀 더 넓은 범위에서 시스템에 영향 주는지 관련된 모듈에 대해 테스트 한다. 그래서 되게 반복적으로 수행된다. 왜냐면 A, B, C는 기존코드(이미 만든 코드)라고 하고 D부터 E, F... 계속 개발한다고 할 때 D가 A에 영향 줄 수도 있고, E가 B랑 C에 영향줄 수도 있고 .... 그래서 변경 일어날 때마다 반복해서 실행되므로 자동화시켜놓고 활용하는편이다.
확인 테스트 | 회귀 테스트 | |
목적 | 수정된 결함이 제대로 해결되었는지 확인 | 수정이 다른 기능에 부정적인 영향을 주는지 확인 |
대상 | 수정된 결함과 관련된 특정 기능 | 수정된 코드와 관련된 모든 기능 또는 모듈 |
범위 | 좁은 범위의 테스트 | 넓은 범위의 테스트 |
실행 빈도 | 결함 수정 후 (일회성) 테스트 | 코드 변경 시마다 반복적으로 수행 |
자동화 여부 | 주로 수동 테스트 | 주로 자동화 테스트로 수행 가능 |
회귀 테스트의 방법
회귀 테스트는 수동 자동 다 가능하지만 보통 자동화 회귀 테스트를 많이 쓴다. 왜냐면 위에 말한 것 처럼 계속 반복해서 테스트 해야 하니깐 ....
- 자동화 회귀 테스트 : 변경된 기능에 대한 테스트 스크립트를 작성하거나 기존 테스트 스크립트를 업데이트하여 자동으로 실행. → Selenium, JUnit, TestNG, Cypress 같은 도구를 사용
- 수동 회귀 테스트 : 테스트 스크립트가 자동화되기 어려울 때 수동 테스트. 새로운 기능이 복잡하고 자동화 테스트에 적합하지 않다 판단할 때 수동 회귀 테스트를 진행한다.
회귀 테스트 과정
- 테스트 케이스 식별 : 코드 변경으로 영향 받는 모듈을 식별한다.
- 테스트 케이스 선택 : 기존 테스트 스위트에서 적합한 테스트 케이스를 선택하고, 필요에 따라 새로운 테스트 케이스를 추가한다.
- 테스트 수행 : 수동/자동으로 테스트 케이스를 실행한다.
- 결과 분석 : 테스트 결과를 분석하면서 오류, 결함 발견하고 수정이 되어야 하는 부분 파악한다.
- 결함 수정 , 다시 테스트 : 발견된 결함을 수정한 후 다시 테스트하여 문제가 해결되었는지 확인한다.
아니 그럼 대체 어느 범위까지 다시 테스트해요 ?
1~10 기능이 있을 때, 그럼 매번 1테스트, 1과2 테스트, 1과2와3 테스트 .... 이렇게 누적하며 테스트 하는가 ? 이러면 N개의 기능에 대해서 1+2+3+ ... + N번 테스트를 해야한다.... 따라서 회귀 테스트를 할 땐 범위를 잘 설정해야한다.
▶ 보통 이 범위는, 우선순위를 설정하여 팀 내부적으로 결정한다. 내가 댓글에 따봉 누르는 기능을 추가했는데, 저~~기 뭐 앱 내 광고 설정하는 이런 것까지 "다시" 테스트 하진 않겠지 !!
'1일 1개념정리 (24년 8월~) > 테스팅 , SW공학개론' 카테고리의 다른 글
1일1개 (80) - 개발하다가 갑자기 포커치기 (0) | 2024.11.13 |
---|---|
1일1개 (75) - QA는 테스터인가 ? (0) | 2024.11.08 |
1일1개 (56) - 아나바다 패턴 (아껴쓰고 나눠쓰고 .....) (1) | 2024.10.10 |
1일1개 (55) - Insomnia (8) | 2024.10.09 |
1일1개 (53) - 테스팅 자동화 (0) | 2024.10.07 |