南京大学软件测试复习

BugStory

• Software Fault : A static defect in thesoftware (i.e., defect),静态存在于软件中的缺陷,如code写错了

• Software Error : An incorrect internalstate that is the manifestation of some fault,软件运行时,运行到fault触发产生错误的中间状态。

• Software Failure : External, incorrectbehavior with respect to the requirements or other description of the expected behavior,Error传到软件外部,使得用户或测试人员观测到失效的行为。

 

Fault:

可能导致系统或功能失效的异常条件(Abnormal condition thatcan cause an element or an item to fail.),可译为“故障”。

Error:

计算、观察或测量值或条件,与真实、规定或理论上正确的值或条件之间的差异(Discrepancybetween a computed, observed or measured value or condition and the true,specified, or theoretically correct value or condition.),可译为“错误”。Error是能够导致系统出现Failure的系统内部状态。

Failure:

当一个系统不能执行所要求的功能时,即为Failure,可译为“失效”。(Termination ofthe ability of an element or an item to perform a function as required.)

 

PIEModel

1. Execution/Reachability : The location orlocations in the program that contain the fault must be reached,执行必须通过错误的代码

2. Infection : The state of the programmust be incorrect ,在执行错误代码时必须触发一个错误的中间状态

3. Propagation : The infected state mustpropagate to cause some output of the program to be incorrect,错误的中间状态必须传播到最后输出,使得观测到的输出结果和预期结果不一致,即失效。

 

产生fault的程序,可能在测试时不会触发错误的中间状态;同理,触发错误的中间状态可能不会使测试人员观察到失效的行为。

 

有没有一个fault,任何测试都不会将其测试出来?这样还能称之为fault吗?

有这样的faul

 

Terminology

测试是为了发现bug,通过实施测试和观察failure

debug是为了解决bug,通过定位,理解和修复fault

 

Validation

“The assurance that a product, service, orsystem meets the needs of the customer and other identified stakeholders. Itoften involves acceptance and suitability with external customers.”

Verification

“The evaluation of whether or not aproduct, service, or system complies with a regulation, requirement,specification, or imposed condition. It is often an

internal process.”

 

Verification是验证,是通过提供客观证据证明规定的要求是否得到满足,也就是说,输入与输出比较.

Validation是确认,是在验证好的基础上,对预期的使用和应用要求是否得到满足,也就是说,在确认时,应考虑使用和应用的条件范围要远远大于输入时确定的范围.一般是由客户或代表客户的人执行.

Verification也就是说要做正确、而Validation是看经过Verification是否是我们想要的。

而Validation首先前提是经过Verification,重要的是做的是否是customer需要的。

 

黑盒测试,通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

 

白盒测试,又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。

 

灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。

 

测试等级:

系统测试,System testing

集成测试,Integration testing

模块测试,Module testing

单元测试,Unit testing

 

FaultRevisit

Fault is defined by testing! 故障是通过测试定义的

 

自动化软件测试 Automatic software testing

测试用例生成

测试数据生成

测试用例选择

•Regression Test Selection

•针对修改部分的测试

• Test Suite Reduction

•针对测试需求的用例集约简

• Test Case Prioritization

•针对测试需求的用例排序

软件行为学习

测试用例修复

测试用例演化

 

Junit

Junit测试时程序员测试,即所谓白盒测试

集成TestCase类即可利用junit测试

需要知道程序结构以及逻辑

设计不同的测试输入以及输出语言

尽可能覆盖多的语句以及分支

 

测试的技巧

1.     大量测试数据

2.     典型错误类型

3.     强制产生错误条件

 

CFG Generator 观测结构

CFG——Control FlowGraph 控制流图

观察程序的控制流走向

 

CodeCover

用来统计测试覆盖率,支持多种覆盖(包括语句覆盖,分支覆盖,MCDC覆盖等)

 

CFG

Test Path: A path that starts at an initialvertex and ends at a final vertex

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值