软件测试 JUnit单元测试框架
程序员文章站
2024-03-15 19:42:12
...
软件测试
在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否满足设计要求进行评估的过程
测试分类
- 单元测试(unit testing),是指对软件中最小可测试单元进行检查和验证。通常是一个函数或者方法
- 单元测试是已知代码结构进行的测试,属于白盒测试。
- 集成测试是将多个单元相互作用,形成一个整体,对整体协调性进行测试。
- 一般从构成系统的最小单元开始,持续推进到单元之间的接口直到集成为一个完成的软件系统为止。
- 白盒测试(white-box testing),全面了解程序内部的逻辑结构,对所有的逻辑路径都进行测试,一般由程序员完成
- 黑盒测试(black-box testing),有名功能测试,不考虑程序内部结构和内部特性,检查程序功能是否按照需求规格说明书的规定正常使用,一般由独立的使用者完成。
- 自动测试,用测试程序批量,反复的 测试功能程序,并可以自动检查程序输出结果是否满足要求。
- 手动测试,手动执行程序,手动输入需要的参数,手动检查程序的输出是否满足要求。
- 回归测试,修改旧代码后,重新进行测试以确认修改没有引用新的错误或导致其他代码产生错误。
测试策略
基于main函数的策略
优点:简单
缺点:
- 无法自动判断被测对象的行为是否符合
- main方法添加大量代码,这些代码在发布时需要手动删除
- 分散程序员开发时的关注点
基于自动化测试框架的策略
初始化–输入测试数据被执行代码–获取系统实际结果–比较结果是否一致—输出测试结论
JUnit 一种JAVA语言的单元测试框架
在主程序中写入实际代码,下面是判断输出的年份是否为闰年
package dateUtil;
public class DateUtil {
public boolean isLeapYear(int year) {
boolean result = false;
if (year > 0 && year < 10000) {
return true;
}
if (year % 4 == 0 && year % 100 !=0) {
return true;
}
if (year % 100 == 0 && year % 400 ==0) {
return true;
}
return result;
}
//测试程序
package dateUtilTest;
import org.junit.Test;
import dateUtil.DateUtil;
import static org.junit.Assert.assertEquals; //导入Assert类的所有静态方法,自JDK1.5引入
//
//import org.junit.Assert;
//import org.junit.Test;
public class DateUtilTest {
@Test
public void test() {
assertEquals(false, new DateUtil().isLeapYear(-100)); //前面的false是预期的结果,看是否与后面的匹配。
assertEquals(false, new DateUtil().isLeapYear(1000));
assertEquals(false, new DateUtil().isLeapYear(20000));
assertEquals(false, new DateUtil().isLeapYear(2020));
assertEquals(false, new DateUtil().isLeapYear(2019));
assertEquals(false, new DateUtil().isLeapYear(2000));
assertEquals(false, new DateUtil().isLeapYear(1900));
//Assert.assertEquals(false, new Triangle().judgeEdges(-100));
}
}
//pom.xml文件 中导入关于JUnit的依赖文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>MOOC-14-02MYMaven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
可以直接使用Maven进行测试,
也可以直接运行测试代码。
使用Maven进行测试,可以直接把项目中所以的测试程序都执行,不用一个个去运行测试代码。
下一篇: 计时器实现---填上时区坑