2 testing and test-first programming知识点梳理

本文探讨了软件测试的多个方面,包括单元测试、集成测试、系统测试与回归测试的区别,静态与动态测试,白盒与黑盒测试,以及Test-First Programming方法。此外,文章还介绍了JUnit自动化测试、边界测试、覆盖率评估和文档测试策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Software Testing

软件测试种类:

Unit testing 单元测试

Integration testing 集成测试

System testing 系统测试

Regression testing 回归测试:回归测试:一旦程序被修改,重 新执行之前的所有测试

区别几组概念

1.静态测试:写时测试,眼睛看

动态测试:运行时测试

2.测试Testing:发现是否存在错误

调试Debugging:识别错误根源,消除错误

3.白盒测试:对程序内部代码结构的测试

黑盒测试:对程序外部表现出来的行为的测试

测试困难的原因:

1.暴力穷举所做的事情是有限的

2.偶然测试没有意义

3.仅测试部分数据对软件测试的意义(基于样本的统计数据对软件测试意义不大)

4.软件行为离散,bug的出现无规律

2.Test Case

测试用例:输入+执行条件+期望结果

3.Test-First Programming

测试优先的编程

先写spec

再写符合spec的测试用例

写代码、执行测试、有问题再改、再执行测试用例,直到通过它。

注:规约由方法签名和注释(对输入输出的描述)构成

测试优先的好处

有助于更好地理解规约,更早发现设计问题,避免浪费时间做错误的事,规约本身也可能是错误的。

4.Unit Testing

针对软件的最小单元模型开展测试,隔离各个模块,容易定位错误和调试

考虑的问题

接口,测试输入输出

数据的一致性

所有语句均被执行

边界条件

错误处理

5.Automated Unit Testing with JUnit

每个测试方法前标注@Test

assert的相关用法:参见https://blog.youkuaiyun.com/u010473656/article/details/89215644

这里补充collectiongs的用法:https://blog.youkuaiyun.com/Chen_xiaobao/article/details/96363420

assert的例子

注:引号内容是错误时的输出,可以不写

assertArrayEquals("failure - byte arrays not same", expected, actual);

assertEquals("failure - strings are not equal", "text", "text");

assertFalse("failure - should be false", false);

assertNotNull("should not be null", new Object());

assertNotSame("should not be same Object", new Object(), new Object());

assertNull("should be null", null);

assertSame("should be same", aNumber, aNumber);

assertTrue("failure - should be true", true);

assertThat("albumen", both(containsString("a")).and(containsString("b")));

assertThat(Arrays.asList("one", "two", "three"), hasItems("one", "three"));

assertThat("good", allOf(equalTo("good"), startsWith("good")));

6.Black-box Testing

用于检查代码的功能,不关心内部实现细节。

检查程序是否符合规约

6.1 Choosing Test Cases by Partitioning

等价类(对称、传递、自反)划分的测试:

基于等价类划分的测试:将被测函数的输入域划分为等价类, 从等价类中导出测试用例。

6.2 Include Boundaries in the Partition(测试边界)

笛卡尔积:全覆盖

7 White-box Testing

黑盒测试完 全从函数spec导出测试用例,不考虑函数内部实现

白盒测试要考虑内部实现细节

8 Coverage of Testing

测试效果:路径覆盖>分支覆盖>语句覆盖

测试难度:路径覆盖>分支覆盖>语句覆盖

9 Automated Testing and Regression Testing

10 Documenting Your Testing Strategy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值