Unit Testing Plan for POS System Test Plan Test Design Specification Test Cases Specification Project Team Team 3 Date 2017-11-06 Team Information 장혁준허윤아현인수전상우
Table of Contents 1 Introduction 4 1.1 Objectives 4 1.2 Background 4 1.3 Scope 4 1.4 Project plan 4 1.5 Configuration management plan 4 1.6 References 4 2 Test items 4 3 Features to be tested 4 4 Features not to be tested 4 5 Approach 4 6 Item pass/fail criteria 4 7 Unit test design specification 4 7.1 Test design specification identifier 4 7.2 Features to be tested 4 7.3 Approach refinements 4 7.4 Test identification 4 7.5 Feature pass/fail criteria 4 8 Unit test case specification 4 8.1 Test case specification identifier 4 8.2 Test items 4 8.3 Input specifications 4 8.4 Output specifications 4 9 Testing tasks 5 10 Environmental needs 5 11 Unit Test deliverables 5 12 Schedules 5
1 Introduction 1.1 Objectives 본문서는건국대학교소프트웨어공학개론 2017 학년도 2 학기수업팀 3 에서 POS System 의 Unit Test 를수행하기위해작성한 Unit Testing Plan 이다. Test Case 는 SRA(Software Requirement Analysis) 에의거하여작성된다. 1.2 Background POS System 이란판매와관련한데이터를일괄적으로관리하고, 고객정보를수집하여부가가치를부가가치를향상시키는시스템이다. Unit Test 란시스템의최소단위모듈들이각각의도된대로작동이되는지검증하는것이다. 1.3 Scope 본문서는 POS 시스템의 Unit Test 를수행하기위한모든것을포함한다. POS 기능을수행하기위한자원과절차, 그외필요로하는환경및도구등을정의한다. Unit Test 에서실시되는모든테스트는최소단위의모듈들을대상으로하며, 구현된모듈이요구사항을만족하는지를테스트한다. 1.4 Project plan POS 시스템의 SRA, SDA 등명세서 (Specification) 을기반으로 Unit test 를실시한다. Unit test 는 Ctest tool 을사용하고, Cygwin 혹은 Linux 환경에서이루어진다. Program Source code 는일정주기마다팀원들과 build 및 Unit Test 를수행한다. 1.5 Configuration management plan POS 시스템은팀원들과일정주기마다 Build 및 Unit test 를통해수정, 관리된다. 변경및수정사항은지속적으로통합되고 Test 된다. 1.6 References -2017.POS.SRA- 2.1-2017.POS.SDS- 2.1 2 Test items SASD 절차를통해디자인한 POS 시스템을기반으로 test item 을구성하고, 일정수준이상구현, test 한다. input 과 output 을처리하는함수가 SRS 의요구사항에맞춰정상적으로작동되는지를 test 한다. 1) DFD Overall
2) Structured Charts 3) Transition Diagram
3 Features to be tested (1) Process in SRA : 각프로세스가가지고있는요구사항을만족하는지를 Test 한다. (2) Modules in SDS : 각모듈이가지고있는데이터인터페이스를 Test 한다 <Table 1> Unit Test 는함수가원활하게작동하는지를검사하는테스트이므로 Control Process 에한해 Unit Test 를진행한다. ID Name Description 2.1.1 Controller DB data, Power data, Touch data, Barcode data, Clock data 를받아들여명령을내린다. 2.2.1 Power On Power On/Off. Power =1 일때 POS 가시작된다. 2.4.1 Sales Process 판매상황에서결제완료후디스플레이를출력한다. 예시 ) total : 20000 cash : 30000 change : 10000
환불상황에서환불완료후디스플레이를출력한다. 예시 ) date : YYMMDDhhmm refund total : 20000 2.4.1 Sales Process 판매버튼을눌렀을때판매상황으로넘어간다. 2.4.2 Repayment Process 환불버튼을눌렀을때환불상황으로넘어간다. 2.4.3 Stock-Check Process 재고확인버튼을눌렀을때재고확인상황으로넘어간다. 2.4.4 Quantity Up/Down Process 바코드를찍은물품에수량을추가하거나줄인다. 2.6.1 DB Update 판매상황에서결제완료후재고서버의상품개수를업데이트한다. (product.txt) 환불상황에서환불완료후. 재고서버의상품개수를업데이트한다.(product.txt) 판매상황에서재고서버의판매정보를추가한다.(management.txt) 2.5.1 Print Receipt 판매상황에서결제완료후판매영수증을출력한다. (sale_yyyymmddhhmm.txt) 환불상황에서환불완료후환불영수증을출력한다. (refund_yyyymmddhhmm.txt) 재고확인상황에서재고확인을출력한다. (stock_yyyymmdd.txt) 2.3.1 Show Customer Display 판매상황에서결제완료후디스플레이를출력한다. 예시 ) total : 20000 cash : 30000 change : 10000 List : 상품리스트 환불상황에서환불완료후디스플레이를출력한다. 예시 ) date : YYMMDDhhmm
refund total : 20000 List : 환불상품리스트... 4 Features not to be tested (1) Process in SRA : 단순데이터전달프로세스및 interface 의작동은 test 대상에서제외한다. (2) Modules in SDS : 테스트하지않을 Process 리스트 (<Table 2> 참조 ) (3) 테스트할수있을정도까지구현하지못한부분 ( 일부 ) <Table 2> ID Name Description 1.1 Touch Interface 화면에서각버튼들을입력받는다. 1.2 Barcode Scanner Interface 바코드 input 을입력받는다. 1.3 Decide On/off 파워버튼 input 을전달한다. 1.4 Determine Touch information 버튼입력들을전달한다 1.5 Determine Barcode information 바코드의입력들을전달한다 5 Approach POS 시스템의 Program Source Code 및 Unit Test 를위한 Test Code 는 Cygwin(gcc) 환경에서 이루어지며 Program Source Code 의변경및수정사항은지속적으로통합되고테스트된다 6 Item pass/fail criteria Functional Test pass/fail criteria : 각모듈은요구사항을모두만족하여야한다. 7 Unit test design specification 7.1 Test design specification identifier POS_[Category]_[number].unit 7.2 Features to be tested <Table 1> 참조 7.3 Approach refinements
각모듈이요구사항을만족하는지확인하기위해, 요구사항에정의된내용에기반하여 test case 를작성한다. 그이외의사항에대해서는 test case 를작성하지않는다. 7.4 Test identification <Table 3> Identifier Feature(Process DFD) Valid/Invalid(value) POS_Controller_Customer_01 2.3.1 Customer Display 고객판매화면 POS_Controller_Customer_02 2.3.1 Customer Display 고객환불화면 POS_CashierDisplay_01 2.7.1 Cashier Display 캐셔판매화면 productnow productlist[] typedef struct productnow } productnow; POS_CashierDisplay_02 2.7.1 Cashier Display 캐셔환불화면 productr list[],int barcode ( 구조체배열, 바코드정보 ) typedef struct productr int saleprice; } productr;
POS_Controller_Sales_01 2.4.1 Sale Process menu==1 POS_Controller_Repayment_0 2.4.2 Repayment Process menu==2 1 POS_Controller_Stock_01 2.4.3 Stock Check Process menu==3 POS_Controller_Quantity_01 2.4.4 Quantity Up/Down Process NOTIMPLEMENTED POS_Controller_DB_01 2.6.1 DB Update int s[7] ( 물품별판매 / 환불 갯수들을담고있음 ) POS_Power_01 2.2.1 Power On 전원켜기 power==1 POS_Customer_01 2.3.1 Show Customer Display 고객화면출력 ( 판매 ) productnow productlist[] typedef struct productnow } productnow; POS_Customer_02 2.3.1 Show Customer Display 고객화면출력 ( 환불 ) productr list[],int barcode ( 구조체배열, 바코드정보 ) typedef struct productr
int saleprice; } productr; POS_Sales_01 2.4.1 Sales Process 상품입력 char barcodedata[5] barcodedata == 001/010/011/100/101/110/1 11 POS_Sales_02 2.4.1 Sales Process 상품결제 Int cash 입력한금액이부족할경우 Printf( Not Enough Money ) POS_Repayment_01 2.5.1 Repayment Process 환불영수증입력 int barcode POS_Repayment_02 2.5.1 Repayment Process 바코드유효성확인 int checkbracodevalid(barcode) ==1 POS_PrintReceipt_01 2.5.3.1 Print Receipt_SalesReceipt 판매영수증출력 productnow productlist[] typedef struct productnow
} productnow; POS_PrintReceipt_02 2.5.3.2 Print Receipt_RepaymentRecei pt 환불영수증출력 productr productlist[] typedef struct productr int saleprice; } productr; POS_PrintReceipt_03 2.5.3.3 Print Receipt_SettlementRecei pt 정산영수증출력 stocke productlist[] typedef struct StockE char barcode[5]; } stocke; POS_DB_Update_01 2.6.1.1 DB Update_Sales 환불정보업데이트 int s[7] ( 물품별환불 갯수들을담고있음 ) POS_DB_Update_02 2.6.1.2 DB Update_Repayment 판매정보업데이트 int s[7] ( 물품별판매 갯수들을담고있음 )
7.5 Feature pass/fail criteria 각모듈은 SRA 에정의되어있는요구사항 ( 입력 / 출력및동작 ) 을모두만족해야한다. Test 는 normal 값에대해서만진행한다. 테스트의내용은 SRA 의 process description 항목을참조한다. 8 Unit test case specification 8.1 Test case specification identifier <Table 4> Identifier Input Specification Output Specification POS_CashierDisplay_01 판매캐셔화면 productnow productlist[] typedef struct productnow total : 20000 cash : 30000 change : 10000 } productnow; POS_CashierDisplay_02 환불캐셔화면 productr list[],int barcode ( 구조체배열, 바코드정보 ) typedef struct productr int saleprice; date : YYMMDDhhmm refund total : 20000
} productr; POS_Controller_Sales_01 menu==1 salesprocess(); 실행 POS_Controller_Repayment_ 01 menu==2 repaymentprocess(); 실행 POS_Controller_Stock_01 menu==3 checkstockprocess(); 실행 POS_Controller_Quantity_01 NOTIMPLEMENTED POS_Power_01 전원켜기 power==1 POS_Customer_01 고객화면출력 ( 판매 ) productnow productlist[] typedef struct productnow total : 20000 cash : 30000 change : 10000 List : 상품리스트 } productnow; POS_Customer_02 고객화면출력 ( 환불 ) productr list[],int barcode date : YYMMDDhhmm refund total : 20000
( 구조체배열, 바코드정보 ) typedef struct productr int saleprice; } productr; POS_Sales_01 상품입력화면 char barcodedata[5] barcodedata == 001/010/011/100/101/110/1 11 input : barcodedata =001 Valid : printf("enter 1 to proceed Payment. enter 2 to continue scanning \n"); Invalid : printf( Invalid Barcode \n ) POS_Repayment_01 바코드입력 int barcode POS_Repayment_02 바코드유효성확인 int barcode Valid : checkbracodevalid(barcode) ==1 Invalid : printf("wrong Barcode \n"); POS_PrintReceipt_01 판매영수증출력 productnow productlist[] typedef struct productnow receipt number : 188373 Date : YYMMDD Sale Product chip 1000 2 2000 icecream 1500 1 1500
fruit 3000 1 3000 } productnow; total : 6500 POS_PrintReceipt_02 환불영수증출력 productr productlist[] typedef struct productr int saleprice; } productr; receipt number : 86896 Date : YYMMDD Sale Product water 500 2 1000 ramen 800 1 800 refund total : 1800 POS_PrintReceipt_03 재고확인영수증출력 stocke productlist[] typedef struct StockE char barcode[5]; Date : YYMMDD chip 1000 98 icecream 1500 99 fruit 3000 99 water 500 98 ramen 800 99 drink 1200 100 coffee 2000 100 } stocke; POS_DB update_01_sales DB 업데이트 DB 재고업데이트
int s[7] ( 물품별판매 갯수들을담고있음 ) s[7] = 1,1,1,0,0,0,0} chip 1000 001 99 icecream 1500 010 99 fruit 3000 011 99 water 500 100 100 ramen 800 101 100 drink 1200 110 100 coffee 2000 111 100 POS_DB update_01_repayment DB 업데이트 int s[7] ( 물품별환불갯수들을담고있음 ) s[7] = 1,1,1,0,0,0,0} DB 재고업데이트 chip 1000 001 99 icecream 1500 010 99 fruit 3000 011 99 water 500 100 100 ramen 800 101 100 drink 1200 110 100 coffee 2000 111 100 8.2 Test items <Table 3> 참조 8.3 Input specifications <Table 4> 참조 8.4 Output specifications <Table 4> 참조 9 Testing tasks <Table 5 Testing tasks & Schedule > Task Predecessor task Special Skills Effort Finish date Unit Test Plan 작성 SRA 작성 SDS 작성 UTP 작성 POS system 에대한이해 2017-11-04 Test Design Specification Task1 POS system 에대한이해 2017-11-05
Test Case Specification Task2 POS system 에대한이해 2017-11-05 Test Execution Task3 POS system 에대한이해 2017-11-06 Test Code 작성 Unit Test Tool 활용 Test result report Task4 POS system 에대한이해 2017-11-06 10 Environmental needs Point of Sales System 의 Unit Test 를위한환경적요구사항은다음과같다. (1) Platform - GCC compiler/linker (2) CTIP(Continuous Testing & Integrated Platform) - Linux 11 Unit Test deliverables 12 Schedules <Table 5 Testing tasks & Schedule> 참조