여태껏 Jenkins를 이용해 빌드, 배포하는 방법에 대해 스터디했다.
이제는 다른 테스트 도구를 연동해 테스트 후에 빌드, 배포하도록 설정하려고 한다.
그 전에 테스트는 어떤 종류가 있는지, 자주 쓰는 도구는 무엇인지 알 필요가 있어 정리한다.
테스트 방법은 크게 두 가지로 나뉜다.
- 정적 분석: 소스 코드를 실행하지 않고 분석
- 동적 분석: 소스 코드를 실행하며 분석
정적 분석 도구에는 대표적으로 pmd, SonarQube, cppcheck, checkstyle 등이 있다.
(이후에 Jenkins랑 연동은 pmd와 SonarQube를 이용해보겠다.)
소스 코드를 실행시키지 않고 코딩 표준 준수 여부, 코딩 스타일 적정 여부 등을 판단한다.
정적 분석 도구 종류 ▼
PMD
- 미사용 변수, 비어있는 코드 블락, 불필요한 오브젝트 생성과 같은 Defect을 유발할 수 있는 코드를 검사
- 주로 Java에서 사용하지만, Javascript, PLSQL, XML 등의 언어도 지원
checkstyle
- 코드가 코딩 룰을 잘 따르고 있는지 분석
- 디폴트 코딩룰: Google's Style, Unix Style
- 조직만의 코딩 룰을 정의 가능
SonarQube
- 중복코드, 복잡도, 코딩 설계 등을 분석하는 소스 분석 통합 플랫폼
- 다른 정적 분석 도구에 비해 다양한 기능을 지원
동적 분석 도구는 Avalanche, Valgrind 등이 있다.
소스 코드를 실행시키며 코드에 존재하는 메모리 누수, 스레드 결함 등을 분석한다.
테스트는 화이트 박스 테스트, 블랙 박스 테스트로도 나눌 수 있다.
화이트 박스 테스트 | 블랙 박스 테스트 | |
테스트 수행 관점 | 개발자 관점 | 사용자 관점 |
테스트 대상 | 소프트웨어 내부 소스 코드를 테스트 | 소프트웨어 동작을 테스트 (내부 구조나 작동 원리 모름) |
테스트 종류 | 제어 흐름 테스트 데이터 흐름 테스트 분기 테스트 경로 테스트 |
동등 분할 기법 경계값 분석 기법 오류 예측 기법 원인 결과 그래프 기법 요구사항 추적 매트릭스 상태 전이 테스팅 의사결정 테이블 테스팅 |
도구 종류 | Parasoft Jtest, JUnit, HTMLUnit, CppUnit, ... | 기능적 테스트: QTP, Selenium 비기능적 테스트: LoadRunner, Jmeter |
화이트 박스, 블랙 박스 테스트에 대해서 더 자세히 알고 싶다면 다음 링크를 참조하면 좋을 것 같다.
영문서이긴 하나 깔끔하게 정리되어 있어서 읽기 쉽다
화이트 / 블랙 박스 테스트는 정적 테스트나 동적 테스트 어느 한 군데 포함된 개념이 아니다.
기준에 따라 정적 화이트박스 / 정적 블랙박스 / 동적 화이트박스 / 동적 블랙박스로 나눌 수 있다.
- 정적 화이트박스 테스트: 프로그램 실행 x 상태에서 sw 설계, 아키텍처, 코드 등에서 상세히 버그 찾기
- 동적 화이트박스 테스트: 자동으로 프로그램이 실행되는 스크립트 작성해 소스 코드 보며 작동 검사
- 정적 블랙박스 테스트: 소스 코드 파악 x. 실행 x. 명세서 테스트
- 동적 블랙박스 테스트: 실제 수행하며 테스트
두 테스트가 동적 테스트에 포함된다 식으로 설명된 곳이 많은 이유는
보통 '사과의 색깔'을 말하면 일반적으로 빨간색으로 의미하듯이,
'블랙박스 테스트'라고 하면 일반적으로 동적 블랙박스 테스트를 의미한 것이기 때문이다.
(자세한 설명: stackoverflow.com/questions/5812322/white-box-black-box-testing-static-or-dynamic)
이후 Jenkins와 연동 테스트를 할 도구에 대해서만 간단히 설명하겠다.
(화이트 박스 테스트의 JUnit, 블랙 박스 테스트의 JMeter를 이용할 예정.)
JUnit
- Java를 위한 단위 테스트 프레임워크
- JUnit4부터는 테스트 지원하는 어노테이션 제공
JMeter
- 정적 및 동적 리소스, 동적 웹 어플리케이션 등에서 성능 테스트
- 서버, 서버의 그룹, 네트워크, 개체에 과부하하도록 시뮬레이션 해 강도 테스트
참고
정적 / 동적 분석 도구: 길벗 2020 시나공 정보처리기사 필기
화이트 / 블랙 박스 테스트: dev-mystory.tistory.com/91
화이트 / 블랙 박스 테스트: 수제비 카페 (cafe.naver.com/soojebi)
화이트 / 블랙 박스 테스트 도구: www.guru99.com/black-box-testing.html
JUnit: junit.org/
JMeter: jmeter.apache.org/
'Develop > etc' 카테고리의 다른 글
[Jenkins] JUnit과 연동 (0) | 2021.04.06 |
---|---|
[Jenkins] Sonarqube와 연동 (2) | 2021.04.05 |
[Jenkins] Jenkins, SVN, Ant 빌드 및 배포 (4) | 2021.03.02 |
[SVN] visual SVN 설치 및 실행 (0) | 2021.03.02 |
[Jenkins] SVN과 연동하기 (0) | 2021.02.25 |