· ISO:国际标准化组织(International Organization for Standardization ,ISO)
· IEEE:电气和电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE)是一个国际性的电子技术与信息科学工程师的协会
· ANSI:美国国家标准学会(AMERICAN NATIONAL STANDARDS INSTITUTE,ANSI)
· GB/T:是指推荐性国家标准(GB/T)
为什么要进行软件测试
· 软件是人写的,是人就会犯错误。
· 我们无法完全避免错误,但通过努力可尽早定位。
· 软件中的错误会给客户带来重大损失。
什么是软件测试
IEEE:用人工或自动化的手段来执行和评价系统或系统部件的过程,以检验它是否满足规定的需求,或识别期望的结果和实际的结果之间有无差别。
ANSI:使用为发现BUG所选择的输入和状态的组合而执行代码的过程。
软件测试的定义
· 测试是为了证明程序有错,而不是证明程序无错误。
· 一个好的测试用例是在于它能发现以前未发现的错误。
· 一个成功的测试是发现了以前未发现的错误的测试
测试活动价值
· 测试并不仅仅是为了找出错误,通过分析错误产生的原因和错误的发生趋势,可以帮助项目的管理者发现当前软件开发过程中的缺陷,以便及时改进;
· 这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性;
· 没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
软件测试对象
· 软件测试并不等于程序测试。软件测试应贯穿于软件定义与开发的整个期间。
· 需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象。
什么是软件缺陷
· 软件未实现需求规格说明书中要求的功能
· 软件出现了需求规格说明书指明不应该出现的错误
· 软件实现了需求规格说明书中未提到的功能
· 软件未实现需求规格说明书中虽未提及但应该实现的目标
· 软件难以理解、不易使用、运行缓慢或者——从测试人员的角度看——最终用户会认为不好
Bug与缺陷
· 软件缺陷(Defect),常常又被叫做Bug。
· 所谓软件缺陷,即为计算机软件或程序中存在的某种破坏正常运行能力的问题、错误、或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需求。
· IEEE对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。
描述软件失效的术语
· 缺点(defect)
· 偏差(variance)
· 故障(fault)
· 失效(failure)
· 问题(issue)
· 错误(error)
· 缺陷(bug)
· 异常(anomaly)
软件缺陷的级别
致命的(Fatal)
· 造成系统崩溃、宕机,或造成数据丢失、主要功能弯曲丧失等
严重的(Critical)
· 功能或特性没有实现,主要功能部分丧失,产生致命的错误声明
警告的(Major)
· 不影响系统基本使用,,但没有很好的实现需求,未达到预期效果
建议(Suggestion)
· 测试人员提出的建议或质疑。
软件缺陷产生的原因
· 技术问题
1.算法错误、语法错误、计算精度问题
2.系统结构不合理、算法选择不科学,造成性能低下
3.接口参数传递不匹配,导致模块集成出现问题
· 团队工作
1.需求理解不清,与用户沟通存在困难
2.项目组内部沟通存在问题
· 软件本身
1.文档错误、内容不正确或拼写错误
2.未考虑大数据量、数据边界、数据备份、灾难恢复等问题
3.硬件或系统软件错误,软件开发标准或过程错误
软件测试能做什么
· 是将已觉察的软件出现故障的风险程度减小到一个可接受的值
· 发型软件中残存的bug
· 为软件质量的评价提供支持
· 为软件开发过程的改进提供帮助
· 一种有效的软件工程验证与确认方法
测试原则
· 所有的测试应该源于用户需求
· 测试是一个持续进行的过程,而不是一个阶段
· 测试必须被计划、被控制,并且被提供时间和资源
· 测试应当分级别,有重点
· 测试是不可能穷尽的,当测试出口条件满足时,就可以停止测试
· 为了保证测试有效性,应采用独立第三方测试
· 即测试软件应该做的也检查软件不该做的
· 测试自动化能解决一部分问题,但不是全部
· 测试中的20 - 80 规律
· 测试人员应公正的测试,如实记录和报告缺陷
关于需求
· 需求是指明必须实现什么的规格说明。它描述了系统的行为、特征或属性,是在开发过程中对系统的约束
· 需求可以通过质量特性来表述
满足需求就是应满足:
· 明示的(如合同、规范、标准、文件中明确规定的)
· 隐含的(如组织的惯例、一般习惯)
· 必须执行的(如法律、法规、行业规则)
软件质量定义
· ISO的质量定义:一个石头的所有特性,基于这些特性可以满足明显的或隐含的需要
· 软件质量特性(ISO8402:1986 GB/T 6583)
· 功能性
· 可靠性
· 易用性
· 效率
· 维护性
· 可移植性
外部质量和内部质量
· 功能性
1.适合性
2.准确性
3.互用性
4.保密性
5.功能性的依存性
· 可靠性
1.成熟性
2.容错性
3.易恢复性
4.可靠性的依存性
· 易用性
1.易理解性
2.易学性
3.易操作性
4.吸引性
5.易用性的依存性
· 效率
1.时间特性
2.资源利用性
3.效率的依存性
· 可维护性
1.易分析性
2.易变更性
3.稳定性
4.易测试性
5.可维护性的依存性
· 可移植性
1.适应性
2.易安装性
3.共存性
4.可替换性
5.可移植性的依存性