1. 程式人生 > >WordCount 擴展功能

WordCount 擴展功能

全面 mcc 優化 pin 但是 文件內容 使用 sta 輸出

合作者 :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 擴展功能