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 甘特图