《软件工程》实验个人报告,实验五:软件系统测试; 滁州学院课程

1.项目词汇

EA导出写入的词汇表Glossary

2.实现模型

我个人在小组中的任务是用户管理,即开户、改密业务和登录操作的实现,以下是我个人任务功能实现的具体类图和包图。
在这里插入图片描述
图2-1 个人任务类图
在这里插入图片描述
图2-2 个人任务包图

3.EA生成JUnit测试模型

在这里插入图片描述
图3-1 JUnt测试图
选择包或类,点击“Transform”转换,生成相应的代码。
在这里插入图片描述
图3-2 db类test图

4.EA的可执行分析器配置

①dom4j-1.6.1.jar
②jaxen-1.1.6.Jar
dom4j-1.6.1.jar和jaxen-1.1.6.jar是dom4j解析xml必备的文件包。
③mysql-connector-java-8.0.17.jar
此jar包为mysql的jdbc驱动的源代码,用于和mysql等数据库之间的连接
④rt.jar
Java基础类库,也就是Java doc里面看到的所有的类的class文件。
Build配置:
“%JAVA%\bin\javac.exe” %r*.java -d .
在这里插入图片描述
图4-1 Build配置图
Debug配置:
在这里插入图片描述
图4-2 Debug配置图
Run配置:
“%JAVA%\bin\java.exe” gui.LoginFrame -cp “.;mysql-connector-java-5.1.22-bin.jar”
在这里插入图片描述
图4-3 Run配置图

5.单元测试

5.1.单元测试规范

5.1.1.可衡量

可衡量:单测的编写应该是可以用具体的指标衡量的
单测通过率要求100%,行覆盖率要求50%以上。
老代码有逻辑变更时,单测也应该做相应的变更(并实施测试称为递归测试)。
新业务提测前,必须保证老单测的通过率也保持100%。

5.1.2.独立性

独立性:单测应该是独立且相互隔离的。
一个单测只测试一个方法。
单测不应该依赖于别的单测。
单测如果涉及到数据变更,必须进行回滚。
单测应该测试目标方法本身的逻辑,对于被测试的方法内部调用的非私有方法应进行mock(模仿),推荐使用Mockito进行mock。

5.1.3.规范性

规范性:单测的编写需要符合一定规范
对实现类进行测试而非接口。
单测应该是无状态的。
覆盖范围应包括所有提供了逻辑的类:service层、manager层、自定义mapper等,甚至还有部分提供业务逻辑的controller层代码。
覆盖范围不应包括自动生成的类,不应包括各种POJO(DO,BO,DTO,VO…),也不应包括无业务逻辑的controller类。
这些被排除的类应该在覆盖率统计中被剔除。
私有方法通过调用类的单测进行测试。
解释:因为私有方法在测试类内没法直接调用,除非使用反射。
单测要覆盖到正常分支和异常分支,使用专门的异常测试属性junit(expected)/testng(expectedExceptions)。禁止使用try-catch。
如果被测试的方法的逻辑体现在方法返回或成员变量中,则使用Assert断言验证该返回或成员变量。
如果被测试的方法的逻辑体现在内部的方法调用行为本身,则使用Mockito的verify验证内部方法调用的情况。
如果被测试的方法的逻辑体现在内部方法调用的参数中,即方法的逻辑用于构建内部调用方法的参数,则使用Mockito的verify验证内部方法调用的参数。
单测应在相应的目标方法开发完后立即编写,如能在开发前就开始编写则更好(TDD:测试驱动开发)。

5.2.施测DAO层

在这里插入图片描述
Build:
“%JAVA%\bin\javac.exe” -verbose -g -cp “.;%APACHE_HOME%\lib\mysql-connector-java-8.0.17.jar;%SEEA%\src11\lib\junit-4.12.jar;%SEEA%\src11\lib\hamcrest-core-1.3.jar;%SEEA%\src23\nps\WEB-INF\classes;%SEEA%\src20\npsfw\npsstruts\classes” ut\UserDaoTest.java -d .
在这里插入图片描述
Test:
“%JAVA%\bin\java.exe” -cp “.;%APACHE_HOME%\lib\mysql-connector-java-8.0.17.jar;%SEEA%\src11\lib\junit-4.12.jar;%SEEA%\src11\lib\hamcrest-core-1.3.jar;%SEEA%\src23\nps\WEB-INF\classes;%SEEA%\src20\npsfw\npsstruts\classes” org.junit.runner.JUnitCore model.dao.UserDaoTest
REM controller.action.LoginActionTest model.service.LoginServiceTest
在这里插入图片描述

5.3.施测Service层

