코드 품질 관리(8)
-
BDD
1. BDD란 BDD(Behavior Driven Development)로 TDD를 근간으로 파생된 개발 방법입니다. TDD에서 한 발 더 나아가 테스트 케이스 자체가 요구 사항이 되도록 하는 개발 방법입니다. BDD를 통해 개발을 하게 된다면 테스트 메소드의 이름을 “이 클래스가 어떤 행위를 해야한다.”라는 식의 문장으로 작성하여 행위에 대한 테스트에 집중할 수 있습니다. 2. BDD의 기본 패턴 BDD는 시나리오를 기반으로 테스트 케이스를 작성하며 함수 단위 테스트를 권장하지 않습니다. 이 시나리오는 개발자가 아닌 사람이 봐도 이해할 수 있을 정도의 레벨을 권장합니다. 하나의 시나리오는 Given, When, Then 구조를 가지는 것으로 기본 패턴을 권장합니다. Feature: 테스트에 대상의 기능..
2020.04.02 -
Given-When-Then 패턴
1. Given-When-Then 패턴이란 Given-When-Then 패턴은 Test Code 스타일을 표현하는 방식을 말합니다. Given 테스트에서 구체화하고자 하는 행동을 시작하기 전에 테스트 상태를 설명하는 부분 When 구체화하고자 하는 그 행동 Then 어떤 특정한 행동 때문에 발생할거라고 예상되는 변화에 대한 설명 예시 기능 : 사용자 주식 트레이드 시나리오 : 트레이드가 마감되기 전에 사용자가 판매를 요청 "Given" 나는 MSFT 주식을 100가지고 있다. 그리고 나는 APPL 주식을 150가지고 있다. 그리고 시간은 트레이드가 종료되기 전이다. "When" 나는 MSFT 주식 20을 팔도록 요청했다. "Then" 나는 MSFT 주식 80 가지고 있어야 한다. 그리고 나는 APPL 주..
2020.04.01 -
TDD
TDD란 TDD의 개념 TDD(Test Driven Development)란 테스트를 먼저 만들고 테스트를 통과하기 위한 코드를 만드는 방법을 의미합니다. 일반적으로는 SW개발을 할 때 코딩을 전부 끝낸 후에 테스트를 진행합니다. 이 순서를 역전시킨 것이 TDD를 적용하는 것입니다. SW를 만드는 과정에서 우선 테스트를 작성합니다. 그리고 테스트를 통과하는 코드를 만드는 것을 반복하면서 제대로 동작하는지에 대한 피드백을 적극적으로 받는 것입니다. TDD가 필요한 이유 특정 모듈의 개발 기간이 길어질수록 목표 의식이 흐려집니다. 작업 분량이 늘어날수록 확인이 어려워집니다. 논리적인 오류를 찾기 어렵습니다. 코드의 사용 방법이나 변경 이력을 개발자의 기억력에 의존하게 되는 경우가 대부분입니다. 코드 수정 시..
2020.04.01 -
System Test
System Test란 System Test의 개념 System Test란 Integration Test가 완료된 이후에 완전한 시스템이 정상적으로 작동하는지를 체크하는 테스트입니다. 앞서 포스팅한 Unit Test나 Integration Test는 기능이 올바르게 수행되는지를 검증하는 것에 중점을 둔다면, System Test는 사용성, 신뢰성, 견고성, 성능, 보안성, 유지 보수성 등도 함께 테스트합니다. System Test의 유형 사용성 테스트 주로 사용자의 응용 프로그램의 사용 용이성, 컨트롤 처리의 유연성 및 시스템의 목표 달성 능력에 중점을 둡니다. 부하 테스트 개발된 소프트웨어가 실제 부하에서 작동하는지 확인하는 부분에 중점을 둡니다. 회귀 테스트 개발 과정 동안 변경된 사항이 새로운 버그..
2020.03.29 -
Integration Test
Integration Test란 Integration Test의 개념 Integration Test는 단위 테스트가 끝난 모듈을 통합하는 과정에서 발생할 수 있는 오류를 찾는 테스트입니다. 실제 업무에서는 단위 모듈이 개별적으로 존재하는 것이 아니고 여러 모듈이 유기적으로 관계를 맺고 있으므로 이러한 모듈들을 결합한 형태로 테스트를 수행해봐야 합니다. 모듈 사이의 인터페이스 오류는 없는지, 모듈이 올바르게 연계되어 동작하는지를 체크합니다. 즉 말하자면 각각의 모듈을 통합했을 때 모듈이 올바르게 연계되어 동작하는지 테스트하는 것입니다. Integration Test 기법 빅뱅 통합 전체 모듈을 모두 통합한 이후, 통합 테스트를 수행하는 방식입니다. 이 때, 오류가 발생한다면 오류가 발생한 모듈을 찾기가 쉽..
2020.03.29 -
Code Coverage
Black Box Test Black Box Test는 테스트시 객체 내부에 무엇이 들어 있는지 알 수 없거나 알지 않아도 된다는 것을 가정하여 테스트하는 방법입니다. 객체 내부가 어떻게 변하던 상관없이 입력을 주었을 때 원하는 결과값이 나오면 테스트는 통과하게 됩니다. White Box Test White Box Test는 객체 내부를 확인하고 검증하는 테스트입니다. 쓰이지 않은 변수는 없는지, 특정 범위만 받는 함수가 있는지 등등 이러한 부분들을 확인하는 과정입니다. Code Coverage는 White Box Test의 일부입니다. Code Coverage Code Coverage의 개념 Code Coverage란 소프트웨어 테스트를 논할 때 얼마나 테스트가 충분한가를 나타내는 지표 중 하나입니다...
2020.03.28