软件测试基础

1.软件测试基本概念

软件测试

可以从需求开始,而不仅仅是代码
既是静态活动也是动态活动
用来预防失效
有助于在软件生命周期中尽早发现问题,以降低修复缺陷所需的成本
过程中应创建可重用的测试件

测试的特点

测试是程序的执行过程,目的在于发现错误
测试是为了证明程序有错,而不是证明程序无错误
一个好的测试用例在于能发现至今未发现的错误

测试的目的

商业:回避潜在的软件错误和缺陷给软件造成的商业风险
发现当前开发工作所采用的软件工程的缺陷,修正软件开发规则
对软件质量进行度量和评估
工程性的、以发现错误为目的

测试的原则

软件测试是证伪不是证真
尽早地和不断地进行软件测试
重视无效数据和非预期使用习惯的测试
程序应该避免检查自己的程序
充分注意测试中的群集现象:二八原则:百分之八十的错误集中在百分之二十的程序中
用例要定期评审
应当对每一个测试结果做全面检查
测试现场保护和资料归档

软件质量保证

软件质量保证是贯穿软件项目整个生命周期的有计划和有系统的活动
软件质量保证与软件测试关联关系:
评价、度量、测试
软件测试是获取度量值的一种重要手段
度量值的获取主要来自软件测试

2.软件测试的分类

单元测试

编码后,编译通过后进行单元测试
白盒测试工程师或者开发工程师来做单元测试,最好不要自己做自己代码的测试
单元测试的依据:源程序(代码+注释)+《详细设计文档》
单元测试的通过标准:程序通过所有单元测试用例、语句覆盖率达到100%、分支的覆盖率达到85%
如何进行单元测试?
静态地检查代码是否符合规范
动态运行代码,检查其实际运行结果

集成测试

单元测试和集成测试在理论上可以同步进行,理论上先有单元测试

系统测试

将整个软件系统看作一个整体进行测试
黑盒测试工程师在系统集成完毕后进行测试

验收测试

阿尔法测试:由用户、测试人员、开发人员等共同参与的内部测试
贝塔测试:内侧后的公测,即完全交给最终用户测试
正式的验收测试

根据是否运行可分为

静态测试
动态测试

根据是否查看源代码

黑盒测试:
输入数据和输出数据
白盒测试:源代码和程序结构
黑盒和白盒相结合
软件的整体功能和性能:黑盒测试
软件的源代码:白盒测试

黑盒测试:
功能测试:
逻辑功能测试
界面测试UI
易用性测试
安装测试
兼容性测试
性能测试

3.软件缺陷管理

bug、副产品
软件缺陷管理,是软件质量管理的一个重要组成部分,其主要目标是确保每个被发现的缺陷都能够被有效的解决

软件缺陷的定义

符合任意一种情况即为软件缺陷:
软件未达到产品说明书中标明的功能
软件出现了产品说明书中指明不会出现的功能
软件功能超出了产品说明书中指明的范围
软件未达到产品说明书中指明应达到的目标
软件测试人员认为软件难以理解和使用、运行速度慢,或最终用户认为不好

缺陷属性

软件缺陷严重程度:严重缺陷 Citical、较大缺陷 Major、较小缺陷 Minor、轻微缺陷 Trivial、其它缺陷 Other
优先级:(缺陷必须被修复的紧急程度,容易和软件缺陷严重程度混淆)立即解决Block、高优先级High、正常排队Normal、低优先级Low
软件缺陷类别:界面、功能、性能、安全性、数据、其它
软件缺陷状态:提交、打开、已拒绝、已修复、已关闭、重新打开

4.软件质量与软件测试相关特性

软件质量特性

静态质量特性
代码:构件的、可维护的、可测试的
文档:正确的、完整的

动态质量特性

正确性可靠性完整性
一致性易用性性能

正确性:
如果软件针对其输入域/输入空间中的每个元素都如期望的那样运行,则称该软件是正确的;
并不是软件测试的目标,只是我们所追求的一个良好的愿望;
正确性是通过对程序的数学证明建立起来的;

