第四周作业 单元测试

Posted 17028

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四周作业 单元测试相关的知识,希望对你有一定的参考价值。

基本功能

github地址:https://github.com/DouglasLee001/wordcountPRO

 

 

 PSP表格

 

接口的实现

 由于我是负责主函数类(包含输入模块)这部分的,因此没有负责相关接口的编写,在此简要的说明一下主函数的构成。

首先是导入java相关包,方便后面写代码时函数调用

主函数:含有一个字符串数组参数,创建一个String变量com保存主函数参数(即将其拼接成一个字符串,串与串之间用空格分开),然后创建一个String变量保存正则表达式,接下来调用Pattern包中的matches函数进行正则表达式匹配。

将匹配结果保存在布尔变量isMatch中,最后根据isMatch的真假来决定是否进行读文件以及打印单词和词频的操作。

 import java.util.regex.Pattern;
 public class countWord {
      public static void main(String[] args) {
         //Scanner scan=new Scanner(System.in);
         //String com=scan.nextLine();
          String com=args[0] + " " + args[1];
          //利用正则表达式检查用户命令行输入参数是否正确
          String pattern = "wcPro.exe .+(\\\\.)txt";
          boolean isMatch = Pattern.matches(pattern, com);
          //表达式正确则跳出循环,否则继续接受用户输入
          if(isMatch){
              count tar=new count(com.replace("wcPro.exe ",""));
              tar.countWord();
              for(int i=0;i<tar.getWordArray().size();i++){
                  System.out.println(tar.getWordArray().get(i).word+" "+tar.getWordArray().get(i).num);
              }
              
          }
      }
 }

 

测试用例的设计

注:开始时的主函数参数的传递参数价值很大,可惜无法用Junit框架来测试(参数是从.exe程序输入,故无法在Junit中编写方法测试)

1.正则表达式的匹配测试

  很重要的一个功能,格式的匹配以及文件名的获取,关系到程序接下来是否能顺利运行下去,所以需要着重测试。

2.字符串相加

  虽然很简单,但是也有可能会出错

3.正则表达式匹配的效率测试

  此过程可能会由于正则表达式的选取不当等原因而消耗大量时间,因此需要进行效率的测试

4.函数功能模块的测试

  作为核心功能的实现部分,不论是结果的正确性,还是效率的测试都是重中之重。

根据这些模块分类,并结合采用黑盒和白盒测试方法进行测试。以下是测试用例表:

 

使用Junit进行单元测试

我针对四个类分了四个模块进行测试

1.countWord测试

  测试质量中等,被测模块质量较好,暂未发现错误

2.word测试

  该模块很简单,测试也简单

3.readFileByLines测试

  比较复杂的模块,测试质量中等

4.count测试

  该模块质量很高,测试也还行吧

 下面为20个测试用例的Junit测试结果,全部都通过了

小组贡献分

 0.2

 

 

扩展功能

一、代码规范参照地址:http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html(邹欣老师的博客)

1)选择其中的“代码风格规范”,包括了缩进,行宽,括号,断行和空白的{}行,分行,命名,下划线问题,大小写问题,注释。

二、对组员代码的主观评价

  我选择了同组的易安明(17034)同学所负责的核心处理模块的代码,部分如下:

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class count {
        private ArrayList<word>  wordArray;//单词数
        private String file;//统计的源文件
        public count(String theFile){
            this.setFile(theFile);
        }
        //计算每个文件的单词数
        public void countWord(){
            readFileByLines readFile= new readFileByLines(this.getFile());
            //按行读取指定文件
            ArrayList<String>  lineArray = new ArrayList<String> ();
            ArrayList<word>  wordArray = new ArrayList<word> ();
            lineArray=readFile.fileString();
            String pattern="([a-zA-Z]+(-[a-zA-Z]+)*)";
            Pattern r = Pattern.compile(pattern);
            for(int i =0;i<lineArray.size();i++){
               Matcher m = r.matcher(lineArray.get(i));
                while(m.find()){
                    word cur=new word(m.group(1));
                    //System.out.println(wordArray.size());
                    int flag=0;
                    for(int j=0;j<wordArray.size();j++){
                        if(wordArray.get(j).word.equals(cur.word)){
                            wordArray.get(j).add();
                            flag++;
                            //sSystem.out.println("nihao");
                            break;
                        }
                    }
                    if(flag==0){
                    cur.change();
                    wordArray.add(cur);
                    }
                    }
                }
            setWordArray(wordArray);
            }
        public ArrayList<word> getWordArray() {
            return wordArray;
        }
        public void setWordArray(ArrayList<word> wordArray) {
            this.wordArray = wordArray;
        }
        public String getFile() {
            return file;
        }
        public void setFile(String file) {
            this.file = file;
        }
        
}

问题:

  括号{}没有对齐,变量命名不太规范。

 

优点:

  思路清晰,注释很规范,代码的缩进以及大括号的摆放很标准。

 

三、静态代码检查工具选择了:阿里巴巴Java开发代码检测IDE插件,参考安装网址:https://www.cnblogs.com/ysgcs/p/7675977.html

 

四、静态代码检查过程

  1)界面截图:

主要问题及解决方案:

1.for语句缺少大括号:加上大括号

2.变量的命名不规范,首部不能是下划线:应该遵从驼峰形式

3.类中没有添加@author信息:修改方法参照https://blog.csdn.net/ln865709215/article/details/53112789

 

五、整个小组代码存在的问题

  主要还是代码风格不够规范,对于@author此类的注解信息,因为一开始没有这种习惯,导致后来手动添加比较麻烦;最为严重的是类名的首字母没有大写,其他常见问题与我自己的代码相似,不在一一列举。

以上是关于第四周作业 单元测试的主要内容,如果未能解决你的问题,请参考以下文章

第四周——单元测试

第四周小组作业wcPro

第四周作业WordCount优化

第四周作业之wcPro核心模块的实现

(第四周)四则运算单元测试

20165232 第四周课后作业