메��� ���드를 만들기 ������ ���당 ���드��� �����를 ������������ ��������� ���드를 먼��� 만드는 기법.
���떻게 보면 ���답법과�� 같다. ���로그래머는 ���단 ��������� 만들려고 ���는 부����� 대��� ���문��� 내리고, TestCase를 먼��� 만들��� �����로��� �����를 ���������다. ���렇게 UnitTest Code를 먼��� 만듬���로��� UnitTest FrameWork��� ���������러���게 내가 본래 만들고��� ���는 기능과 ������ 만들������고 ���는 ���드가 ���는������ ���������는������ 대��� ���느����� 디��깅될 ���보를 ��록���놓는다. ���로��� ���������러는 ��������� 문법���러 검���뿐만 �����라 ���고리��� ��������� 대��� 디��깅기능��� ���느����� ������������게 된다.
������������드는 ���로그래머가 ���려고 ���는���, ��� �����를 담���낸다. ���는 ��� ���로그램��� ���떠��� ���나리���로 돌�����것���가를 먼��� ���각���보는 기���를 ������로 ���공������다. Test가 가능��� ���드는 run ��� ���������때 ���떤 결과를 낼���를 ��������� ��� ���는 ���드���다. ��� 경��� ���당 모����� ������되������때가 ������������ 그 목���를 ��명���게 ���는 ��������� ������다.
������������드 ������가 ��������� �����먼������������ ���기�� ���다. ��������� ���드를 만들면��� ��������� ���려는 ���과 문������������ 구������ ��������다.
������������드가 ���벽��� ��� ���다. ������만, ������������드가 모든 ���러를 ������내��� 못���다는 ������로 많��� ��그들��� ������ ��� ���는 ������������드를 ������������ ������ ������는 ���다. ExtremeProgramming������는 UnitTest -> Coding -> Refactoring ��� 맞물려 돌�����다. TestFirstProgramming 과 Refactoring ���로 단������ 디��������� �����되������다.
������는 TestDrivenDevelopment 라고 ���다. 단������ Test 를 먼��� ���������는게 ���닌, Test ����� 개발��� 것���다. TestDrivenDevelopment 는 ��� 2��� Refactoring 과�� 같다고 ���각. --1002
������ ��������� :
CodeUnitTestFirst,
TestFirstDesign,
TestDrivenProgramming
TestFirstProgramming
ExtremeProgrammingUnitTestingApproach
Test Code Refactoring ¶
���로그램��� 길������다보면 Test Code 또��� 같��� 길������게 된다. ���느����� Test Code 가 길������ 경������는 ��� 기능��� 대��� ������������드를 ���������려고 ��� 때��다 ���복��� ������난다. ��� 경������는 Test Code 를 Refactoring ������ ���는데, ��� 경��� ���������면 ��������� ���드��� �����를 ������려뜨릴 ��� ���다. ��������� ���드 ������가 ���나��� 다���먼���가 되므로, ���당 ������������드��� �����는 ��명���게 남��록 Refactoring ��� ������ ���다.
Test - Code Cycle ¶
���������를 ���������는 때��� Code 를 ���������는 때��� ���기가 길���������록 ���들다. ���기가 ���무 길������다고 ���각되면 다������ 명������라.
Test Code Approach ¶
Test Driven ��� 대��� ���근 방법���는 End-To-End (BlackBoxTesting) ������ ���근 방법과 WhiteBoxTesting ��� ���근방법��� ������ ��� ���겠다.
��������� 경���는 ��������� '부��결과 - 부��결과' 를 ������나가면��� ������목���로 ���근���는 방법���다. ���는 ���떻게 보면 Functional Approach ��� ���������다. (Context Diagram ��� 기������로 ����� Divide & Conquer ��� 나가면��� 가��� ������ 모��들��� ���������내고, 그 모��들��� ���나���나��� ���복���나가는 방법)
��������� 경���는 ���당 ���드��� 구���를 ������������나가는 방법���로, ���당 ���드��� ��������� �������� ��������� 맞게 ������되���가는���를 ���������나가는 방법���다. ���는 MockObjects 를 ������������ ���근��� ��� ���다. ���, ���당 ������������려는 모����� MockObject로 구������고, ������되기 ������는 ������들��� ���대로 ������되���는���를 (MockObjects ��� mockobject.py ��� ���는 ExpectationCounter ����� ������) ������������나 ���당 데��������� ���가 & ������관련 ������들��� ���대로 ������되���는���를 ���������는 방법 (ExpectationList, Set, Map ����� ������) �����로��� ���근��� 나�� ��� ���다.
Test - Code ���기가 길다고 ���각되���나, ��������� 가능��� 경������ 대��� ������디���가 떠���르��� ������ 경���, ���근 방법��� 다르게 가���보는 것�� ���나��� 방법��� 될 ��� ���겠다.
���나리������ ������ ¶
Test Code 를 ������������ ���������만, ���런 경������ ������다. PairProgramming ��� ���는 ��� ������������게
'��������는 Socket Class 를 만들 ���례���. ���������볼까'
'��������는 Socket Class 를 만들 ���례���. ���������볼까'
���������가 먼��� ���드를 ���긴 ���는데, ���드가 ������럼 ��������� 되��� ������다. 문���가 뭘까 고민���다가 다���과 같��� ���근���봤다.
'����� ���������는 �����������가 ������. ����� 만들��� ���라���������고, ����� 만들 ���래���로 write 를 ���면 ���기 �����놓��� �������������� 내가 ���력��� 메������가 그대로 ������될������' ���, ������되������ 때��� 결과를 미리 그려보는 것���다.
'����� ���������는 �����������가 ������. ����� 만들��� ���라���������고, ����� 만들 ���래���로 write 를 ���면 ���기 �����놓��� �������������� 내가 ���력��� 메������가 그대로 ������될������' ���, ������되������ 때��� 결과를 미리 그려보는 것���다.
���까보다 ������ ���������게 ������되���고, 그 결과를 ������로 ���������고, 결과를 ������로 ���������뒤 '���료' ���다. TFP 라면 ���를 ���드로 ������������ ���동��� ��� 것���다. ���동���된 ���������는 ������로��� ������ 모�� �������������� ��������� 내가 ������는 기능들��� ��������� ���동������ 보���������다.
Random Generator ¶
Random ��� ���리가 ��������� ��� ���는 값���다. ���를 ������부��� ���������를 ���려고 ���는 것��� ������ ���근��� 되��� 못���다. ��� 경������는 Random Generator 를 MockObjects 로 구��������� ������ 가능��� Random 값��� 나�����록 ��� 뒤, ���������를 ��� ��� ���겠다.
Server - Client ¶
��� 경�������� MockObjects 를 ��������� ��� ���다. 기본������로 XP��������� ���������는 ���동���된 ���������, ��� ���������가 ���드��� 된 것���다. ������ 바로 ���근��� ���들다면 Mock Server / Mock Client 를 만들������ ��������� ��� ��� ���겠다. ���, ���당 ��������� 대��� ���미 내���되��� ���는 값��� 리���������는 �����나 ���라���������를 만드는 것���다. (���는 TestFirstProgramming ������보단 AcceptanceTest ��� ���는게 더 맞��� 듯 ���긴 ���다. XP ������는 UnitTest ��� AcceptanceTest 둘 다 ���������다.)