第4周作业:WordCount优化

Posted Nianx328

tags:

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

Github地址:

https://github.com/SkateCloud/wcPro

1:分析整理需求,完成PSP表格

PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分钟)
>Planning 计划 5 6
Estimate 估计任务耗时 5 6
>Development 开发 40 50
Analysis 需求分析(包括学习新技术) 5 5
Design 具体设计 5 5
Coding 具体编码 10 20
Test 测试(自我测试,修改代码,提交修改) 20 20
> Reporting 报告 35 40
Test Report 测试报告 20 25
Size Measurement 计算工作量 10 5
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 5 10
合计 80 96

2:代码设计思路

负责输入模块。
该模块主要可以分为两部分,一部分为对main函数中args参数的判断处理,另一部分为读取文件中的内容。
对于第一部分,大致思路是三条路:为空,输入正确,输入错误。
       在输入错误中应当细分几个分支,比如是输入文件格式后缀错误还是输入内容不是一个文件名。
       输入正确还要判断文件是否存在。
对于第二部分,运用java.nio.file中的File和Path包,通过readAllBytes()方法来获取文件内容,然后转码为UTF-8格式,否则会乱码。



以下为所有源代码:(可以跳过,后面有具体一点的说明)


import  java.io.*;
import java.nio.file.*;
public class Main {

private static String readFile(String path) {
    try {
        byte[] encoded = Files.readAllBytes(Paths.get(path));
        return new String(encoded, "UTF-8");
    } catch (IOException ex) {
        throw new RuntimeException(ex);
    }
}

public static void main(String args[]) {
    String filename = " ";
    if (args.length == 0){
        System.out.print("输入为空!请输入文件名!");
    }
    else if (args.length >= 1) {
        filename = args[args.length - 1];
        if(filename.contains(".txt")){
            if (filename == ".txt"){
                System.out.print(filename+"\\n");
                System.out.print("请输入具体文件名,例如a.txt");
            }
            else{
                char c[] = filename.toCharArray();
                char t1 = c[filename.length() - 1];
                char x  = c[filename.length() - 2];
                char t2 = c[filename.length() - 3];
                char dian = c[filename.length() - 4];
                if(t1 == \'t\'& x ==\'x\' & t2 ==\'t\' & dian ==\'.\' ){
                    File file = new File(filename);
                    if(file.exists()){
                        System.out.print(filename+"\\n");
                        System.out.print("输入正确!");
                        readFile(filename);
                    }
                    else{
                        System.out.print(filename+"\\n");
                        System.out.print("文件不存在");
                    }
                }
                else{
                    System.out.print(filename+"\\n");
                    System.out.print("文件格式输入错误!");
                }
            }
        }
        else{
            System.out.print(filename+"\\n");
            System.out.print("输入文件格式错误。应为 .txt 文件");
        }
    }
}

分支1:当用户输入为空时


分支2:当用户输入不为空时:
分支2-1:输入文件名包含 .txt 时
分支2-1-1:只输入.txt

分支2-1-2:.txt 在输入末尾时 

分支2-1-2-1:输入文件名存在 

分支2-1-2-2:输入文件名不存在 

分支2-1-3:.txt 不在输入末尾时 

分支2-2:输入文件名不包含 .txt 时 

3:测试设计过程

 具体测试用例设计见下表:


 测试应当尽可能覆盖所有分支,对于重要级别高的待测模块应多设置几个测试用例来模拟模块运行时的各种情况,确保模块运行的稳定性。
 在上述表格中,有些测试用例其实不是必需,实际运行几乎不会存在这种状况,比如最后一个用例。

4:测试运行和评价

 测试结果运行良好,模块质量也基本较高,但是有些分支其实会影响效率,在优化时可以去掉。
 
 测试用例1、2、3:

 测试用例4:


测试用例5:

测试用例6:

测试用例7:

测试用例8:

测试用例9:

测试用例10:

 测试用例11:

 测试用例12:

 测试用例13:

 测试用例14:

 测试用例15:

 测试用例16:

 测试用例17/18/19:

 测试用例20:

5:小组贡献率: 0.3

以上是关于第4周作业:WordCount优化的主要内容,如果未能解决你的问题,请参考以下文章

第4周小组作业:WordCount优化

第4周小组作业:WordCount优化

软件质量与测试第4周小组作业:WordCount优化

第4周小组作业:WordCount优化

第4周小组作业:WordCount优化

第4周小组作业 WordCount优化