软件测试定义:使用人工和自动的手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的区别。 注:软件测试的目的不仅仅是为了发现错误。
软件测试的目的:
人们对软件测试的目的的认识也经历了一个过程。
20世纪60年代:证明,表明软件能够工作,测试是证明软件没有问题;
20世纪70年代:检测,发现错误;
20世纪90年代:预防,管理质量。
软件测试观念的转变:
传统测试:在开发后期介入,基于代码运行的测试,以发现错误为目的;
现在测试:已扩展到整个软件生命周期,已扩展到静态的范畴,已扩展到了错误预防的范畴。
2软件的生命周期
软件发展的历史:
软件危机的出现:60年代中期,随着软件负责度的增加,爆发了众所周知的软件危机。
软件危机的主要表现:
1.缺乏大型软件开发经验和软件开发数据积累,开发工作计划很难制定 3.不遵循开发规范,开发文档不完整,软件难以维护
4.缺乏严密有效的软件质量检测手段,交付给用户的软件质量差
软件危机的根源:
1.根据摩尔定律,硬件发展很快,相应对软件系统的期望也越来越高
2、软件系统的复杂性提高,需多人合作
3、软件开发是人的智力活动,无法用已有的产业工程方法来组织管理
解决软件危机的主要方法:
1.软件工程,研究软件生命周期的各个阶段,按照工程化的原则和方法来组织软件开发工作,是摆脱软件危机的主要出路
软件生命周期:计划、需求分析、设计、编码、测试、运行和维护
3软件研发和流程
软件研发的要素:人员、过程、工具
只有合适的人员借助合适的工具经过合适的过程才能研发出高质量的软件。
工具为人员和过程服务,起辅助作用,起关键作用的是人员和过程。
软件项目人员的组成:
分析人员、设计人员、开发人员、测试人员、配置管理人员(CMO)、软件质量保证(SQA) QA:检验产品的质量,保证产品符合客户的需求;是产品质量检查者
QC:审计过程的质量,保证过程被正确执行;是过程质量审计者
测试的主要工作:
评审SRS
制定计划和方案
编写及评审用例
搭建测试环境,准备数据
分析测试结果,编写测试报告,度量软件质量
……
测试用例:指对一项特定的软件产品测试任务的描述,体现测试方案、方法、技术和策略。 基本软件研发流程
4软件中引入缺陷的原因
软件缺陷定义:是对软件产品预期属性的偏离现象
错误:编写错误的代码,导致软件包含故障的人的行为,包含逻辑错误和语法错误
缺陷:静态存在于软件工作产品(代码、文档)中的错误,产品的异常情况
故障:软件运行中出现的状态,可引起意外情况
失效:软件运行时产生的外部异常行为结果,表现与用户需求不一致,功能能力终止,用户无法完成所需要的应用
引入缺陷的原因:
开发过程缺乏有效沟通,或没有进行沟通
软件复杂度越来越高
编程中产生错误
需求不断变更
不重视开发文档
软件开发工具本身隐藏的问题
……
缺陷的分布:(需求:56%设计27%代码7%其它10%)
导致软件缺陷的最大原因:软件产品说明书
软件缺陷产生的第二大来源:设计方案
缺陷类型:
1.遗漏,规定的或预期的需求位体现在产品中
2.错误,未将规格说明正确实现
3.额外实现,规格说明并未规定的需求被纳入产品,得到实现
1.保证信息的一致性
2.保证缺陷得到有效的跟踪,解决
3.获取正确的Bug信息,用作缺陷分析和产品度量
缺陷管理支撑工具:QC、RationalClearQuest、Bugzilla、Mantis、Jira
缺陷的相关属性:发现人、发现时间、状态、严重程度、所属版本、修改日期
缺陷的严重程度:致命、严重、一般、提示
缺陷跟踪单的写作准则(5C):准确、清晰、简洁、完整、一致