軟件測試第二周作業 wordcount
阿新 • • 發佈:2018-03-18
表達式 txt head bin analysis htm nbsp div imp
軟件測試第二周作業 wordcount
Github地址
https://github.com/mxz96102/word_count
PSP2.1表格
PSP2.1 | PSP 階段 | 預估耗時 (分鐘) | 實際耗時 (分鐘) |
---|---|---|---|
Planning | 計劃 | 25 | 30 |
· Estimate | · 估計這個任務需要多少時間 | 150 | 252 |
Development | 開發 | ||
· Analysis | · 需求分析 (包括學習新技術) | 20 | 20 |
· Design Spec | · 生成設計文檔 | 0 | 0 |
· Design Review | · 設計復審 (和同事審核設計文檔) | 0 | 0 |
· Coding Standard | · 代碼規範 (為目前的開發制定合適的規範) | 2 | 2 |
· Design | · 具體設計 | 15 | 30 |
· Coding | · 具體編碼 | 100 | 150 |
· Code Review | · 代碼復審 | 10 | 10 |
· Test | · 測試(自我測試,修改代碼,提交修改) | 3 | 60 |
Reporting | 報告 | 30 | 30 |
· Test Report | · 測試報告 | 5 | 5 |
· Size Measurement | · 計算工作量 | 5 | 5 |
· Postmortem & Process Improvement Plan | · 事後總結, 並提出過程改進計劃 | 20 | 20 |
合計 | 205 | 312 |
解題思路
分函數實現功能,並實現通過正則表達式來判斷詞,行,特殊行。
自制arg解析,方便命令行指令功能需求。
查閱資料:
https://stackoverflow.com/questions/25555717/intellij-idea-javafx-artifact-build-does-not-generate-exe
http://blog.csdn.net/soszou/article/details/7979060
程序設計實現過程
-
解析參數
設計ArgsParser類
-
針對錯誤設計函數
error
-
針對文件讀寫設計函數
getFileContents,fileToWord,findfiles
-
針對復雜功能設計函數
countWord,countLine,sumChar
-
整合功能以及輸出
countFile
代碼說明
/**
* 把文件內容按行讀進ArrayList
* @param filepath {String}
* @return contents {ArrayList<String>}
*/
private static ArrayList<String> getFileContents(String filepath)
/**
* 把文件中的詞讀進Array
* @param filePath {String}
* @return words {String[]}
* @throws IOException
*/
private static String[] fileToWord(String filePath)
/**
* 從文件建立禁用詞set
* @param banlistFile {String}
* @return banwordset {Set<String>}
*/
private static Set<String> buildBanWord(String banlistFile)
/**
* 計算詞數 (以 " " and ","分割)
* @param str {String}
* @param banWords {Set<String>}
* @return count {int}
*/
private static int countWord(String str, Set<String> banWords)
/**
* 將args實例化
* @param args {String[]}
*/
ArgsParser(String[] args)
/**
* 計算各種特殊行的數量
* @param contents {String[]}
* @return [codeline, nullline, docline] {int[]}
*/
private static int[] countline(String[] contents)
/**
* 從字符串數組中算總字符數
* @param contents {String[]}
* @return sum {int}
*/
private static int sumChar(String[] contents)
/**
* 確認文件是否存在,不存在則建立
* @param filepath {String}
*/
private static void confirmFile(String filepath)
/**
* 總的count以及out的函數
* @param filepath {String}
* @param ap {ArgsParser}
*/
private static void countFile(String filepath, ArgsParser ap, PrintWriter out)
/**
* 按名稱尋找文件清單的函數
* @param filepath {String}
* @return filepathlist {String}
*/
private static String[] findfiles(String filepath, boolean s)
測試設計過程
測試過程對於每一項功能單獨測試,再進行組合測試,確保覆蓋了所有可執行的代碼,對文件名輸入文件和文件夾也作出了測試,總共設計13個測試用例:
wc.exe
wc.exe -a
wc.exe -a ../test/test.c
wc.exe -l ../test/test.c -o out1.txt
wc.exe -w ../test/test.c -o out2.txt
wc.exe -a ../test/test.c -o out3.txt
wc.exe -c ../test/test.c -o out4.txt
wc.exe -l -w -a -c ../test/test.c -o out5.txt
wc.exe -a ../test/ -o out6.txt
wc.exe -a -s ../test/ -o out7.txt
wc.exe -a ../test/*.c -o out8.txt
wc.exe -a ../test/*.c -e ../stop.txt -o out9.txt
wc.exe -l -w -a -c -s ../test/ -e ../stop.txt -o out10.txt
測試結果見項目下bin
out10.txt out3.txt out5.txt out7.txt out9.txt out1.txt out2.txt out4.txt out6.txt out8.txt result.txt
參考文獻鏈接
http://www.cnblogs.com/ningjing-zhiyuan/p/8563562.html
軟件測試第二周作業 wordcount