본문 바로가기

Group Study (22-23)/TDD8

[TDD] 8. 테스트 범위와 종류 작성자 : 김연지 실습 환경 Java 11 Spring Boot 2.7.7 목차 및 내용 정리 테스트 범위 통합 테스트 예 테스트 범위 하나의 기능이 올바르게 작동하려면 컨트롤러, 서비스, 모델과 같은 자바 코드와 프레임워크 설정에 문제가 없어야 할 뿐 아니라 브라우저에서 실행되는 자바스크립트 코드, HTML과 CSS 등이 정상 동작해야 한다. 또한, DB의 테이블도 올바르게 생성되어 있어야 한다. 개발자가 코드를 조금씩 수정할 때마다 브라우저부터 DB까지의 전 범위를 테스트해야 하는 것은 아니며 출시 전에 DB와 연동할 때 사용한 쿼리만 확인해서도 안 된다. 테스트의 범위는 테스트의 목적과 수행하는 사람에 따라 달라진다. 테스트 범위에 따른 종류는 세 가지로 나눠볼 수 있다. 단위 테스트 통합 테스트 .. 2023. 3. 5.
[TDD] 7. 테스트가 가능한 설계 작성자 : 김정호 실습 환경 - Java 17 - Spring Boot 3.0.1 - wsl 2 테스트가 어려운 코드 개발을 진행하다 보면 테스트할 수 없는 상황이 발생하게 된다. 어떤 경우가 있는지 살펴보도록 하자. 하드 코딩된 경로 존재 의존 객체를 직접 생성 정적 메서드 사용 실행 시점에 따라 달라지는 결과 역할이 섞여있는 코드 그 외 메서드 중간에 소켓 통신 코드가 포함 콘솔에서 입력받거나 결과를 콘솔에 출력 테스트 대상이 사용하는 의존 대상 클래스나 메서드가 final -- 이 경우 대역으로 대체 어려울 수 있음 테스트 대상의 소스를 소유하고 있지 않아 수정 어려움 하드 코딩 & 의존 객체 직접 생성 예시 public class PaySync { // 의존 객체를 직접 생성하고 있다. priva.. 2023. 3. 3.
[TDD] 6. 대역 작성자: 정창우 대역의 필요성 외부 요인 테스트를 작성하다보면 외부 요인이 필요한 시점이 있다. 테스트에 관여하는 주요 외부 요인은 다음과 같다. 파일 시스템을 이용 DB로부터 데이터를 조회하거나 데이터를 추가 외부 HTTP 서버와 통신 외부 요인 문제점 테스트 대상이 이런 외부 요인에 의존하면 테스트를 작성하고 실행하기 어려워진다. 테스트 코드에서 사용하는 외부 API 서버가 일시적으로 장애가 나면 테스트를 원활하게 수행하기 어렵다. DB의 경우도 상황에 맞게 데이터를 구성하는 것이 항상 가능한 것은 아니다. 외부 요인의 문제점을 정리하면 다음과 같다. 테스트 작성을 어렵게 만든다. 테스트의 결과를 예측할 수 없다. 테스트 대상에서 의존하는 요인 때문에 테스트가 어려울 때는 대역을 써서 테스트를 진행할.. 2023. 2. 24.
[TDD] 5. 테스트 코드의 구성 작성자 : 한규범 기능에서의 상황 주어진 상황에 따라 기능 실행 결과는 달라진다. 이는 테스트 코드 구조에도 영향을 주는데 이에 관한 내용을 이어서 살표보자. 상황 찾기 노련한 개발자는 어떤 상황이 실행 결과에 영향을 줄 수 있는지 찾기 위해 노력한다. 결과에 영향을 줄 수 있는 상황을 고려하지 않고 작성한 코드는 버그를 포함할 가능성이 크기 때문이다. 다양한 예외 상황을 찾아내고 이를 코드에 반영해야 기능이 비정상적으로 동작하는 것을 막을 수 있다. 결과에 영향을 줄 수 있는 모든 상황을 완벽하게 찾기 힘들 수도 있지만 가능한 많은 예외 상황을 찾기 위해 노력해야 한다. 테스트 코드의 구성 요소 : 상황, 실행, 결과 확인 어떤 상황이 주어지고, 그 상황에서 기능을 실행하고, 실행한 결과를 확인하는 세.. 2023. 2. 2.
[TDD] 4. JUnit 5 기초 작성자 : 장채은 실습 환경 - Java 11 - Spring Boot 2.7.7 🍰 JUnit 5 모듈 구성 JUint 플랫폼 테스팅 프레임 워크를 구동하기 위한 런처와 테스트 엔진을 위한 API wprhd JUnit Jupiter JUnit 5를 위한 테스트 API와 실행 엔진 구성 JUnit Vintage JUnit 3, 4로 작성된 테스트를 5 플랫폼에서 실행하기 위한 모듈 제공 Jupiter로 테스트를 작성하고 실행하려면 build.gradle 파일 내 dependencies에 의존을 추가해주어야 한다. 다음은 TDD 스터디 프로젝트의 build.gradle file이다. Jupiter 관련 의존성이 추가된 것을 확인할 수 있다. plugins { id 'java' id 'org.springfr.. 2023. 1. 27.
[TDD] 3. TDD ∙ 기능 명세 ∙ 설계 작성자 : 박소정 실습 환경 - Java 11 - Spring Boot 2.7.7 🥨 기능 명세 사용자에게 제공할 기능을 구현하기 위해서는 기능 명세를 시작으로 설계를 진행해야 한다. 기능은 크게 입력과 결과로 나누어 생각할 수 있다. 입력: 기능을 실행하는데 필요한 값 결과: return 값, exception, 변경(DB에 데이터 추가해 시스템의 상태 변경 등) 기능 명세를 통해 입력과 결과를 도출하면, 해당 내용을 통해 기능의 이름, 파라미터, 리턴 타입 등을 손쉽게 결정할 수 있다. 이렇게 도출한 기능 명세를 코드에 반영하고, 이는 곧 기능에 대한 설계 과정과 연결된다. 🥨 설계 과정을 지원하는 TDD TDD는 테스트 코드 작성 - 코드 구현 - 리팩토링의 과정을 반복한다. 이때, 테스트 코드 작.. 2023. 1. 21.