1. 程式人生 > >第四周小組作業-wordcountpro

第四周小組作業-wordcountpro

and align 測試 targe ase 解析 表格 讀取文件 num

一.小組Github 地址

https://github.com/ChenSilence/wcPro

二.PSP表格

PSP2.1PSP階段預估耗時(分鐘)實際耗時(分鐘)
Planning 計劃 30 60
Estimate 估計任務需要多少時間 30 60
Development 開發 180 240
Analysis 需求分析 20 30
Design Spec 生成設計文檔 20 30
Design Review 設計復審 20 30
Coding Standard 代碼規範 30 10
Design 具體設計 30 50
Coding 具體編碼 30 40
Code Review 代碼復審 30 40
Test 測試 50 10
Reporting 報告 90 240
Test Report 測試報告 30 120
Size Measurement 計算工作量 20 60
Postmortem 總結 20 80
合計 360 560

三.模塊編寫

本次小組作業我所負責的模塊是輸入控制,基本上與上一次作業的輸入控制差不多,只是多了一個只能讀txt文本文件的判斷,因此我的就考慮了比較多的判斷分支情況。我所編寫的只有一個Begin類,功能即是分析main函數中的args數組參數,判斷參數正確之後,將參數傳給下一個模塊,代碼如下:

package javatest;

