- 一、软件测试前置知识
- 01 软件测试的定义
- 02 软件测试的意义
- 03 为什么会有软件测试岗位
- 04软件测试对象
- 二、软件测试理论
- 01软件测试的分类
- 02软件测试的基本原则
- 03软件开发模型
- 04软件测试模型
- 05软件质量模型
软件测试是指在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
02 软件测试的意义测试是为了尽可能发现更多的缺陷、预防风险,保证被测软件的质量。
03 为什么会有软件测试岗位- 目前软件系统越来越复杂,一个软件系统可能由几个甚至几十个人一起开发,单个开发可能只熟悉他所有编写的模块,对于其他有影响的模块不熟悉,容易产生错误。
- 开发自己写的代码自己不容易检查出错误,开发也有可能遗漏需求功能或者缺失异常处理,以及软件是否符合产品设计,是否符合用户情况。
- 市场竞争激烈,对软件质量要求越来越高。
软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期问各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。
二、软件测试理论 01软件测试的分类- 按阶段划分:单元测试,集成测试,系统测试,验收测试。
- 按是否运行划分:静态测试,动态测试。
- 按是否查看代码划分:黑盒测试,白盒测试,灰盒测试。
- 按是否手工执行划分:自动化测试,手动测试。
03软件开发模型原则一:测试证明软件存在缺陷
原则二:穷尽测试是不可能的
原则三:尽早介入测试
原则四:缺陷具有集群性(二八原则,即:80%的错误是由20%的模块引起的。)原则五:杀虫剂悖论(杀虫剂悖论是指测试人员一直使用相同的方法或手段去重复测试,这些测试只适用于一些有限的模块,而不是整个系统。这种测试可能很难发现bug,甚至无法发现bug。)
原则六:测试是上下文相关的(各种产品或项目包含不同的元素、特征和要求。因此,测试人员不能对不同的项目应用相同的测试方法。)
原则七:无错误谬论(软件测试不仅仅是为了找出Bug而存在的活动,而是还需要确认软件是否满足用户的期望和需求,如果产品不能满足用户的需求,即使没有出现任何缺陷,这个产品也是失败的。)
瀑布模型
优点:具有顺序性和依赖性。
缺点:惧怕需求变更。
螺旋模型
四个现象代表各项活动
(1)制定计划
(2)风险分析
(3)实施工程
(4)客户评估
优点:1、强调严格的风险分析。2、适用于规模庞大,风险大的项目。
缺点:1、软件建设周期长。 2、由于引入了非常严格的风险识别、风险分析和风 险控制 ,将会大大消耗人力,影响项目利润,风险分析将毫无意义。
快速开发模型
优点:减少由于软件需求不明确带来的开发风险。
缺点:快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。
增量模型
构件思想:
第一构件完成软件提供的基本最核心的功能
后面的增构件是为了第一构件提供服务提供功能的
优点:
1、短时间内向用户提供可完成部分工作的产品。
2、逐步增加产品功能可以使用户有时间了解和适应新产品。
3、开放结构的软件拥有的维护性明显好于封闭结构的软件。缺点:
1、容易退化为边做边改模型,从而使软件过程的控制失去整体性。
2、如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析。
04软件测试模型敏捷开发模型
敏捷模型是一种轻量、高效、低风险、更强调团队协作和沟通的开发方式,客户需求模糊或者多变。
特点:
1、强调人与人之间的沟通。
2、轻文档。
3、客户需要全程参与。
4、需求可以变化。
V模型
局限性:不能体现“测试应该尽早介入”的原则。
05软件质量模型W模型
局限性:只有上一阶段完成后,才可以开始下一阶段的活动,不能支持迭代,自发性以及变更调整。
功能性
适应性:为指定的任务或用户提供一组合适的功能的能力
准确性:提供所需精确度或相符的结果或效果的能力
互操作性:与一个或多个规定系统交互的能力
保密安全性:保护信息或数据的能力
功能性的依从性:遵守与功能性相关的标准、阅读、法规以及类似规定的能力
可靠性
成熟性:为避免由软件中错误导致失效的能力
容错性:出现故障时维持规定的性能级别的能力
易恢复性:失效发生时重建规定的性能级别并恢复受直接影响的数据的能力
可靠性的依从性:遵守与可靠性相关的标准、约定、法规的能力
易用性
易理解性:使用户理解软件是否合适以及如何将软件用于特定的任务和使用环境的能力
易学性:使用户能学习软件怎么用的能力
易操作性:是用户能操作和控制软件的能力
吸引性:吸引用户的能力
易用性的依从性:遵守与易用性相关的标准、约定、法规的能力
效率
时间特性:规定条件下,执行功能时提供适当的响应、处理时间、吞吐率的能力
资源利用性:规定条件下、执行功能时使用合适的资源数量和类别的能力
效率依从性:遵守与效率相关的标准、约定的能力
维护性
易分析性:诊断软件中的缺陷、失效原因、待修改部分的能力
易改变性:指定的修改可以被实现的能力
稳定性:避免由于软件修改造成意外结果的能力
易测试性:修改部分能被确认的能力
维护性的依从性:遵守与维护性相关的标准、约定的能力
可移植性
适应性:适用不同的指定环境的能力
易安装性:在指定环境中被安装的能力
共存性:公共环境中和其他独立软件共存的能力
易替换性:同样环境下,替换另一个相同用途的指定软件的能力
可移植性的依从性:遵守可移植性相关的标准、约定的能力
下编:用例设计方法
---持续更新,侵删----



