1.GitHub地址:https://github.com/YJG1997/wcPro
PSP2.1表格
PSP2.1 | PSP阶段 | 预估耗时 (分钟) | 实际耗时 (分钟) |
Planning | 计划 | 10 | 10 |
· Estimate | · 估计这个任务需要多少时间 | 10 | 10 |
Development | 开发 | 20 | 20 |
· Analysis | · 需求分析 (包括学习新技术) | 20 | 20 |
· Design Spec | · 生成设计文档 | 20 | 10 |
· Design Review | · 设计复审 (和同事审核设计文档) | 10 | 0 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 15 | 15 |
· Design | · 具体设计 | 60 | 40 |
· Coding | · 具体编码 | 180 | 180 |
· Code Review | · 代码复审 | 60 | 40 |
· Test | · 测试(自我测试,修改代码,提交修改) | 60 | 50 |
Reporting | 报告 | 30 | 30 |
· Test Report | · 测试报告 | 30 | 40 |
· Size Measurement | · 计算工作量 | 10 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 30 |
合计 | 565 | 505 |
3.描述代码设计思路
我负责的是比较简单的输入控制部分,即对输入进行有效性校验,识别和处理无效输入,并针对有效输入,从中提取所需数据。该模块的主要任务是判断输入的文件是否为.txt文件,并且判断文件中文件中是否仅包含单词(a-z, A-Z)、常见字符、数字(0-9)、不包含其他内容。
判断.txt文件部分代码:
public static void main(String[] args) throws IOException { // TODO Auto-generated method stub String curPath=System.getProperty("user.dir"); Scanner s = new Scanner(System.in); String name = s.nextLine(); s.close(); if(name.indexOf(".txt")==-1) { System.out.println("Îļþ²»ÊÇÒÔtxt½áβ"); } else { //String name ="test2.txt"; File file = new File(name); //String targetStr=""; FileInputStream fis=new FileInputStream(file); byte[] inputStream=new byte[fis.available()]; String targetStr=""; while(fis.read(inputStream)!=-1) { targetStr=new String(inputStream,0,inputStream.length); } fis.close();
判断是否为单词(a-z, A-Z)、常见字符、数字(0-9)、不包含其他内容的部分代码:
while(curPosition<targetStr.length()&&!(targetStr.charAt(curPosition)>='a'&&targetStr.charAt(curPosition)<='z'||targetStr.charAt(curPosition)>='A'&&targetStr.charAt(curPosition)<='Z'||targetStr.charAt(curPosition)=='-')) { curPosition++; }//去掉非字母 boolean isWord=false; String thisWord=""; while (curPosition<targetStr.length()&&(targetStr.charAt(curPosition)>='a'&&targetStr.charAt(curPosition)<='z'||targetStr.charAt(curPosition)>='A'&&targetStr.charAt(curPosition)<='Z'||targetStr.charAt(curPosition)=='-')) { isWord=true; thisWord+=targetStr.charAt(curPosition); curPosition++; }
4.测试设计过程
测试输入控制模块需考虑以下几个方面:
a.判断输入的文件是否为.txt文件
b.判断文件是否存在
c.判断文件内容是否符合仅包含单词(a-z, A-Z)、常见字符、数字(0-9)、不包含其他内容
5.测试运行和评价
测试通过调用模块运行结果与正确结果相比较判断是否符合需求,对此模块设计了20个测试用例,如下:
1.test.txt 系统找不到指定文件 2.test1.txt a 3 test 2 is 1 this 1 3.test1.c 文件不是txt结尾 4.test1 文件不是txt结尾 5..txt 系统找不到指定文件 6.test1.TXT 文件不是txt结尾 7.test1txt 文件不是txt结尾 8.test2.txt is 1 this 1 //特殊符号不计数 9.test2.docx 文件不是txt结尾 10.test2 文件不是txt结尾 11.test2.TXT 文件不是txt结尾 12.test2txt 文件不是txt结尾 13.Test2.txt 系统找不到指定文件 14.test1test2.txt 系统找不到指定文件 15.test1.txt test2.txt 系统找不到指定文件 16.test3.txt this 2 is 2 a 2 17.test4.txt //文件为空 18.test3.txt test4 系统找不到指定文件 19. test1.txt 系统找不到指定文件//'test1'前有空格 20. 系统找不到指定文件 //无输入
因为该模块整合到main函数中,测试可在cmd中操作,以下为在运行环境下的部分运行结果截图:
对于该模块的测试,更多的是对不符合规范的输入的测试,以及文件内容与要求不符合的测试。