버그 테스트 방법 2가지 1. 동등분할(equivalence partitioning)같은 결과를 내는 값의 범위를 구분해서 각 대표 값으로 테스트 하는 방법 각 결과를 내는 입력 값이나 상황의 조합을 만들어 모든 경우를 테스트 해보는 것이 좋음2. 경계값 분석(boundary value analysis)에러는 동등분할 범위의 경계에서 주로 많이 발생한다는 특징을 이용, 경계의 근처에 있는 값을 이용해 테스트하는 방법 ex) 숫자의 입력 값인 경우 0이나 그 주변 값 또는 정수의 최대값, 최소값 등으로 테스트
태스트 코드에 의한 DI테스트를 위한 별도의 DI 설정컨테이너 없는 DI 테스트DI를 테스트에 이용하는 세 가지 방법 중 어떤 것을 선택해야 할까?항상 스프링 컨테이너 없이 테스트할 수 있는 방법을 가장 우선적으로 고려하자. 이 방법이 테스트 수행 속도가 가장 빠르고 테스트 자체가 간결하다.여러 오브젝트와 복잡한 의존관계를 갖고 있는 오브젝트를 테스트해야 할 경우라면, DI 방식의 테스트를 이용하는 것이 편리하다.예외적인 의존관계를 강제로 구성해야 하는 경우, @DirtiesContext 애노테이션을 이용한 수동 DI를 활용하자.그냥 동등한 운영계 DB에 접근하면서도 운영계에 영향 없이 테스트 할 수 있는 방법은 없나?
JUnit 테스트 수행 방식테스트 클래스에서 @Test가 붙은 public이고 void형이며 파라미터가 없는 테스트 메소드를 모두 찾는다.테스트 클래스의 오브젝트를 하나 만든다.@Before가 붙은 메소드가 있으면 실행한다.@Test가 붙은 메소드를 하나 호출하고 테스트 결과를 저장해둔다.@After가 붙은 메소드가 있으면 실행한다.나머지 테스트 메소드에 대해 2~5번을 반복한다.모든 테스트의 결과를 종합해서 돌려준다.* 각 테스트 메소드를 실행할 때마다 테스트 클래스의 오브젝트를 새로 만든다.
테스트 주도 개발(TDD, Test Driven Development)만들고자 하는 기능의 내용을 담고 있으면서 만들어진 코드를 검증도 해줄 수 있도록 테스트 코드를 먼저 만들고, 테스트를 성공하게 해주는 코드를 작성하는 방식의 개발 방법이다.테스트를 코드보다 먼저 작성한다고 해서 테스트 우선 개발(Test First Development)이라고도 한다.TDD의 기본 원칙인 "실패한 테스트를 성공시키기 위한 목적이 아닌 코드는 만들지 않는다"를 따랐다면 모든 코드는 빠짐없이 테스트로 검증된 것이라고 볼 수 있다.개발을 하다보면 자연스럽게 머릿속으로 테스트하게 된다. 그러나 머릿속에서 진행되는 테스트는 제약이 심하고, 오류가 많고, 반복하기가 힘들다. 이를 실제 코드로 끄집어 놓으면 TDD가 된다.
개발자가 테스트를 직접 만들 때 자주 하는 실수가 하나 있다. 바로 성공하는 테스트만 골라서 만드는 것이다. 개발자는 머릿속으로 이 코드가 잘 돌아가는 케이스를 상상하면서 코드를 만드는 경우가 일반적이다. 그래서 테스트를 작성할 때도 문제가 될 만한 상황이나, 입력 값 등은 교묘히도 잘 피해서 코드를 만드는 습성이 있다. 이건 테스트 코드를 통한 자동 테스트뿐 아니라, UI를 통한 수동 테스트를 할 때도 빈번하게 발생하는 문제다. 개발자들은 "내 PC에서는 잘 되는데"라는 변명을 곧잘 하는데, 이는 사실 개발자 PC에서 테스트할 때는 예외적인 상황은 모두 피하고 정상적인 케이스만 테스트해봤다는 뜻이다.스프링의 창시자인 로드 존슨은 "항상 네거티브 테스트를 먼저 만들라"는 조언을 했다. 개발자는 빨리 테스..
"스프링이 개발자에게 제공하는 가장 중요한 가치는 무엇이냐고 질문한다면 나는 주저하지 않고 객체지향과 테스트라고 대답할 것이다.""애플리케이션은 계속 변하고 복잡해져 간다. 그 변화에 대응하는 첫 번째 전략이 확장과 변화를 고려한 객체지향적 설계와 그것을 효과적으로 담아낼 수 있는 IoC/DI 같은 기술이라면, 두 번째 전략은 만들어진 코드를 확신할 수 있게 해주고, 변화에 유연하게 대처할 수 있는 자신감을 주는 테스트 기술이다."
메소드를 이용한 의존관계 주입생성자(constructor) 메소드를 이용한 주입수정자(setter) 메소드를 이용한 주입: 외부로부터 제공받은 오브젝트 레퍼런스를 저장해뒀다가 내부의 메소드에서 사용하게 하는 DI 방식에서 활용하기에 적당하다.일반 메소드를 이용한 주입: 여러 개의 파라미터를 가질 수 있다. 전통적으로 수정자 메소드를 가장 많이 사용해왔고, 특히 XML을 사용하는 경우 자바빈 규약을 따르는 수정자 메소드가 가장 사용하기 편리하다.
- Total
- Today
- Yesterday