WordCount 擴充套件功能
合作者 :201631062222 ,201631062232
程式碼地址::https://gitee.com/biubiubiuLYQ/ceshi_secend
作業連結:https://edu.cnblogs.com/campus/xnsy/2018softwaretest2398/homework/2187
一.擴充套件功能
本次主要是對上次功能的補充和完善,此次新增了以下幾點功能
wc.exe -s //遞迴處理目錄下符合條件的檔案
wc.exe -a file.c //返回更復雜的資料(程式碼行 / 空行 / 註釋行)
wc.exe -e stopList.txt // 停用詞表,統計檔案單詞總數時,不統計該表中的單詞
二.程式碼互審
審查了一下對方的程式碼,最開始發現他是用python寫的,由於不是很懂,就簡單的看了一下python的語法,才開始審查他的程式碼。發現主要問題就是程式碼寫得不是很規範(主要原因還是不是很瞭解python,可能有些潛在的問題沒能被發現),經過商討後,還是決定了最後的程式碼格式規範,這裡參考了其他的正規規範格式。中間有些小問題,比如說無法開啟result.txt等檔案,但最後還是解決了這個問題。
三.靜態程式碼檢查
1.使用的靜態程式碼工具:Pyflakes
2.簡單介紹:
封裝了PyFlakes,Pep8,NedBatchelder’s McCabe script三個工具。Flake8通過啟動單獨的flake8指令碼執行所有工具,它在一個Per檔案中顯示告警,合併到輸出中。也增加一些特徵:
1)包含這行檔案將被忽略:#flake8: noqa
2)結尾包含#noqa註釋的行將不釋出告警
3)GIT和Mercurial鉤子
4)McCabe複雜度檢查器
5)可以通過flake8.extension入口點擴充套件
3.檢查結果
提示從tkinter這個庫中匯入了所有的檔案,無法檢測到未定義的名稱(*)【此為正常提示,*是匯入該庫所有檔案】,但是'tkinter.filedialog.askdirectory沒有使用,然後其他都是正常提示。提示某個變數沒有定義或是從tkinter中匯入。
四.單元測試
1.設計測試用例方法:等價類劃分
2.測試思路
由於是要測試輸入是否符合要求,所以可以從輸入端入手,即將輸入端分為各個等價類。具體的設計如下表所示:
輸入 | 有效等價類 | 無效等價類 |
遍歷資料夾引數 | 1. -s | 5.不是-s的其他引數 |
停用引數 | 2. -e | 6.非-e的其他引數 |
檔案匹配格式 | 3. 正規匹配 | 7.非常規檔名匹配 |
檔名 | 4. 檔名 | 8.非檔名 |
3.覆蓋情況
語句覆蓋,判定覆蓋,條件覆蓋
五.效能測試和優化
1.選擇測試的工具:cProfile
1.1 cProfile的使用:python -m cProfile -o 輸出引數 測試指令碼 輸入引數1 引數2......,如python -m cProfile -o result.txt test.py 1 2 3
2.測試和優化
2.1測試資料集思路
選用所有單元測試中的等價類和無效等價類進行進行測試,然後將各模組進行聯合測試。
2.2 使用該工具的特點:
使用cProfile分析的結果可以輸出到指定的檔案中,但是檔案內容是以二進位制的方式儲存的,用文字編輯器開啟時亂碼。所以,Python提供了一個pstats模組,用來分析cProfile輸出的檔案內容。減少庫的引用,定位到某個特定模組。
六.參考文獻
python靜態程式碼測試:https://blog.csdn.net/fan_hai_ping/article/details/41733817
python效能優化cProfile:https://blog.csdn.net/asukasmallriver/article/details/74356771
七.個人總結
通過這次作業的實踐,學會了如何藉助測試工具進行程式碼審查,在平時程式設計練習時,難免會遇到自己找不出錯誤的情況。所以,學會藉助測試工具也是很重要的,因為這樣會節省自己很多的時間。在這次作業也明瞭一個淺顯的道理,那就是兩個人的力量始終要比一個人強。兩個人一起程式設計,看待問題就會更加的透徹,全面。同時,在程式設計時,兩個人也難免會產生分歧,在商討誰的程式碼更好時,這種討論對兩個人的思維能力都是有提升的。