1. 程式人生 > >WordCount 擴充套件功能

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

七.個人總結

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