小組成員:王傑(201421123055)、王震(201421123054)
coding位址:https://git.coding.net/a506504661/danyuances.git
一、需求分析:
- 通過單元測試代碼,測試加法是否能正确工作;
- 通過單元測試代碼,測試加減乘除功能。
- 通過單元測試代碼,測試計算類對于各種參數的支援:
a. 輸入是有錯誤的,例如 “1 ++ 2” 。
b. 在數值範圍是 -1000 .. 1000 的時候,傳進去 “10000 + 32768”。
c. 或者是 “ 248 / 0” 怎麼辦?
d. 怎麼告訴函數的調用者 “你錯了”? 把傳回的字元串定義為 “-1” 來表示?
e. 那麼如果真的計算結果是 “-1” 又怎麼處理呢?
二、設計測試架構, 模拟測試資料:
(1) 請給出計算子產品的測試用例及運作結果
加法測試用例:"3/4"+"1/2" 運作結果:"5/4"
減法測試用例:"3/4"-"1/2" 運作結果:"1/2"
乘法測試用例:"3/4"*"1/2" 運作結果:"3/8"
除法測試用例:"3/4"/"1/2" 運作結果:"3/2"
約分測試用例:77/88 運作結果:"7/8"
負數計算測試用例:"-3/4"-"1/2" 運作結果:"5/4"
輸入錯誤運算符測試用例:"3/4"+-"1/2" 運作結果:"請輸入正确運算符!"
将輸入整數轉換為分數形式測試用例:"5" 運作結果:"5/1"
(2) 描述測試過程中遇到的問題以及解決的方案。
測試過程中對代碼又有所修改,過了一個禮拜沒看略顯生疏。因為要進行單元測試是以要将方法拿出來單獨做一個類,原本代碼就把算法單獨做了一個類,然後再界面類進行調用。雖然已經将算法單獨一個類,但是方法有點多,很亂。比如在算法實作方面,傳參包涵三個分數1、分數2及運算符号,通過傳入運算符号的類型自動選擇算法類型進行運算,将算法封裝了,還因為有一個将分數化簡的功能,将參數劃分為分子分母進行運算,都有關聯,是以沒辦法将加減乘除分開成單獨函數,不然整個核心算法全亂套了。是以進行單元檢測一個compute(String,String,String)方法包涵加減乘除,還檢測了f(),SetNumeratorAndDenominator()等方法。在進行測試過程中遇到了許多問題,首先是對 assertEquals(a,b)方法的使用不當,對傳入參數的疑惑,整型還是字元串型。通過查文檔了解其方法。然後傳參檢測compute()方法,直接運作錯誤,回去看代碼才發現傳入數值隻能是分數,即便是整數也要将其轉化為分數進行運算,之前編寫 算法是将分數和整數的算法統一轉化為分數計算,輸出時如果是整數再将其轉化回來,是以測試時輸入隻能輸入分數,然後額外将整數轉化為分數的方法單獨成一個方法寫成并進行測試。測試算法時由于隻能識别四種運算符——"+-*/"。是以保證邏輯完整,在輸入錯誤運算符是将進行報錯,輸出"請輸入正确運算符!"。在本次結對程式設計的過程中,多次出現問題,在與結伴夥伴商讨下都解決了,并做了不少的完善工作。
(3) 請展示上面描述的單元測試的每個環節。

三、 小結與感受:
由于之前程式設計時想法太奇葩,很多功能方法聯系太緊密了,是以要将其拆分成單獨類或函數難度有點大,都可以等于重新編輯了。還是一開始對子產品化,方法的獨立性的思想不足,導緻代碼太亂,不好進一步修改。
評價下夥伴:
先來一片面包:這次程式設計很積極,多次找我開始單元檢測,由于我有事拖了很久,很友愛的迎合了我的時間,主動找我協商問題,并在程式設計時給予大量建議。
在把肉放上:做事太急于求成,不沉穩。
再來一片面包:靜下心來好好做,不急。淡定。
四、 在隔了一周之後再看之前的代碼,是否更能體會到下面這些東西
1) 良好的設計
挺滿意之前的設計,都按照了功能去實作了。
2) 編碼規範
規範性比較差,由于還隻是兩個人合作,是以代碼的編碼規範還是兩個人能看懂就草草帶過,參數的命名也很随意,還要聯系上下文代碼才能了解。還是需要好好規範一下。
3) 必要的注釋
大緻的注釋都有,各個函數的用處開頭都有注釋,這點還是做的不錯的。
五、程式設計時圖檔
五、psp
PSP2.1 | Personal Software Process Stages | Time (%) Senior Student | Time (%) |
Planning | 計劃 | 1 | |
· Estimate | 估計這個任務需要多少時間 | 3 | 2 |
Development | 開發 | 4 | 5 |
· Analysis | 需求分析 (包括學習新技術) | ||
· Design Spec | 生成設計文檔 | ||
· Design Review | 設計複審 | ||
· Coding Standard | 代碼規範 | ||
· Design | 具體設計 | ||
· Coding | 具體編碼 | ||
· Code Review | 代碼複審 | ||
· Test | 測試(自我測試,修改代碼,送出修改) | ||
Reporting | 報告 | ||
· | 測試報告 | ||
計算工作量 | |||
并提出過程改進計劃 |