基本任务:代码编写+单元测试

 

小组成员:(软工1506)苏莹莹 、凌雨卿、 张婧、(数媒1501)郑小妹(我)

小组项目GitHub地址https://github.com/CoolWC/wcPro

功能模块:输入处理、词频统计、单词排序、输出控制、其他(包括WordList类、main函数)

PSP表格:

PSP2.1表格

PSP2.1

PSP阶段

预估耗时

(分钟)

实际耗时

(分钟)

Planning

计划

 60  30

· Estimate

· 估计这个任务需要多少时间

 60  30

Development

开发

 665  625

· Analysis

· 需求分析 (包括学习新技术)

 120  120

· Design Spec

· 生成设计文档

 60  60

· Design Review

· 设计复审 (和同事审核设计文档)

 60  20

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

 5  5

· Design

· 具体设计

 60  60

· Coding

· 具体编码

 180  120

· Code Review

· 代码复审

 60  120

· Test

· 测试(自我测试,修改代码,提交修改)

 120  120

Reporting

报告

 110  80

· Test Report

· 测试报告

 60  30

· Size Measurement

· 计算工作量

 20  20

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

 30  30
 

合计

 835  735

 

各模块详情:

输入处理:由苏莹莹负责,接口:public File inputHandler(String[] args)

 

词频统计:由凌雨卿负责,接口:public ArrayList<WordList> wordCount(File fName)

 

单词排序:由张婧负责,接口: public static ArrayList<WordList> wordSort(ArrayList<WordList> list)

 

输出控制:由郑小妹(我)负责,接口:public void outputHandler(ArrayList<WordList> list)

 

其他(包括WordList类、main函数):由凌雨卿负责

 

代码分析:

我负责的是outputHandler(ArrayList<WordList> list)函数

函数接收一个已经排好序的WordList数组作为参数,将数组中的元素逐个输入到同目录的output.txt文件中,输出格式为:单词和词频之间空一格。代码如下:

    /**
     * 输出处理函数
     *
     * @param list 已排序词频统计表
     * @author Zheng
     */
    public void outputHandler(ArrayList<WordList> list) {
        //结果输入到同目录的output.txt文件中
        String file = "output.txt";
        try {
            FileWriter fw = new FileWriter(file);
            BufferedWriter bw = new BufferedWriter(fw);
            if (list.size() == 0) {
                System.out.print("文件为空");
            } else {
                for (WordList w : list) {

                    String result = w.getWord() + " " + w.getFreq();
                    bw.append(result);
                    bw.append("\r\n");
                }
            }
            bw.close();
            fw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 

白盒测试:

"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。

白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化。

黑盒测试:

黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。

等价类划分的办法是把程序的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。划分等价类分有效等价类和无效等价类。

 

采用单元测试框架编写单元测试脚本:

 单元测试框架使用的是JUnit4

测试函数:

@Test
public void testOutputHandler()

脚本另外放在个人的GitHub上,地址:https://github.com/maymaymaymaymay/WCOutputTest

 测试运行截图:

 

另外,根据工作量,个人的小组贡献分约为20%

 

有关代码规范:

代码规范遵循《阿里巴巴Java开发手册》中的要求,具体应用如下:

命名风格:

类名使用 UpperCamelCase 风格;

方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从 驼峰形式;

抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类 命名以它要测试的类名开始,以 Test 结尾;

杜绝完全不规范的缩写,避免望文不知义;

为了达到代码自解释的目标,任何自定义编程元素在命名时,使用尽量完整的单词 组合来表达其意;

代码格式:

大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果 是非空代码块则: 1) 左大括号前不换行。 2) 左大括号后换行。 3) 右大括号前换行。 4) 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行;

左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格;

if/for/while/switch/do 等保留字与括号之间都必须加空格;

采用 4 个空格缩进,禁止使用 tab 字符;

注释的双斜线与注释内容之间有且仅有一个空格;

方法参数在定义和传入时,多个参数逗号后边必须加空格;

等等。

 

我个人使用MyEclipse进行代码的编写,IDEA中安装格式化插件Alibaba Java Code Guidelines自动完成以上所说格式规范,插件可直接在IDEA中下载安装,也可以通过下载插件压缩包进行安装,相关教程链接:https://blog.csdn.net/qq_27093465/article/details/78338932