哈工大软件构造2022笔记(持续更新----2)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本系列文章均为作者原创,如果感兴趣或者有疑问请及时联系作者。


class 3

从这节课开始,我们就要开始对编程进行要求了,本课程使用的编程语言为java语言。

这节课内容不多,多作为了解内容,主要可以分为十个部分:
图片来自于
在上图中,我们可以简单地了解到,测试的手段是多种多样的,我们不需要掌握所有技术,最重要的是根据需求使用最合适的方法。

1 Software Testing

测试:提高软件质量的重要的手段

残留缺陷率:软件发布后遗留的错误(bugs left over after the software has shipped)

测试的层次结构:
单元测试(a specific section of code)
集成测试(classes, packages, components, subsystems)
系统测试(a completely integrated system)
回归测试(回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误)

2 Test Case

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

3 Test-First Programming

测试优先的编程:写代码 -> 执行测试 ->修改代码 ->修改代码用例(循环直到通过)

4 Unit Testing

Unit Testing 单元测试:
针对代码中各个互相分隔的代码块进行测试,容易定位和修改

测试时需要:为测试某个“模块”建立一个模块可以运行的“环境”

5 Automated Unit Testing with JUnit

使用 JUnit 包进行自动化单元测试:Java 很早就引进了TDD方式,并为其提供了开发包 Junit。

一个正式的编写好的单元测试用例的特点是:已知输入和预期输出,即在测试执行前就已知。已知输入需要测试的先决条件,预期输出需要测试后置条件。

每一项需求至少需要两个单元测试用例:一个正检验,一个负检验。如果一个需求有子需求,每一个子需求必须至少有正检验和负检验两个测试用例。

关于JUnit的使用,有一些知识点:

测试方法必须使用 @Test 修饰
测试方法必须使用 public void 进行修饰,不能带参数
一般使用单元测试会新建一个 test 目录存放测试代码,在生产部署的时候只需要将 test 目录下代码删除即可
测试代码的包应该和被测试代码包结构保持一致
测试单元中的每个方法必须可以独立测试,**方法间不能有任何依赖**
测试类一般使用 Test 作为类名的后缀
测试方法使一般用 test 作为方法名的前缀

JUnit详细使用方法:https://www.w3cschool.cn/junit/2wjx1hvc.html

6 Black-box Testing

黑盒测试:用于检查代码的功能,不关注内部实现的细节

基于等价类的测试:将输入域划分为等价类,从每个等价类中导出测试用例(导出的测试用例需要能够代表这个等价类)。

基于边界检查的测试:边界检查是对等价类测试的补充,避免细节影响程序的正确性。

7 White-box Testing

白盒测试:相比于黑盒测试,白盒测试需要关注程序内部实现的细节,一般白盒测试进行的时间较早。

比较经典的白盒测试的方法称为“独立/基本路径测试”:对程序执行路径进行等价类划分,找出有代表性的最简单路径,使得每条基本路径被至少覆盖一次。

8 Coverage of Testing

代码覆盖度:已有的测试用例覆盖了多少被测试代码(通常用百分比描述)

覆盖的种类多种多样:
函数覆盖:覆盖了多少函数?
语句覆盖:覆盖了多少语句?
分支覆盖:覆盖了每个分支的每个方向?(if \ while \switch-case\for)
条件覆盖:覆盖了每个条件判断的两种可能?(if \ while \ for \ switch-case)
路径覆盖:覆盖了多少程序执行的路径?

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

然而,由于实际情况中想要覆盖所有路径代价巨大,因此,往往是根据需求逐步增加测试用例,直到达到预先确定的标准。

在Eclipse 中的 EclEmma工具可以有效地对代码进行测试

9 Automated Testing and Regression Testing

自动化测试和回归测试:
自动化测试意味着自动运行测试并自动检查其结果
回归测试意味着在修改代码之后再次进行测试

关于回归测试:
发现bug之后,要立即编写能够重现该bug的测试用例,并将其添加到你的测试用例库中

10 Documenting Your Testing Strategy

记录你的测试策略(根据什么来选择测试用例)非常重要,以便于他人理解你的测试用意,并评判你的测试是否充分。

class 3 总结

§ 测试优先编程。 在编写代码之前编写测试。
§ 系统地选择测试用例的分区和边界。
§ 白盒测试和用于填写测试套件的语句覆盖率。 
§ 尽可能独立地对每个模块进行单元测试。
§ 自动回归测试以防止错误再次出现。
§ 远离错误。 测试是在你的代码中发现错误,而测试优先编程是在你引入它们之后尽早发现它们。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值