可靠性:
定义不唯一;
定义一:软件可靠性是指软件在给定时间间隔和给定条件下无故障运行的概率。
定义二:可靠性是指软件在预期环境下无故障运行的概率。

易用性:
软件使用的难易程度

完整性:
指全部得到软件需求规格说明或者用户手册中所有功能的可能性

一致性:
指软件对常规惯例和假设的遵循程度

性能:
可以简单理解为软件完成规定任务所使用的时间

软件测试特性

复杂性
黑盒测试的复杂性:
①测试所需要的输入量太大
②测试的输出结果太多
③软件实现的途径太多
④软件规格说明没有一个客观标准
白盒测试的复杂性:
测试人员根据程序内部的结构特性,设计和选择测试用例,检测程序的每条路径是否都按照预定的要求正确地执行
①穷举路径测试不能保证程序实现符合规格说明的要求。
②穷举路径测试不可能查出程序中因遗漏路径而出现的错误。
③穷举路径测试可能发现不了有关数据的故障

经济性
软件测试的一个基本问题就是经济学问题
第一,根据程序的重要性和一旦发生故障将造成的损失来确定它的测试等级
第二,认真研究测试策略,以便能开发出尽可能少的测试用例,发现尽可能多的软件故障

5.软件测试充分性与测试停止标准

软件测试充分性

充分性就是用来度量一个给定的测试集是否能验证软件P满足其需求R
充分性度量是相对于具体的测试充分性准则C的
覆盖域
测试集的充分性评估是由一个有限集来度量,根据所依赖的充分性准则,有限集中的元素由软件需求或者代码导出。对于每一个测试准则C,我们都可以得到一个有限集,称之为覆盖域Ce。
如果覆盖域Ce仅依赖于被测软件的代码,则称准则C为一个白盒测试充分性准则;如语句覆盖、分支覆盖、路径覆盖等。
如果覆盖域Ce仅依赖于被测软件的需求,则称准则C是一个黑盒测试充分性准则。
其他的测试充分性准则都是二者的混合。
测试覆盖率
给定测试集T,覆盖标准C,覆盖域Ce,假设Ce包含n个元素(n>=0),我们说T覆盖Ce,是指对于Ce中的每一个元素e,在T中都至少有一个测试用例测试了它。
如果T覆盖了Ce中的所有元素,则称T对于C是充分的;如果T只覆盖了Ce中的k(k<n)个元素,则称T相对于C是不充分的。分数k/n代表了T对C的充分度,也称为T对于C,P以及R的覆盖率。

测试停止标准

软件消亡之前,如果没有测试结束标准,那么软件测试就永无休止。软件测试终止条件需要依据项目具体情况来制定,一般而言,其遵循以下终止准则:
①基于测试阶段的原则
每个软件都经过单元测试、集成测试、系统测试这几个测试阶段,我们可以对单元测试、集成测试、系统测试制定各自具体的测试结束标准,当每个阶段的测试结束标准都符合时,我们认为该软件达到测试停止标准。
②基于测试用例的原则
测试设计人员设计测试用例,并请项目组成员参与用例评审,一旦评审通过,就可以作为后面测试结束的一个参考标准。
③基于缺陷收敛趋势以及缺陷修复率原则
可以通过软件缺陷的趋势图的走向,来定测试是否可以结束。
缺陷修复率也是常用的一个指标,如严重级别错误和主要级别错误要100%修复,较小缺陷修复率达85%以上。
④基于验收测试的原则
即项目通过验收测试,并得到验收测试通过结论,即可结束该项目的测试活动。
⑤基于覆盖率的原则
如需求覆盖率达100%,测试用例执行覆盖率达到100%,单元测试中语句覆盖率不低于85%等这些准则在软件测试活动中都是比较常用的。
软件项目暂停或终止,则测试活动也应响应暂停或终止。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

so.far_away

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值