软件构造感悟之测试优先的编程

测试优先编程是一种在编写代码之前先创建测试用例的方法,旨在提高代码质量并减少bug。测试包括单元测试、集成测试和系统测试,以及回归测试。等价类划分帮助优化测试用例设计。黑盒测试关注功能输出,而白盒测试关注代码结构。测试覆盖率如函数覆盖、语句覆盖和分支覆盖是评估测试质量的重要指标。
摘要由CSDN通过智能技术生成

测试优先的编程 {ignore=true}

1. 什么是测试

测试是一种从程序中发现错误的一种编程,根据这段话,很显而易见的一点就是测试的好坏衡量标准取决于其发现程序中bug的能力。

针对这种能力还需要几个要求,第一个就是测试不能冗余,也就是说测试用例之间不能有重复的部分,第二个就是最佳特性,并且不能太复杂也不能太简单。

测试的种类分为三种,分别是单元测试,集成测试和系统测试,单元测试是对程序中最小的可测试单元进行测试,集成测试是对程序中的模块进行测试,系统测试是对整个系统进行测试。而除此之外还有回归测试,顾名思义,回归测试就是在修改旧代码后,重新进行测试,以确保修改后的代码不会影响到原来的代码。

测试仅仅是一种检测代码bug的手段,是一种动态的行为,而语法上面的bug则可以由静态分析来完成,甚至可以判断空指针等常见的错误。

2. 测试用例

一个简单的公式可以描绘出测试用例是什么
测试用例 = 输入 + 执行条件 + 预期结果 测试用例 = 输入 + 执行条件 + 预期结果 测试用例=输入+执行条件+预期结果

3. 测试优先

有了前面的铺垫我们终于来到了重点,那就是测试优先。测试优先的编程就是在编写代码之前先编写测试用例,然后再编写代码。

这种测试优先的依据是各个函数的 spec,我们据此写测试,并且我们再进行代码的实现,显而易见的好处是无论在任何一个阶段,我都可以对写出的代码进行测试,极大程度地保证了不会出现bug集中爆发的情况。并且在编写测试的时候,我们还逐渐的理解 spec,并可以在中途不断修改、完善。

4. 等价类划分

等价类划分可以帮助我们清晰的去划分测试用例,从而更好的进行测试。

可以按照边界值、正负、奇偶等划分。

等价类的构造要尽量符合下图。

等价类划分

5. 黑盒测试与白盒测试

黑盒测试是指在测试的时候,我们只关注输入和输出,而不关注程序的内部结构,也就是说我们不知道程序的内部结构,只知道程序的功能,我们只关注程序的功能是否正确。

相对应的白盒测试是指在测试的时候,我们关注程序的内部结构,也就是说我们知道程序的内部结构,我们关注程序的每一条语句是否正确。

黑盒表示一种不可见的状态,而白盒表示一种透明清晰可见的意思,这两个命名也是有一定的道理的。

6. 测试覆盖率

我们对代码的覆盖有函数覆盖、语句覆盖、分支覆盖、条件覆盖、路径覆盖等。

函数覆盖就是测试中要调用每个函数至少一次、语句覆盖指每个语句至少调用一次、分支覆盖指每个条件分支至少调用一次,而条件覆盖指的是每个条件都要至少覆盖一次,路径覆盖指的是每个路径都要至少覆盖一次。

其中分支覆盖与条件覆盖容易混淆。

该图为分支覆盖(也叫判定覆盖)
条件覆盖

该图为条件覆盖
分支覆盖

其中效果上来说
路径覆盖 > 分支覆盖 > 语句覆盖 路径覆盖 > 分支覆盖 > 语句覆盖 路径覆盖>分支覆盖>语句覆盖

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值