软件构造笔记3

本文详细介绍了软件测试的重要性,测试的层次包括单元测试、集成测试、系统测试和验收测试,强调了测试用例的设计原则。此外,还讨论了测试优先编程、JUnit自动化测试、黑盒测试和白盒测试的概念。同时,提到了覆盖测试的多种度量标准以及自动化测试与回归测试在软件开发中的作用。
摘要由CSDN通过智能技术生成

软件测试与测试优先的编程

本节课重点
本节目录

1. Software testing

提高软件质量的重要手段

  • 软件测试确认软件是否达到可用级别, 关注系统的某一侧面的指令特性。但即便是最好的测试也不能确保程序100%无错误。

  • 我们使用残留缺陷率(测试后每1000行代码中的错误)

    • 典型工业软件:1-10
    • 高质量验证:0.1-1
    • 非常好,严格安全性的验证:0.01-0.1 如NASA或者Praxis公司。
  • 软件构造的特征

    • 与其他软件的活动目标相反,目的是证错与破坏。
    • 再好的测试也无法证明系统里没有错误。
  • 好的测试的特性

    • 能发现错误
    • 不冗余
    • 最佳特性,最佳方案
    • 别太复杂也别太简单
  • 测试的层次

    • 单元测试:测试函数与一些类
    • 集成测试:把来自多个开发者的、多个功能的组件放在一起,形成包或者组件或者子系统,并对其进行测试
    • 系统测试:将所有的子系统构建成一个系统,对其进行测试
    • 用户也会进行测试,这就是验收测试。
    • 当在测试中发现错误,就要进行修改,修改后还要进行测试,这就是回归测试
      其他的一些测试
  • 静态测试与动态测试

    • 静态测试是指测试中不执行程序,分析代码结构或者由编译器检查语法与数据流分析,如review、walkthrough、inspection
    • 动态测试需要把程序运行起来,输入测试用例,通过结果判定是否存在缺陷。动态测试可以在程序开发前期进行,因此需要打桩模块和驱动模块,或者通过调试器。
    • 静态测试不执行程序,动态测试执行。
  • 测试与调试的区别

    • 测试是发现是否存在错误,调试是识别错误根源,消除错误。
      在这里插入图片描述
  • 白盒测试与黑盒测试

    • 白盒测试对程序内部代码进行结构测试,与程序代码是一致的。黑盒测试对程序外部表现行为进行测试,无法得知代码。
  • 为什么软件测试是困难的

    • 不可能用穷举与暴力的方法实现软件测试
    • 靠偶然测试没有意义。这种方法不太可能发现错误。
    • 基于样本的统计数据对软件测试意义不大,对于某些硬件适合。
    • 软件行为在离散输入空间中差异巨大。
      • 软件可能大多数情况下正确,少数点出错。
      • bug的出现往往不符合特定概率分布。
    • 软件没有统计分布规律可循。错误可能突然出现。
  • 软件测试的心态

    • 学会对自己的代码暴力些, 作为测试人员,应该要学会让代码“尽快出错”

2. test case

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

在满足条件的情况下,输入测试用例,得到结果后与期望结果进行比对,查看是否满足条件。
在这里插入图片描述

  • 测试的流程
    • Write Test Cases
    • Organized Test Cases
    • Execute Test Cases
    • Get Status and Report
  • 好的测试用例的特征
    • 最可能发现错误
    • 不重复、不冗余
    • 最有效
    • 既不简单也不复杂

3. 测试优先编程

写代码之前先写测试

  • Tips
    • 早测试, 多测试
    • 不要把测试放在最后,测试会很复杂
    • 测试代码比写代码更有成就感
  • Process
    • 先写specification
    • 在写符合spec的测试用例
    • 写代码、执行测试、有问题再改、再执行测试用例、直到通过它
      在这里插入图片描述
      写测试用例,就是理解、修正、完善你的spec的设计的过程。
      测试规约也有可能是buggy的。
      在这里插入图片描述
      在这里插入图片描述

4. Unit Testing单元测试

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

5. JUnit自动化测试

在这里插入图片描述
JUnit使用时需要加入Classpath。
Junit用@Test标记被测方法。
在这里插入图片描述
注意事项

  • 变量顺序很重要,第一个变量应该是期望的结果,第二个是实际结果,所有JUnit支持的断言检测都是期望在前,实际在后。
  • 如果断言失败,立刻返回,JUnit记录错误。
  • 测试类中可以包括任意个测试方法,运行独立。
  • 即使一个运行失败,其他的也仍然会运行。
  • 在这里插入图片描述
    初始化与清理
    assertThat
    在这里插入图片描述

6. Black-box Testing 黑盒测试

在这里插入图片描述
三格交叉就是程序规约要求的,且测试实现的

6.1 划分

等价类划分
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
边界值分析
共49个划分

6.2 Include BoundAries in the Partition

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7. White-box Testing

在这里插入图片描述
在这里插入图片描述
基本流程
分析用到了哪些代码
在这里插入图片描述

  • 确保程序中每个独立路径都执行一次
  • 每个逻辑判断的真值都测试
  • 所有循环的边界与内部
  • 内部数据结构的可靠性

8. Coverage Testing覆盖测试

在这里插入图片描述
较高覆盖度,则会执行较多代码,更有可能发现错误。可用不同的方法衡量覆盖度,比如程序中子程序执行的百分比是多少,或者是被调用程序百分比。
在这里插入图片描述
在这里插入图片描述

  • 函数覆盖,是否程序中每条函数都被覆盖
  • 语句覆盖,是否每一条语句的运行都被覆盖
  • 分支覆盖,每个分支结构是否都被执行一次
  • 条件覆盖,程序中所有逻辑覆盖的地方,真假值都被执行一次
  • 路径覆盖,是否程序中所有的路径都被覆盖一次

在这里插入图片描述
100%语句覆盖率是理想追求,但是通常很难实现。比如assertion,不应该进行到这里。
100%分支覆盖是理想的目标。
100%路径覆盖是最好的,但是也是最难实现的。
在这里插入图片描述
高版本eclipse内置。右键,coverage as、

9. 自动化测试与回归测试

在这里插入图片描述
在这里插入图片描述

10. 测试策略的文档撰写

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

课堂笔记

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值