뷰티풀 테스팅 11장 정리 - 변화 중심의 테스팅?

쥐도리·2023년 3월 1일
0
post-thumbnail

11장 변화 중심의 테스팅

수정된 코드 위주의 테스팅



내용 정리

소개

폭포수 → 애자일 변화에 따라 테스팅도 변화가 필요해

  • 최신 프로젝트 개발론 (폭포수 → 애자일)
    요즘은 폭포수가 아닌 애자일 개발론을 사용하여, 점증적으로 코드를 확장해가며 개발을 진행.
    → 빈번한 코드 업데이트
    ⇒ 이에 따라 코드 업데이트에 따라 검증 테스팅도 증가
  • 변화된 코드 중심의 테스트 필요성
    코드가 변경될 때마다 모든 TC를 실행하기엔 업데이트가 빈번함.
    따라서 변경된 코드와 관련된 TC만 실행하여 효율적이고 빠르게 테스트 하는 것이 필요하다.

변화 중심의 테스팅 프레임 워크 준비 방법

문서 & 변화 중심의 테스팅 프레임 워크 준비 방법

  • 변화 중심 테스트 프로세스 계획 방법
    1. 각 기능별로 연속된 키워드 작성 (F-001, F-002, ...)
    2. 유즈 케이스에서 TC 도출 시, 사용되는 키워드 태그 작성
    3. 이외 모든 TC는 사용되는 모든 기능 관련된 키워드 태깅

복잡한 코드를 위한 변화 중심의 테스팅

코드와 일대일 대응하여 TC 관리하는 방법의 문제점

  • 오래된 시스템일수록 기존의 코드와 TC 기반으로 프로젝트 관리
  • 코드와 TC 관계가 명확하지 않음
    코드 디렉터리 구조와 동일하게 대응하여 TC 디렉토리 관리한다면?
    ⇒ 비기능적인 TC 위치 선정 모호함 & 점차적으로 코드 기능과 TC 관계 불일치

변화 중심의 테스팅의 단계

변화 중심 테스팅 위한 3단계 절차

1. 호출/피호출 관계 이해 & 소스코드와 TC 관계 이해

TC 설계 전에, 호출 그래프 툴 이용하여 함수 사이 호출 피호출 관계를 파악해야한다.
왼쪽 같은 관계에서 오른쪽 같이 f3이 변경되었을 경우 자식 함수 관련해서는 테스트를 진행해야 한다.
보통 2~3차 자식까지만 테스트하며 f3 변경 시, f3, f5, f8, f9 까지 테스트를 진행한다.

2. 실행 중 호출 피호출 관계의 호출 그래프 작성

정적 분석 툴 이용하여 그래프 작성하며 신뢰할 수 있는 그래프를 얻으려면 동적 바이너리 분석 & 인스트루먼트 도구를 사용해야 한다. (DBA 도구로는 밸그린드가 있다.)

3. 변화의 영향을 이해하는 것

콜그린트 이용해 정적 분석을 실행하면 함수를 3가지로 분류하여 나타낸다.
1. 소스 함수 : 많이 호출되는 실행 파일 중 하나로 다른 함수에 대해 의존성 X
2. 동기 함수 : 실행 중 다른 어느 함수에서도 호출되지 않지만 다른 함수를 호출한다.
3. 파이프 함수 : 다른 함수를 호출하고 다른 함수도 이 함수를 호출한다.

코드 커버리지와 갭 분석 이해하기

코드 커버리지를 사용하면 TC와 연관된 소스 파일의 관계 ・ 갭을 확실하게 제공해주어 변화 중심의 테스트를 설계하기 쉽다.

지금까지 무엇을 배웠는가

변화 위주의 테스팅 정리

  1. 밸그린드 도구를 이용해 소스 코드의 호출/피호출 관계 확인
  2. 콜그린드 도구를 이용해 소스 파일에 TC 연관 관계 확인
  3. KCachegrind 도구 이용해 코드에서 소스, 동기, 파이프 함수 식별
  4. 코드와 코드의 갭을 확인하기 위해 누적 코드 커버리지 결과 확인
    소스 코드 관리 시스템으로부터 변경된 코드의 자세한 내용 뿐만 아니라 이와 관련하여 테스트의 필요성이 높은 부분을 식별하여 변호 ㅏ중심의 테스트를 위한 테스트 스위트 생성 가능하다


정리

기억에 남는 문장

  • 애자일 개발론에 맞춰 변화에 미치는 테스트 케이스를 선별하여 수행하는 접근법이 전체 테스트를 다시 실행하는 것보다 매우 효율적이다.
  • 코드 커버리지는 QA 팀의 무기로 이용할 수 있는 좋은 도구 중 하나이다.
  • 변화 중심의 테스트 접근법은 코드 커버리지 갭과 코드 베이스의 잦은 변화에 대한 좋은 통찰을 제공한다.

배운 것

  • 개발론이 폭포수에서 애자일로 변화한 것처럼 테스팅도 점증적으로 할 수 있도록 변화해야 한다.
  • 코드와 TC가 대응되어 동일한 디렉토리를 가진다고 해서 TC가 관리되는 것이 아니다. 태깅을 적극적으로 활용하자

참고도서

Adam Goucher, ⌜뷰티풀 테스팅⌟, 지앤선, 2011
profile
해보고, 정리하고, 돌아보자

0개의 댓글