import java.util.Scanner; import java.lang.String; public class Begin { public static void main(String[] args) { //解析args數組中的參數 int i=0; if (args.length == 0) { //提示未輸入參數 System.out.println("請輸入參數"); return; }
else if (args.length==1){ String name =args[0]; //args數組中的最後一個參數為讀取文件 boolean doo=args[0].contains("."); if(doo){ String[] mode=name.split("\\."); //將文件名在"."處分裂開並存入mod數組中,判斷文件格式 if (mode[1].equals("txt")){ System.out.printf("everything is right!"); new CountNumber().count(name); }else{ System.out.printf("文件格式不對,請重新輸入!"); } }else { System.out.printf("請輸入正確文件名!"); } }else{ System.out.printf("請輸入正確文件名"); } } }

四.測試模塊設計
因為我的輸入控制模塊中只有一個main函數,不存在其他的方法,因此設計測試時,我改了一部分我的相應代碼,為了能在Junit框架中使用assertEquals函數判斷是否運行正確,改了之後的代碼如下:

package word;

import java.util.Scanner;
import java.lang.String;
public class Begin {

     static String[] str = new String [8];
    public static void main(String[] args)  {
         //解析args數組中的參數
             int i=0;
             if (args.length == 0) {                           //提示未輸入參數
               //System.out.println("請輸入參數");
               str[i]=("請輸入參數");
               return;  
               }else if (args.length==1){
                    String name =args[0];                //args數組中的最後一個參數為讀取文件
                    boolean doo=args[0].contains(".");
                    if(doo){
                  String[] mode=name.split("\\.");     //將文件名在"."處分裂開並存入mod數組中,判斷文件格式
                  if (mode[1].equals("txt")){
                   System.out.printf("everything is right!");
                     str[i]=("everything is right!");
                     //new CountNumber().count(name);
                
              }else{
                  //System.out.printf("文件格式不對,請重新輸入!");
                  str[i]=("文件格式不對,請重新輸入!");
                      }
                    }else {
                        //System.out.printf("請輸入正確文件名!");
                       str[i]=("請輸入正確文件名!");
                       } 
               }else{
                  // System.out.printf("請輸入正確文件名");
                   str[i]=("請輸入正確文件名");
                   
               }

       }
     public static String[] getOutput() {
         return str; 
    }
}

根據黑盒白盒測試設計的測試表格如下:

Test Case ID 測試用例編號 Test Item 測試項(即功能模塊或函數) Test Case Title 測試用例標題 Test Criticality重要級別 Pre-condition 預置條件 Input 輸入 Procedure 操作步驟 Output 預期結果 Result
實際結果
Status
是否通過
Remark 備註(在此描述使用的測試方法)
1 輸入控制 testread1 Medium text.txt 運行Junit函數 everything is right! everything is right! OK 黑盒測試
2 輸入控制 testread2 Medium text.tt 運行Junit函數 文件格式不對,請重新輸入! 文件格式不對,請重新輸入! OK 白盒測試
3 輸入控制 testread3 Medium texttxt 運行Junit函數 請輸入正確文件名! 請輸入正確文件名! OK 白盒測試
4 輸入控制 testread4 Medium text.cpp 運行Junit函數 文件格式不對,請重新輸入! 文件格式不對,請重新輸入! OK 黑盒測試
5 輸入控制 testread5 Medium test.txt text2.txt 運行Junit函數 請輸入正確文件名 請輸入正確文件名 OK 白盒測試
6 輸入控制 testread6 Medium 空輸入 運行Junit函數 請輸入參數 請輸入參數 OK 白盒測試
7 輸入控制 testread7 Medium abc.c.txt 運行Junit函數 文件格式不對,請重新輸入! 文件格式不對,請重新輸入! OK 白盒測試
8 輸入控制 testread8 Medium asdhaiudhiwahidwahiawuhdawiuhdw.txt 運行Junit函數 everything is right! everything is right! OK 黑盒測試
9 輸入控制 testread9 Medium text.doc 運行Junit函數 文件格式不對,請重新輸入! 文件格式不對,請重新輸入! OK 黑盒測試
10 輸入控制 testread10 Medium txt.txt 運行Junit函數 everything is right! everything is right! OK 白盒測試
11 輸入控制 testread11 Medium ....c 運行Junit函數 文件格式不對,請重新輸入! 文件格式不對,請重新輸入! OK 白盒測試
12 輸入控制 testread12 Medium 空格符 運行Junit函數 請輸入正確文件名! 請輸入正確文件名! OK 黑盒測試
13 輸入控制 testread13 Medium text.java 運行Junit函數 文件格式不對,請重新輸入! 文件格式不對,請重新輸入! OK 黑盒測試
14 輸入控制 testread14 Medium text.sql 運行Junit函數 文件格式不對,請重新輸入! 文件格式不對,請重新輸入! OK 黑盒測試
15 輸入控制 testread15 Medium text.word 運行Junit函數 文件格式不對,請重新輸入! 文件格式不對,請重新輸入! OK 黑盒測試
16 輸入控制 testread16 Medium text.png 運行Junit函數 文件格式不對,請重新輸入! 文件格式不對,請重新輸入! OK 黑盒測試
17 輸入控制 testread17 Medium text.py 運行Junit函數 文件格式不對,請重新輸入! 文件格式不對,請重新輸入! OK 黑盒測試
18 輸入控制 testread18 Medium text.jpg 運行Junit函數 文件格式不對,請重新輸入! 文件格式不對,請重新輸入! OK 黑盒測試
19 輸入控制 testread19 Medium text.gif 運行Junit函數 文件格式不對,請重新輸入! 文件格式不對,請重新輸入! OK 黑盒測試
20 輸入控制 testread20 Medium text.exe 運行Junit函數 文件格式不對,請重新輸入! 文件格式不對,請重新輸入! OK 黑盒測試

相應的測試腳本運行結果如下:

技術分享圖片

五.擴展任務

1.交叉互評

我們小組所用開發規範參考了阿裏巴巴的JAVA風格指南手冊。我評審的是組員17001代碼,他的代碼符合縮進、斷行風格整潔,命名簡單明了,邏輯清晰易讀,較好地遵守了設計規範。這裏我就不在放出他的代碼了,可在文首的小組github中查找。

2.靜態測試

本次的靜態測試是采用eclipse的checkstyle來進行掃描的,對我的代碼掃描之後主要發現以下三個問題:

1)代碼縮進問題較多

2)註釋較少

3)“{”前差空格,“}”後差空格

在改進這些問題的過程中也慢慢提高了我對代碼規範的理解程度,以後也能提高我的代碼整潔度。參考鏈接:

https://blog.csdn.net/maritimesun/article/details/7668718

六.高級任務

在最後檢測我的代碼性能過程中,由於我的代碼本身就不是特別復雜,因此優化過程中也沒有較多地方可供優化,我減少了一部分多余的分支判斷,也提高了一定的運行速度。改後的代碼也可在小組github中查看。

七.小組貢獻分

在本次作業中,我的工作量較少,因此小組貢獻分評價為0.2。

第四周小組作業-wordcountpro