基本任务:代码编写+单元测试
小组成员:(软工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。