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
七.個人總結
通過這次作業的實踐,學會了如何借助測試工具進行代碼審查,在平時編程練習時,難免會遇到自己找不出錯誤的情況。所以,學會借助測試工具也是很重要的,因為這樣會節省自己很多的時間。在這次作業也明了一個淺顯的道理,那就是兩個人的力量始終要比一個人強。兩個人一起編程,看待問題就會更加的透徹,全面。同時,在編程時,兩個人也難免會產生分歧,在商討誰的代碼更好時,這種討論對兩個人的思維能力都是有提升的。
WordCount 擴展功能