테스트(5)
-
[Unit testing(단위 테스트)-블라디미르 코리코프 저] 한 장 요약
단위 테스트 목표 프로젝트 지속성 확장성의 핵심 -> 장기적 개발 속도 유지 가능 기반 코드 리펙터링시 테스트도 리펙터링 품질 특정을 위한 지표(코드 커버리지, 분기 커버리지) 맹신 X 참고용으로만, 100퍼센트 안채워도 됨 단위 테스트란 무엇인가 고전파 : 난수성, 외부API, DB 시스템 등에만 Mock 사용 엔드 투 엔드 테스트 간 의존성 높음 동작 단위 테스트 용이 런던파 : 모든 의존성에 MOCK 사용 테스트 입자성이 좋음 과도한 명세 단위 테스트 구조 Given when then 구조 좋아용 테스트 내 if문 피하기 테스트 간 결합도 낮춰야 명명법 : [테스트 대상 메서드]_[시나리오]_[예상 결과] 너무 엄격하지 명명 지침 따르지 말것 : 중요한건 가독성 명명시 should be 사용 X 비..
2022.12.04 -
품질
- 높은 수준의 SW 품질을 달성하려면 광봄위한 활동이 필요함 테스트 - 품질을 보장하는 가장 일반적인 방법 - 결함을 줄이고 방지하는 것이 제한적인 이유 - 제품 주기에서 테스트가 너무 늦게 수행됨 - 코드가 개발 단기에 생성 X - 테스트는 좁은 차원만 다룸 - 신뢰성 외에 유지보수성, 확장성 등에 향상 X - 테스트는 코드 품질만 향상 시킴 - 관련 문서 등 확인 X #리뷰 - 테스트를 보완하고 개발 초기에 검토할 수 있어 오류를 조기에 발견 - 제품이 변경돠거나 예상치 못한 조건에서 작동하는 데 필요한 품질 확인 가능 -유지보수성, 재사용성 등과 같은 비기능 품질 요구 사항을 검증하는데 적합 품질 보증 - 계획된 품질 수준을 가지고 있음을 보장하는 활동 - 품질 보증 활동 - 개발사와 협력하여 S..
2022.06.04 -
테스트
테스트란 - 시험할 소프트웨어에 테스트 케이스를 주어 실행시킨 후 시스템의 동작이 예상한 대로 실행되는지 확인하는 것 - SW 개발은 인간 중심의 활동이며 지적 활동 - 오류가 발생하기 쉬움 - 개발 과정에서의 2번 실수 - 결함 발생, 테스트 오류 - 결함을 낮추는 방법 - 처음부터 결함 방지 : 인스펙션, 정적 분석 - 유입된 결함을 식별하고 제거 : 테스트, 디버깅 # 검증 : 제품을 올바르게 구축하고 있는가 # 확인 : 올바를 제품을 만들고 있는가 # 버그 : 문제, 결함 또는 난이도를 나타내는 데 일반적으로 사용되는 용어 # 오류 : 개발자가 잘못하여 설계나 코딩에 실수한 것 # 결함 : 시스템 고장을 일으키게 한 오류의 결과 코드 또는 문서에 오류가 있다고 선언된 것 # 고장 : 시스템이 원하..
2022.06.04 -
JUnit @Before(@After)사용으로 테스트 코드 중복 제거 및 스프링 테스트 적용
이전 포스팅에 작성했던 테스트 코드를 살펴보자 public class UserDaoTest { @Test public void addAndGet() throws SQLException { ApplicationContext context = new AnnotationConfigApplicationContext(DaoFactory.class); UserDao dao = context.getBean("userDao", UserDao.class); dao.deleteAll(); assertThat(dao.getCount(), is(0)); User user = new User(); user.setId("dkwip"); user.setName("test"); user.setPassword("1234"); dao...
2022.01.16 -
테스트 코드 작성, JUnit 사용과 테스트 주도 개발(TDD)
import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import springbook.user.domain.User; import java.sql.SQLException; public class UserDaoTest { public static void main(String[] args) throws ClassNotFoundException, SQLException { ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); ..
2022.01.15