-
[30일코딩] Unit TEST개발입문/JAVA 2017. 5. 16. 00:31
개발자가 구현을 하면 여러 사람의 테스트를 거쳐서 디버깅을 한다.
주로 기획은 요구사항인 메인기능을 테스트하고, 세부 Test Case 는 QA 가 진행한다.
개발직군은 다른 직군에 테스트를 맡기기 전에
최소한 테스트를 진행할 수 있을 정도의 퀄리티로 구현을 해야한다.
그리고 테스트 피드백 - 디버깅을 원활하게 해야 프로젝트 완성도가 올라간다.
기획 요구사항/화면 기획개발 구현 Test-Driven-Development기획 요구사항 반영여부 확인QA TestCase 단위 Report 작성기획 최종 확인, 프로젝트 종결 선언개발에서 테스트를 해놓지 않으면... 기획이 몇번씩 지적해서 서로 표정이 굳거나
QA 가 도저히 테스트 못해먹겠다고 테스트 거부하는 경우가 생긴다.
(이런 불편한 상황이 계속되면 프로젝트 오픈이 밀리거나 심지어는 중단되는 경우도 있다.)
서론이 엄청 길었는데, 그만큼 테스트는 중요하다!!!!!
유닛 테스트
유닛테스트는 각 유닛에 대해 의도한 대로 잘 동작하는지 확인한다.
*유닛은 독립적인 기능을 담당하는 코드코드를 구현하면서 테스트코드도 같이 구현해야 한다.
코드를 통해 테스트 코드를 작성해주는 많은 어플리케이션들이 있다고 한다. (;;;)
Unit Test 는 모든 유닛에 대한 Bottom-up 테스트이다.
이 테스트를 진행해 놓으면 나중에 디버깅하기도 쉽고,
기획, QA 직군이 Integrated Test 할 때에도 기본적인 기능은 잘 동작할 확률이 높다.
그룹 테스트
Align TEST 라고도 한다.
한 가지 목적을 달성할 수 있는 여러 유닛을 그룹핑해서 테스트한다.
하나를 고치니 사이드이펙트로 다른게 고장나는 경우를 방지하기 위해서 작성한다.
이걸 잘 해놓으면 효율적으로 디버깅 + 리팩토링을 진행할 수 있다.
예상할 수 있는 에러 vs. 갑툭튀 에러
에러는 try-catch 로 의도된 대로 처리될 수 있다면 괜찮다.
하지만 예상하지 못한 갑툭튀 에러는 버그로 이어진다.
만약 확인하고 싶은 에러가 있다면 코드에 에러가 나올 수 있따고 선언하고 에러로그를 출력할 수 있도록 한다.
throw Exception: get Alerted to fix it
30일코딩 예제 코드이번 예제 코드는 Discussion 에 뭔가 욕이 한가득이다...기존 예제들과 다르게 Test Case (TC) 를 작성해야 하는데-TC 가 조건이 매우 까다롭다.왜 있는지 모르겠다는 조건들도 있다고는 하는데,나는 거기에 불만을 가질 짬이 안되므로... 열심히 방어로직 코드를 넣었다.요렇게 테스트케이스를 출력만 되게 넣은 사람도 있었지만.#include<iostream>using namespace std;int main(){cout<<"5"<<endl;cout<<"3 1"<<endl; cout<<"-1 0 9"<<endl;cout<<"6 3"<<endl; cout<<"9 5 0 3 -5 5"<<endl;cout<<"4 3"<<endl; cout<<"-8 5 0 -5"<<endl;cout<<"7 2"<<endl; cout<<"0 7 -3 2 3 7 6"<<endl;cout<<"5 4"<<endl; cout<<"6 0 -1 1 5"<<endl;}난 TC 랜덤 신봉자여서 랜덤 코드까지 직접 작성했다.조건이 까다롭다보니 유사코드 pseudo-code 는 필수다.public static void main(String[] args) {result YNYNY 나오도록num 이 겹치지 않도록 TC 추출 / 출력}static int randNum(int a, int b) {Random Number a Max, b Min}static ArrayList<Integer> randLate(int num) {each minutes students come late (-1000 ~ 1000)0, 1, -1 included}static String checkOutput(int num, int k, ArrayList<Integer> A) {YNYNY confirm}static void printOut(int num, int k, ArrayList<Integer> A) {print Out num, k, Anum studentk minimumStudent that class can startA array of late minutes}A Array 가 -1000 ~ 1000 사이에서 마구 튀어나온다. (희열!)
테스트를 위한 메소드를 작성하고- 테스트 케이스를 잘 출력한다. :ㅇ아마 실제 구현코드도 테스트 코드와 흡사했을 것이다.
구현코드를 보고 테스트코드를 작성할 수 있는 기회도 있어봤으면 좋겠다.
무튼 30일코딩 테스트 완료!
'개발입문 > JAVA' 카테고리의 다른 글
Java String Formatting (0) 2017.09.10 Java API 분석__LinkedList (0) 2017.07.25 [30일코딩] Running Time and Complexity (0) 2017.05.14 [30일코딩] Heaps and Binary Search (0) 2017.05.09 [30일코딩] Generic 제너릭 (0) 2017.05.09