1. 程式人生 > >軟件測試第二周作業 wordcount

軟件測試第二周作業 wordcount

表達式 txt head bin analysis htm nbsp div imp

軟件測試第二周作業 wordcount

Github地址

https://github.com/mxz96102/word_count

PSP2.1表格

PSP2.1PSP 階段預估耗時 (分鐘)實際耗時 (分鐘)
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