第四周小組作業-wordcountpro
一.小組Github 地址
https://github.com/ChenSilence/wcPro
二.PSP表格
PSP2.1 | PSP階段 | 預估耗時(分鐘) | 實際耗時(分鐘) |
---|---|---|---|
Planning | 計劃 | 30 | 60 |
Estimate | 估計任務需要多少時間 | 30 | 60 |
Development | 開發 | 180 | 240 |
Analysis | 需求分析 | 20 | 30 |
Design Spec | 生成設計文檔 | 20 | 30 |
Design Review | 設計復審 | 20 | 30 |
Coding Standard | 代碼規範 | 30 | 10 |
Design | 具體設計 | 30 | 50 |
Coding | 具體編碼 | 30 | 40 |
Code Review | 代碼復審 | 30 | 40 |
Test | 測試 | 50 | 10 |
Reporting | 報告 | 90 | 240 |
Test Report | 測試報告 | 30 | 120 |
Size Measurement | 計算工作量 | 20 | 60 |
Postmortem | 總結 | 20 | 80 |
合計 | 360 | 560 |
三.模塊編寫
本次小組作業我所負責的模塊是輸入控制,基本上與上一次作業的輸入控制差不多,只是多了一個只能讀txt文本文件的判斷,因此我的就考慮了比較多的判斷分支情況。我所編寫的只有一個Begin類,功能即是分析main函數中的args數組參數,判斷參數正確之後,將參數傳給下一個模塊,代碼如下:
package javatest;import java.util.Scanner; import java.lang.String; public class Begin { public static void main(String[] args) { //解析args數組中的參數 int i=0; if (args.length == 0) { //提示未輸入參數 System.out.println("請輸入參數"); return; }else if (args.length==1){ String name =args[0]; //args數組中的最後一個參數為讀取文件 boolean doo=args[0].contains("."); if(doo){ String[] mode=name.split("\\."); //將文件名在"."處分裂開並存入mod數組中,判斷文件格式 if (mode[1].equals("txt")){ System.out.printf("everything is right!"); new CountNumber().count(name); }else{ System.out.printf("文件格式不對,請重新輸入!"); } }else { System.out.printf("請輸入正確文件名!"); } }else{ System.out.printf("請輸入正確文件名"); } } }
四.測試模塊設計
因為我的輸入控制模塊中只有一個main函數,不存在其他的方法,因此設計測試時,我改了一部分我的相應代碼,為了能在Junit框架中使用assertEquals函數判斷是否運行正確,改了之後的代碼如下:
package word; import java.util.Scanner; import java.lang.String; public class Begin { static String[] str = new String [8]; public static void main(String[] args) { //解析args數組中的參數 int i=0; if (args.length == 0) { //提示未輸入參數 //System.out.println("請輸入參數"); str[i]=("請輸入參數"); return; }else if (args.length==1){ String name =args[0]; //args數組中的最後一個參數為讀取文件 boolean doo=args[0].contains("."); if(doo){ String[] mode=name.split("\\."); //將文件名在"."處分裂開並存入mod數組中,判斷文件格式 if (mode[1].equals("txt")){ System.out.printf("everything is right!"); str[i]=("everything is right!"); //new CountNumber().count(name); }else{ //System.out.printf("文件格式不對,請重新輸入!"); str[i]=("文件格式不對,請重新輸入!"); } }else { //System.out.printf("請輸入正確文件名!"); str[i]=("請輸入正確文件名!"); } }else{ // System.out.printf("請輸入正確文件名"); str[i]=("請輸入正確文件名"); } } public static String[] getOutput() { return str; } }
根據黑盒白盒測試設計的測試表格如下:
Test Case ID 測試用例編號 | Test Item 測試項(即功能模塊或函數) | Test Case Title 測試用例標題 | Test Criticality重要級別 | Pre-condition 預置條件 | Input 輸入 | Procedure 操作步驟 | Output 預期結果 | Result 實際結果 |
Status 是否通過 |
Remark 備註(在此描述使用的測試方法) |
1 | 輸入控制 | testread1 | Medium | 無 | text.txt | 運行Junit函數 | everything is right! | everything is right! | OK | 黑盒測試 |
2 | 輸入控制 | testread2 | Medium | 無 | text.tt | 運行Junit函數 | 文件格式不對,請重新輸入! | 文件格式不對,請重新輸入! | OK | 白盒測試 |
3 | 輸入控制 | testread3 | Medium | 無 | texttxt | 運行Junit函數 | 請輸入正確文件名! | 請輸入正確文件名! | OK | 白盒測試 |
4 | 輸入控制 | testread4 | Medium | 無 | text.cpp | 運行Junit函數 | 文件格式不對,請重新輸入! | 文件格式不對,請重新輸入! | OK | 黑盒測試 |
5 | 輸入控制 | testread5 | Medium | 無 | test.txt text2.txt | 運行Junit函數 | 請輸入正確文件名 | 請輸入正確文件名 | OK | 白盒測試 |
6 | 輸入控制 | testread6 | Medium | 無 | 空輸入 | 運行Junit函數 | 請輸入參數 | 請輸入參數 | OK | 白盒測試 |
7 | 輸入控制 | testread7 | Medium | 無 | abc.c.txt | 運行Junit函數 | 文件格式不對,請重新輸入! | 文件格式不對,請重新輸入! | OK | 白盒測試 |
8 | 輸入控制 | testread8 | Medium | 無 | asdhaiudhiwahidwahiawuhdawiuhdw.txt | 運行Junit函數 | everything is right! | everything is right! | OK | 黑盒測試 |
9 | 輸入控制 | testread9 | Medium | 無 | text.doc | 運行Junit函數 | 文件格式不對,請重新輸入! | 文件格式不對,請重新輸入! | OK | 黑盒測試 |
10 | 輸入控制 | testread10 | Medium | 無 | txt.txt | 運行Junit函數 | everything is right! | everything is right! | OK | 白盒測試 |
11 | 輸入控制 | testread11 | Medium | 無 | ....c | 運行Junit函數 | 文件格式不對,請重新輸入! | 文件格式不對,請重新輸入! | OK | 白盒測試 |
12 | 輸入控制 | testread12 | Medium | 無 | 空格符 | 運行Junit函數 | 請輸入正確文件名! | 請輸入正確文件名! | OK | 黑盒測試 |
13 | 輸入控制 | testread13 | Medium | 無 | text.java | 運行Junit函數 | 文件格式不對,請重新輸入! | 文件格式不對,請重新輸入! | OK | 黑盒測試 |
14 | 輸入控制 | testread14 | Medium | 無 | text.sql | 運行Junit函數 | 文件格式不對,請重新輸入! | 文件格式不對,請重新輸入! | OK | 黑盒測試 |
15 | 輸入控制 | testread15 | Medium | 無 | text.word | 運行Junit函數 | 文件格式不對,請重新輸入! | 文件格式不對,請重新輸入! | OK | 黑盒測試 |
16 | 輸入控制 | testread16 | Medium | 無 | text.png | 運行Junit函數 | 文件格式不對,請重新輸入! | 文件格式不對,請重新輸入! | OK | 黑盒測試 |
17 | 輸入控制 | testread17 | Medium | 無 | text.py | 運行Junit函數 | 文件格式不對,請重新輸入! | 文件格式不對,請重新輸入! | OK | 黑盒測試 |
18 | 輸入控制 | testread18 | Medium | 無 | text.jpg | 運行Junit函數 | 文件格式不對,請重新輸入! | 文件格式不對,請重新輸入! | OK | 黑盒測試 |
19 | 輸入控制 | testread19 | Medium | 無 | text.gif | 運行Junit函數 | 文件格式不對,請重新輸入! | 文件格式不對,請重新輸入! | OK | 黑盒測試 |
20 | 輸入控制 | testread20 | Medium | 無 | text.exe | 運行Junit函數 | 文件格式不對,請重新輸入! | 文件格式不對,請重新輸入! | OK | 黑盒測試 |
相應的測試腳本運行結果如下:
五.擴展任務
1.交叉互評
我們小組所用開發規範參考了阿裏巴巴的JAVA風格指南手冊。我評審的是組員17001代碼,他的代碼符合縮進、斷行風格整潔,命名簡單明了,邏輯清晰易讀,較好地遵守了設計規範。這裏我就不在放出他的代碼了,可在文首的小組github中查找。
2.靜態測試
本次的靜態測試是采用eclipse的checkstyle來進行掃描的,對我的代碼掃描之後主要發現以下三個問題:
1)代碼縮進問題較多
2)註釋較少
3)“{”前差空格,“}”後差空格
在改進這些問題的過程中也慢慢提高了我對代碼規範的理解程度,以後也能提高我的代碼整潔度。參考鏈接:
https://blog.csdn.net/maritimesun/article/details/7668718
六.高級任務
在最後檢測我的代碼性能過程中,由於我的代碼本身就不是特別復雜,因此優化過程中也沒有較多地方可供優化,我減少了一部分多余的分支判斷,也提高了一定的運行速度。改後的代碼也可在小組github中查看。
七.小組貢獻分
在本次作業中,我的工作量較少,因此小組貢獻分評價為0.2。
第四周小組作業-wordcountpro