软件测试与测试优先的编程课程总结

软件测试与测试优先的编程课程总结

测试的重要性

测试是提高软件质量的重要手段,它可以检验软件中可能出现的错误,保证软件构造的正确性,增强用户体验。测试优先的编程是一种新型的编程方式,能极大限度地保证编程的正确性,有助于提高代码质量、减少错误和缺陷、加快开发速度并推动良好的软件设计实践。

测试种类

1. 单元测试

测试代码中实现特定功能的部分,比如功能函数是否正确实现。

2. 集成测试

测试多个类,包,组件,子系统这些集成的模块,来验证对应的功能模块的功能是否正确实现。

3. 系统测试

应用于软件构造的最后阶段,来测试整个软件的最终版本的正确性。

如何进行软件测试

首先,我们需要确定单靠偶然测试是没有意义的,因为它很难覆盖实际应用遇到的全部用例。除此之外,基于样本的统计数据对软件测试的意义也不大,软件与硬件不同,软件产品之间往往存在着巨大的差异,并没有统计分布规律可循,因此,软件测试必须要系统化!这也反映了测试优先的编程的重要性。

测试优先的编程

简单来说,就是写代码之前先写测试。

流程:先写spec—>再写满足spec的测试用例—>根据测试用例写代码,写完后执行测试,出现错误后更改,直到通过它。

什么是spec?

spec是软件功能的规范,类似于需求文档。

  • 变量的类型
  • 返回值的类型
  • 它们之间的约束和关系
  • 程序要实现的具体功能
如何写测试用例?

测试用例的书写是基于spec的,它的基本结构为:输入+执行条件+期望结果

等价类划分

我们可以基于等价类划分来书写测试用例,根据spec中对于输入的约束,我们可以划分出有限个等价类,我们假设相同的等价类具有相似的行为,这样就可以降低测试用例的数量。

等价类的划分可以有多种形式,比如根据正负划分,根据整数的大小划分,根据输入的类型划分等等。

边界值分析

边界值分析方法是对等价类方法的补充。由于大量的错误发生在边界而非中央,所以在等价类划分时,将边界作为等价类之一加入考虑是必要的。比如,在输入整数时,我们可以将Integer.MIN_VALUE,Integer.MAX_VALUE作为等价类。

划分覆盖

刚才讨论了将输入用例划分为若干等价类,在实际测试中,我们还需要将这些等价类进行组合。

有两种方式。笛卡尔积:全覆盖 覆盖每个取值:一种等价类出现最少一次即可

有各自优点。前者:测试完备,但用例数量多,测试代价高。

​ 后者:测试用例少,代价低,但测试覆盖度未必高。

测试工具——JUnit

JUnit 是一个被广泛采用的 Java 单元测试框架。

一个JUnit是一个被@test标记的测试函数方法,它有很多库方法,比如最常用的assertEquals(x,y),用于判断期待输出和实际输出是否相等。

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值