一:GitHub地址
二:PSP表格
PSP2.1 | PSP阶段 | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 10 | 10 |
Estimate | 估计这个任务需要多少时间 | 5 | 5 |
Development | 开发 | 60 | 70 |
Analysis | 需求分析(包括学习新技术) | 100 | 100 |
Design Spec | 生成设计文档 | 10 | 15 |
Coding Standard | 代码规范(为目前的开发制定合适的规范) | 20 | 15 |
Design | 具体计划 | 20 | 20 |
Coding | 具体编码 | 60 | 60 |
Coding Review | 代码复审 | 20 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 80 | 100 |
Reporting | 报告 | 20 | 20 |
Test Report | 测试报告 | 60 | 60 |
Size Measurement | 计算工作量 | 5 | 5 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 20 | 30 |
合计 | 490 | 530 |
三:接口的实现
本次小组作业我负责输入模块,解析用户的输入进行正确性判断,并返回一个file给功能模块。
四:测试用例设计
处理输入模块的方法集中在一个函数中,因此只需要对inputHandler(String[] args)方法进行测试用例的设计
白盒测试:
程序的整体结构如下图所示:
该函数有五个出口,五种可能的情况,因此设计五种测试用例即可:
测试用例设计(参数输入) | 预期函数输出 | 函数实际输出 |
空 | 请输入参数!(错误) | 请输入参数! |
test1.txt test2.txt | 输入参数过多!(错误) | 输入参数过多! |
test.c | 输入文件格式不正确!(错误) | 输入文件格式不正确! |
test1.txt(文件不存在) | 文件不存在(错误) | 文件不存在! |
test2.txt(文件存在) | 返回inputName | 返回inputName |
黑盒测试:
需求中要求只处理单个txt文件,因此可以划分为五个等价类
等价类 | 具体情况 |
等价类1 | 没有输入 |
等价类2 | 输入多于一个参数 |
等价类3 | 输入文件格式错误 |
等价类4 | txt文件不存在 |
等价类5 | txt文件存在 |
设计测试用例:
等价类1:{}
等价类2:{"text1.txt","text2.txt"}
等价类3:{"text.c"}
等价类4:{"noFile.txt"}
等价类5: {"rightFile.txt"}
五:单元测试
单元测试:
使用参数化的方法构建测试脚本。
函数Collection()用于构造输入的测试用例集,以参数的形式传递到测试用例中。
@Rule用于声明ExpectedException异常,用来在测试的时候指定预期抛出的异常的类型和相应异常信息。
public class InputTest extends TestCase{
//文件名
private String[] fnameParam;
//异常信息
private String errorMesg;
public InputTest(String[] fnameParam,String errorMesg){
this.fnameParam=fnameParam;
this.errorMesg=errorMesg;
}
@Parameterized.Parameters
public static Collection data(){
return Arrays.asList(new Object[][]{
{new String[]{"noFile.txt"},"文件不存在!"},
{new String[]{},"请输入参数!"},
{new String[]{"text1.txt","text2.txt"},"输入参数过多!"},
{new String[]{"text.c"},"输入文件格式不正确!"}
});
}
//声明ExpectedException异常,方便测试的时候指定异常的类型和相应异常信息
@Rule
public ExpectedException thrown= ExpectedException.none();
/**
*
* Method: inputHandler(String[] args)
*
*/
@Test
public void testInputHandler() throws Exception {
Method method=new Method();
//对于抛出异常的测试
thrown.expect(Exception.class);
thrown.expectMessage(errorMesg);
method.inputHandler(fnameParam);
}
截图 :
所有评论(0)