在这里插入图片描述

5.4.施测Action层

在这里插入图片描述
可测程序:LoginService.java
public class LoginService {
public void login() throws Exception {
System.out.println(“请输入账户和密码:”);
Scanner sc = new Scanner(System.in);
int accountNo = sc.nextInt();
int pwd = sc.nextInt();
Account account = new AccountDAO().accountDao(accountNo);
if (!(account == null)) {
if (!(account.getPwd() == pwd)) {
System.out.println(“登陆失败!密码错误!”);
} else {
System.out.println(“登陆成功!”);
while (true) {
System.out.println("-------------请选择以下操作:1、存款。 2、取款。 3、查询余额。 4、转账。 5、退出。-------------");
switch (sc.nextInt()) {
case 1:
new ModifyService().newTransaction(account, null);
break;
case 2:
//new WithdrawFrame().newTransaction(account, null);
break;
case 3:
new BalanceService().getBalance(account.getAccountNo());
break;
case 4:
//new TransferService().newTransaction(account, null);
break;
case 5:
System.out.println(“本次服务结束,欢迎下次光临!”);
System.exit(0);
break;
default:
System.out.println(“输入操作 指令错误!请重新输入!”);
}
}
}
} else {
// 用户不存在,提示是否注册
System.out.println(“登陆失败!用户不存在!是否注册?(Y/N)”);
switch (new Scanner(System.in).next()) {
case “Y”:
new RegisterService().registerAccount();
break;
}
}
}
}
Build:"%JAVA%\bin\javac.exe" %r*.java -d .
在这里插入图片描述
Test:"%JAVA%\bin\java.exe" -cp “.;%APACHE_HOME%\lib\servlet-api.jar;%APACHE_HOME%\lib\mysql-connector-java-8.0.17.jar;%SEEA%\src11\lib\hamcrest-core-1.3.jar;%SEEA%\src11\lib\hamcrest-library-1.3.jar;%SEEA%\src11\lib\junit-4.12.jar;%SEEA%\src24\nps\WEB-INF\lib\jmockit-1.36.jar;%SEEA%\src24\nps\WEB-INF\lib\easymock-4.1.jar;%SEEA%\src23\nps\WEB-INF\classes;%SEEA%\src20\npsfw\npsstruts\classes” org.junit.runner.JUnitCore controller.action.LoginActionTest
在这里插入图片描述

5.5.单测类模型

在这里插入图片描述

5.6.单测管理

在这里插入图片描述

6.集成测试

在这里插入图片描述
图6-1 集成测试类图

6.1.集成测试的关注点

模块与模块之间交互时是不是会造成数据的丢失及交互流程等。
各个子模块合起来,能否达到父功能的要求。
一个模块没有问题,但会不会对另一个模块造成影响。
数据结构是否有问题,数据会不会被异常修改,全局数据结构有没有异常。
模块本身的BUG发生了累积后,会不会造成不可预估的错误。

6.2.集成测试TestSuite

在这里插入图片描述
图6-2 集成测试图

6.3.集测组件模型

在这里插入图片描述
图6-3 集测模型图

6.4.集测管理

在这里插入图片描述
图6-2 集测管理图

7.系统功能测试

7.1.功测用例模型

在这里插入图片描述
图7-1 功测模型图
在这里插入图片描述
图7-2 功测用例图

7.2.功测管理

在这里插入图片描述
图7-3 功测管理图

8.系统性能测试

8.1.性测需求模型

在这里插入图片描述
图8-1 性能测试模型图

8.2.性测管理

在这里插入图片描述
图8-2 性能测试管理图

9.验收测试

9.1.验测需求模型

用户登录界面的验收测试
在这里插入图片描述
图9-1 验收测试模型图

9.2.验测管理

在这里插入图片描述
图9-2 验收测试管理图

10.测试报告

利用EA测试管理功能,针对单集系验各种测试就行总结。统计测试类型、状态、时间等。
在这里插入图片描述

10.1.单元测试统计

13个单元测试,全部通过测试,负责人**,完成时间2021-1-6。

10.2.集成测试统计

3个集成测试,全部通过测试,负责人**,完成时间2021-1-6。

10.3.功能测试统计

4个系统测试,3个通过测试,1个未通过测试,负责人**,完成时间2021-1-6。

10.4.性能测试统计

6个性能测试,全部通过测试,负责人**,完成时间2021-1-6。

10.5.验收测试统计

5个验收测试,全部达到项目需求,负责人**,完成时间2021-1-6。

11.跟踪模型

在这里插入图片描述
图11-1 甘特图

12.甘特图模型

在这里插入图片描述
图12-1 甘特图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值