第13章——软件测试简介
13.1软件测试基本概念
13.1.1~13.1.2:
软件测试案例说明了软件测试的重要性。
13.1.3:
软件缺陷的定义:
1、软件未达到产品说明书标明的功能。
2、软件出现了产品说明书指明不会出现的错误。
3、软件功能超出产品说明书指明范围。
4、软件未达到产品说明书虽然未指出但应达到的目标,此条是抓住产品说明书上遗漏之处。
5、软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。
产生软件缺陷的原因很多:
1、软件模型或者说业务建模制定不正确,这类占了70%左右,并且难以纠正。
2、软件庞大,功能复杂。
3、编程过程出错,此类占20%左右,一般比较容易纠正。
4、个别功能要求改变而影响其他部分。
5、与要开发的软件对接的第三方软件有缺陷。
6、人为因素。
不同时期修复BUG的投入费用也不一样,越到开发后期修复BUG的成本越高。
13.1.4
软件测试原则:
1、完全测试程序是不可能的,不可能找出软件的所有缺陷。
2、软件测试是有风险的行为,风险来自于软件测试的范围,故要去粗存精。
3、测试无法显示的潜伏的软件缺陷,
4、软件缺陷都是成群出现的。
5、软件测试方法及技术要不断更新。
6、不是所有软件都能修复。
7、开发小组对于缺陷的的定义不一定一致。
8、产品不断升级导致缺陷越多。
9、软件测试员在小组不受欢迎。
13.1.5
软件出产版本已经迭代好几次
公司里是alph版本
先推出的beta版本
后面在市场上发布的是正式版。
13.2软件测试分类
白盒测试、灰盒测试、黑盒测试。分别由三个不同的角度:开发者、旁观者、用户来进行测试。
按软件测试要求可以把软件测试分为基本功能测试、全面测试和基准测试。
基本功能测试:只对软件关键功能测试。
全面测试:对软件全部功能测试,是回归测试的主要组成部分。
基准测试:通过多个相同环境的计算机的测试,测试其性能是否一致。
按软件特性可以分为功能测试和非功能测试。
13.3自动化测试
自动化测试一般在下班后进行,不需要人进行干预。
有以下优点
1、节省大量时间。
2、没有时间限制。
3、可以反复执行。
4、保证测试的一致性以及准确性。
5、有较高的功能测试覆盖率。
6、模拟操作进行压力测试。
缺点:
1、并非所有都能使用自动化。
2、没有创造性。
3、受具体项目资源限制,受人力限制。
一般自动化测试可按照:
1、编写测试用例。
2、分析、验证测试用例。
3、对已有测试用例归类,制订自动化计划方案。
4、编写自动化测试程序。
5、尽量用“数据驱动”来提高测试覆盖率。
6、将测试用例编写成自动化测试程序。
7、执行测试程序,记录并反馈BUG。
8、不断完善自动化测试系统或程序。
13.4BUG管理流程
13.4.1介绍了微软研发中心的BUG管理。
13.4.2通用的BUG管理流程
1、BUG登记——测试工程师,初始。
2、指派任务——项目经理,激活。
3、修改BUG——开发工程师,修改。
4、验证——测试工程师,通过则转第5步,否则转第2步,状态为再激活。
5、关闭——测试工程师。
13.4.3 BUG的分类
1、按缺陷状态分类。
2、按缺陷严重分类。
3、按缺陷优先级分类。
第14章 系统实现与测试过程
14.1 CMMI中对应实践
CMMI中与之对应的实践也包括了三大部分。分在在技术解决方案(Tenchnical Solution,TS)过程域、验证(Verification,VER)过程域、产品集成(Product Integration,PI)过程域。
技术解决方案(TS)过程域中对应的实践
SG3 Implement the Product Design(实现产品设计)
SP3.1 Implement the Design(实现设计)
SP3.2 Develop Product Support Documentation(建立产品支持文档)
产品集成(PI)
SG1 Prepare for Product Integration(产品集成准备)
SP1.1 Establish an Integration Strategy(建立集成战略)
SP1.2 Establish the Product Integration Environment(建立产品集成环境)
SP1.3 Establish Product Integration Procedures and Criteria(建立集成规程及准则)
SG2 Ensure Interface Compatibility(确保接口的兼容性)
SP2.1 Review Interface Descriptions for Completenss(审查接口描述的完整性)
SP2.2 Manage Interfaces(管理接口)
SG3 Assemble Product Components and Deliver the Product(装配产品组件并交付作品)
SP3.1 Confirm Readiness of Product Components for Integration(确认用于集成的产品组件准备就绪)
SP3.2 Assemble Product Components(装配产品备件)
SP3.3 Evaluate Assembled Product Components(评估已装配产品部件)
SP3.4 Package and Deliver the Product Component(打包并交付产品或产品组件)
验证(VER)
SG1 Prepare for Verification(准备验证)
SP1.1 Select Work Product for Verification (选择待验证的工作产品)
SP1.2 Establish the Verification Environment(建立验证环境)
SP1.3 Establish Verification Procedures an Criteria(建立验证规格说明)
SG3 Verify Selected Work Products(验证选定的工作产品)
SP3.1 Perform Verification(执行验证)
SP3.2 Analyze Verification Results(分析验证等级)
14.2 系统实现与测试过程简述
软件开发过程中,系统实现与测试过程至关重要。
1、实现产品组件的编码并产生相应的支持文档
2、准备产品/系统集成,确保接口兼容性,组装产品组件。
3、同时适时对产品组件进行单元测试和集成测试,实现对产品组件及集成的产品构件的验证。
不同的角色在软件开发分别担任不同的职责。
14.3编码流程
14.3.3 编码中常见问题
1、如何避免卡法阻塞?
项目经理在安排任务是要得当的分配。
2、有最好的编程语言吗?
没有,只有最适合的编程语言。
3、换用更快的计算机还是开发更快的算法?
根据“成本——收益”来决定。
4、要多用新技术和技巧吗?
开发软件是为了满足客户的需要,尽可能使用成熟的技术。
5、夜里编程效率更高吗?
一鼓作气完成效率最高。
6、如何提高团队编程的质量
组件开发团队时多一些编程老手,多一些责任心。
14.4测试流程
14.4.1单元测试
在设计阶段整个系统被分为许多的单元模块,因此要先进行单元测试来找出具体问题。
14.4.2集成测试
集成测试是单元测试的逻辑扩张,找出当许多单元结合时产生的问题。
14.5缺陷管理与改错
如果在测试发现了缺陷,开发人鱼应当尽早消除缺陷,并且需要对缺陷的全生命周期进行详细的跟踪及管理。
第15章 制定测试方案及编写测试用例
15.1 CMMI中对应实践
CMMI中VAL(Validation,确认)过程域的相关准备活动
SP1.1 Select Product for Validation(选择需要确认的产品)
SP1.2 Establish the Validation Environment(建立确认环境)
SP1.3 Establish Validation Producedures and Criteria(建立并维护确认过程和准则)
15.2 测试资料收集与整理
1、通用信息
一般信息:
公司大体情况;测试部门大体情况;周围人与事、工作环境;公司文化
技术信息:
软件类别及构成;软件的用户界面;涉及的第三方软件
2、被测软件的类别及构成
需要了解软件的类别及结构
3、被测软件的用户界面
需要了解最终用户的软件界面
测试计划要解决的重点:
1、软件及测试基本情况
2、软件目前主要存在的问题
3、软件管理流程(BUG)
4、使用的测试软件、BUG管理软件、配置管理软件
5、测试环境
6、软件产品的文件、说明
15.3检查软件说明书
充分利用说明书可以测试和找出缺陷。
15.4~15.6 测试方案的制订及测试计划书的编写要素
测试方案是软件测试的总体规划。
测试计划书的衡量标准——必须有明确的测试目标、范围和深度、具体实施方案、及测试重点;提供大体的测试进度及所需的资源(人力、物力、软件、硬件等)
测试计划内容
1、测试计划书的文件名及版本号
2、基本情况介绍
3、测试的具体目标
4、具体执行的测试类型
5、测试通过的判断标准
6、测试用例
7、测试准备工作及测试结果的处理
8、测试工作中涉及的相关事项
9、部门责任分工
10、测试人力资源分配
11、测试进度列表
12、测试工作可能面临的偶然事件及危机处理;缺陷管理流程
第16章 系统测试
16.1CMMI中对应实践
VAL过程域
SG2 Validate Product or Product Components(确认产品或产品组件)
SP2.1 Perform Validation(执行确认)
SP2.2 Analyze Validation Results (分析确认结果)
16.2系统测试简述
系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计的标准和规定。
16.3系统测试活动内容
1、用户层,主要是面向产品最终的使用操作者的测试,重点是突出从操作者角度,测试系统对用户支持的情况。
2、应用层,针对产品应用的测试,重点在系统应用的角度,模拟实际应用环境,对系统兼容性、可靠性、性能进行的测试
3、功能层、针对产品具体功能实现测试
4、子系统层,针对产品具体功能实现的测试
5、协议/指标层,针对系统支持的协议、指标的测试