林曉芳 201421123092 陳惠 201421123096
Coding位址:點我檢視哦
題目描述:
上一周大家為四則運算程式設計了2-3個新功能,本次在隔了一周之後,我們循序漸進地進階。本次目标:
- 把計算子產品提取出來,單獨建立一個類。
- 針對提取出來的計算類的接口函數做單元測試。
需求分析:
- 測試加法是否能正确工作;
- 測試加減乘除功能。
- 測試計算類對于各種參數的支援。
設計測試架構, 模拟測試資料:
計算子產品的測試用例及運作結果:
@Test
public void testAdd() {
assertEquals(String.valueOf("3"),Calculator.add("5/3","4/3"));
assertEquals(String.valueOf("9"), Calculator.add("4","5"));
}
@Test
public void testSub() {
assertEquals(String.valueOf("1/3"),Calculator.sub("5/3","4/3"));
assertEquals(String.valueOf("-1"),Calculator.sub("4","5"));
}
@Test
public void testMul() {
assertEquals(String.valueOf("20/9"),Calculator.mul("5/3","4/3"));
assertEquals(String.valueOf("20"),Calculator.mul("4","5"));
}
@Test
public void testDiv() throws Exception {
assertEquals(String.valueOf("5/4"),Calculator.div("5/3","4/3"));
assertEquals(String.valueOf("4/5"),Calculator.div("4","5"));
}

計算最大公約數測試:
@Test
public void testGCD() {
assertEquals(Calculator.GCD(15,10),5);
}
參數錯誤提示:
public static String div(String a, String b) throws Exception// 除法
{
a = a + "/1";
b = b + "/1";
String[] m = a.split("/");
String[] n = b.split("/");
int numerator1 = new Integer(m[0]);
int denominator1 = new Integer(m[1]);
int numerator2 = new Integer(n[0]);
int denominator2 = new Integer(n[1]);
if (denominator1 == 0 || numerator2 == 0 || denominator2 == 0) {
throw new Exception("分母不能為0!");
}
int p = numerator1 * denominator2;
int q = denominator1 * numerator2;
int t = GCD(p, q);
return Reduction(p / t, q / t);
}
@Test
public void testDiv() throws Exception {
assertEquals(String.valueOf("5/4"),Calculator.div("5/3","4/3"));
assertEquals(String.valueOf("4/5"),Calculator.div("4","5"));
try{
Calculator.div("4","0");
}
catch(Exception ex){
assertEquals("分母不能為0!",ex.getMessage());
fail("分母不能為0!");
}
}
覆寫率:
非擺拍照片:
小結與感受:
通過本次測試,能夠有效發現程式計算子產品的問題,并予以改進。由于我們兩個都是第一次嘗試測試,對于測試很陌生,不知從何下手,通過老師關于測試的教程和其他同學的幫助,對計算部分的代碼進行了測試。測試過程中,我們開始慶幸當初的代碼程式設計相對而言比較規範,使得隔了一周之後再看之前的代碼,我們還能夠看懂并加以修改。雖然這次還能夠看懂自己寫的代碼,但是通過這次測試還是體會到了擁有良好的設計、編碼規範和必要的注釋的重要性。首先,良好的設計是基礎,隻有擁有良好的設計,才能更有效地找出編碼過程中出現的問題并及時予以改正;其次,編碼規範是核心,一大段雜亂無章的代碼不僅會給自己和隊友帶來不必要的麻煩,而且在出現錯誤的時候容易迷失方向,浪費時間。最後,必要的注釋可以讓我們更快地了解整個程式。
“漢堡包”:
先來一片面包:隊友是一個有想法的人,但還會聽取我的看法,互相讨論最終執行。
在把肉放上:有好的想法,但由于程式設計過程比較困難,會選擇比較不簡潔的解決方式。
再來一片面包: 兩個人之間要能夠互相學習,互相讨論,發揮出1+1>2的能力。
PSP:
PSP2.1 | Personal Software Process Stages | Time (%) Senior Student | Time (%) |
Planning | 計劃 | 1h | 0.5h |
· Estimate | 估計這個任務需要多少時間 | 8.5h | 8h |
· Analysis | 需求分析 (包括學習新技術) | ||
· Coding Standard | 代碼規範 | ||
· Design | 具體設計 | 1.5h | |
· Coding | 具體編碼 | 3h | 2.5h |
· Test | 測試(自我測試,修改代碼,送出修改) | ||
Reporting | 報告 |