02 MDTD

Complexity of Testing Software

  • the term correctness has no meaning
  • Instead considering reliability, safety, maintainability, security, and efficiency

关于正确性

  • 更多是用来描述古典科学

    • 数学模型正确
    • 。。。。
  • Better viewpoint: a relative term — program P is correct with respect to specification S.(软件测试的对于正确的描述)

  • Bottom Line: Do the specification and the program meet the customer/user’s expectations?

程序的行为空间

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y1uP1y93-1583717773051)(F:\WHU\大三(下)\我\软件测试技术\课件\chapter2\image-20200224081833403.png)]

说明中有的,但是程序中 未实现叫作缺陷故障,程序实现的,但是并不在预期范围的,叫作过失故障

我们需要测试正确性的部分,是S和P相交的部分,我们希望S和P的交集越大越好

规定行为、实现行为和测试行为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ty7HQy1B-1583717773052)(F:\WHU\大三(下)\我\软件测试技术\课件\chapter2\image-20200224082037206.png)]

目标范围是1的范围,程序说明中说明了,程序也实现了,测试时也测试了1,我们需要尽量扩大1的范围

左为基于规格说明的测试,右为基于代码的测试

基于规格说明的测试:

基于规格说明不需要知道它的具体实现,只考虑是否实现了预期目标。(黑盒测试)

经典测试类型:

  • Boundary Value Testing(基于边界值的测试)
  • Equivalence Class Testing(基于等价类的测试)
  • Decision Table-based Testing(决策表的测试)

优点:

  • 测试与具体实现方法无关(更改实现方法后,测试用例依然可以用)
  • 测试与开发并行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N7JZ0ouf-1583717773053)(F:\WHU\大三(下)\我\软件测试技术\课件\chapter2\image-20200224082631352.png)]

A对于1的测试范围更大,但是冗余范围更大?(猜测)

附:从图中可以看出,基于规格说明的测试方法只会在规格说明的范围内,不会超出这个范围

基于代码的测试(Code-based testing)

也叫做结构化测试、白盒测试、玻璃盒测试

包括:

  • 基于图的测试
  • 基于数据流的测试
优点:
  • 有很强的理论基础
  • 允许定义和使用测试覆盖指标
  • 能够明确地表示 软件被测试程度

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vr6bblE3-1583717773053)(F:\WHU\大三(下)\我\软件测试技术\课件\chapter2\image-20200224083055228.png)]

测试方法A更好。

附:基于代码的测试方法只会在代码范围内,而不会超出范围,因为压根不知道规格说明是什么

两种测试方法的比较

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k1162PDK-1583717773053)(F:\WHU\大三(下)\我\软件测试技术\课件\chapter2\image-20200224083205270.png)]

黑盒测试是建立可信度,白盒测试则是为了寻找代码故障

如果程序做了不该做的事情,spec-based无法测试出来。

如果有些行为规定了,但是没有实现,黑盒测试没法测出来

要将两种测试方法结合起来

软件测试基础

测试只能找到失效的存在,如果测试通过,不能说明没有失效

Testing & Debugging

  • 测试:通过观察软件的执行以评估软件
  • Test Failure 测试失效: 执行测试用例后导致软件 失效
  • 调试:在软件失效的情况下,寻找软件故障的过程

故障与失效模型(RIPR)

Four conditions necessary for a failure to be observed

  • Reachability 可达 测试用例必须要到达故障相应的代码(测试用例跑不到故障代码)
  • Infection 影响 故障执行以后必须导致一个不正确的状态
  • Propagation 传播 导致的不正确的状态必须要传到output这里来
  • Reveal 揭示 必须要被观察到(比如观察的值是a, b, c,但是出错的值是d,则此时无法观察到)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L0Csbn21-1583717773054)(F:\WHU\大三(下)\我\软件测试技术\课件\chapter2\image-20200309090152534.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-no2HiLE5-1583717773054)(F:\WHU\大三(下)\我\软件测试技术\课件\chapter2\image-20200309091126939.png)]

经典:执行故障:代码运行到错误的地方

​ 产生错误状态:与原来运行的状态不一样(中间变量值不同等等)

Traditional Testing Levels:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Aut9YqcD-1583717773055)(F:\WHU\大三(下)\我\软件测试技术\课件\chapter2\image-20200224092059246.png)]

  • unit testing 每个方法测试清楚
  • Module testing 将每个模块(C的文件 java的类)测试清楚
  • Integration testing 集成测试 每个单元之间的交互、通信、调用的测试清楚
  • System testing 系统测试
  • Acceptance testing 验收测试

Object-Oriented Testing Levels:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A0Dtqf35-1583717773055)(F:\WHU\大三(下)\我\软件测试技术\课件\chapter2\image-20200224092648868.png)]

Coverage Criteria 覆盖准则

即便是一个很小很小的程序,它也具有太多种输入方式才能够完全测试到

比如对于一个算均值的函数,有三个输入值A,B,C,对于A,B,C有很多很多的值,几乎无法穷尽

覆盖准则的作用
  1. 使用最少的输入发现最多的问题
  2. 给了测试者一种结构化可实现的方式去
    1. 完全搜索输入域
    2. 判断在测试中没有更多的情况

覆盖准则的优点

测试需求和准则

  • 测试需求:测试用例必须满足或覆盖的软件工件的指定元素
  • 覆盖准则:一条或一组生成测试需求的原则

覆盖准则就是指:测试需要以什么样的原则去覆盖(覆盖每个语句?每个路径?每个需求?)

而测试需求就是指:在这个原则下,需要覆盖的那些对象

  1. 完全搜索输入域
  2. 判断在测试中没有更多的情况

覆盖准则的优点

测试需求和准则

  • 测试需求:测试用例必须满足或覆盖的软件工件的指定元素
  • 覆盖准则:一条或一组生成测试需求的原则

覆盖准则就是指:测试需要以什么样的原则去覆盖(覆盖每个语句?每个路径?每个需求?)

而测试需求就是指:在这个原则下,需要覆盖的那些对象

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值