一、 软件测试基础
1. 测试的定义:
(1) 通过人工或者自动的手段,对测试对象进行检测的活动,目的在于发现北侧对象是否实现了用户的需求,或弄清实际结果与预期结果之间的差异。
(2) 需要理解什么软件:
a) 源代码
b) 用户手册
c) 配置数据
2. 测试的目的:
(1) 发现被测对象与用户需求之间的差异—俗称bug
(2) 通过测试活动发现并解决缺陷,增加人们对被测对象质量的信心
(3) 通过测试活动,获取被测对象的质量信息,为决策提供数据依据
(4) 通过测试活动,预防缺陷,从而降低项目或者产品的风险
3. 测试的原则:
(1) 测试证明软件存在缺陷
(2) 不可执行穷尽测试(即值测试过程中要覆盖所有的测试点、测试场景)
(3) 测试应该尽早启动,尽早介入
(4) 缺陷存在集群现象
(5) 杀虫剂悖论(要随时根据产品的情况,更新测试用例,保证测试用例的有效性)
(6) 不同的测试活动依赖不同的测试环境
(7) 不存在缺陷的谬论
4. 测试对象:
(1) 软件源代码
(2) 与软件源代码匹配的文档
(3) 支撑软件源代码运行的配置数据
(4) 需求阶段
a) 需求文档:测试需求文档是否正确实现了用户的需求
(5) 系统设计阶段:
a) 概要设计文档
b) 详细设计文档
c) 是否有设计上或逻辑上的错误
(6) 编码阶段:
a) 测试源代码:发现编程上的错误
(7) 系统测试阶段:
a) 被测对象是否满足用户需求
二、 软件测试级别:
1. 单元测试
(1) 针对被测系统的最小组成单元实施测试活动,一般是类或者函数,也有可能是最小的功能单元
2. 集成测试
(1) 针对组件/单元与组件/单元之间的接口实施测试活动,验证接口设计是否与设计相符
(2) 分成3种集成
a) 函数间集成
b) 模块间集成
c) 子系统间集成
3. 系统测试
(1) 将通过集成测试的软件,部署在真实的用户环境下测试
4. 验收测试
(1) 以用户为主的测试,验收组应该由项目组成员、用户代表组成。
(2) α测试:
a) 由用户在开发环境下执行测试活动,开发者在测试人员身边,发现问题及时解决问题
b) 在受控环境下执行测试
(3) beta(β)测试:
a) 开发者不在测试人员身边,发现问题由专人统一收集,再由研发人员进行修改
b) 在不受控的环境下执行测试
(4) UAT测试:用户接受度测试
a) 一般商业用户验证系统可用性的测试
三、 软件测试的类型
1. 功能测试
(1) 指定使用条件下,使用被测对象,验证其是否满足用户的显性或隐性需求
(2) 测试关注点:
a) 是否有不正确或遗漏或多余的功能
b) 满足系统显性或隐性的需求
c) 是否对输入输出做出了正确的响应,输出结果能否正确的显示
2. 性能测试:
(1) 通过模拟被测对象运行业务压力或者使用场景,验证被测对象是否满足预先设定的性能指标
(2) 验证系统是否具有宣称的能力
(3) 了解测试系统典型场景,并具有确定的性能目标
(4) 要求在真实环境下实施
3. 安全性测试:
(1) 测试被测系统的安全保护系统不受非法入侵,能够接受正确授权操作
4. 兼容性测试:
(1) 验证被测对象在不同的操作系统、硬件信息等环境下的运行情况
四、 软件测试的方法
1.黑盒测试:不关注被测对象的内部结构,仅从用户需求角度考虑,是否满足用户的显性或隐性需求
2.白盒测试:结构测试、逻辑驱动测试
3.灰盒测试:即关注被测对象的外部特性,又关注其内部设计
4.静态测试:不执行被测对象程序,不运行被测对象的测试方法
5.动态测试:执行被测对象,运行检测活动
6.手工测试:通过测试工程师试用,验证被测对象是否满足用户需求
7.自动化测试:通过自动化测试工具或脚本语言自动化完成测试过程
五、 软件测试质量
1.质量的定义:
(1) 质量是物体本身的属性,物体的质量与物体的形状、物态及其所处的空间位置无关,质量是物体的一个基本属性
(2) 软件产品满足用户或规定的显性或隐性需求的程度
(3) 内部质量
(4) 过程质量
(5) 外部质量
(6) 使用质量
2.质量的特性:
(1) 功能性
a) 定义:软件在指定条件下使用时,满足用户明确和需求的功能的能力
b) 适用性:软件为指定的任务和用户目标提供一组适合的功能的能力
c) 准确性:软件提供具有所需精确度的正确或相符的结果或效果的能力
d) 互操作性:软件与一个或更多的规定系统进行交互的能力
e) 保密安全性:软件保护信息和数据的能力,已使未授权的人员或系统不能阅读或修改这些信息和数据,而不拒绝授权人员或系统对它的访问。
f) 功能性依从性:软件遵循与功能性相关的标准、约定或法规以及类似规定的能力。这些标准要考虑国际标准、国家标准、行业标准、企业内部规范等
(2) 可靠性
a) 定义:软件在指定条件下使用时,维持规定的性能级别的能力
b) 成熟性:软件为避免因软件中错误而导致失效的能力
c) 容错性:在软件出现故障或者违反指定接口的情况下,软件维持规定性能级别的能力
d) 易恢复性:在失效发生的情况下,软件重建规定的性能级别并回复受直接影响的数据的能力
e) 可靠性依从性:软件遵循与可靠性相关的标准、约定和法规的能力。
(3) 易用性:
a) 定义:在指定条件下使用时,软件被理解、学习、使用和吸引用户的能力
b) 易理解性:软件使用户能理解软件是否合适,以及如何能将软件用于特定的任务和使用环境的能力
c) 易学性:软件使用户能学习其应用的能力
d) 易操作性:软件使用户能操作和控制它的能力
e) 吸引性:软件吸引用户的能力
f) 易用性依从性:软件遵循与易用性相关的标准、约定、风格指南或法规的能力,这些标准要考虑国际标准
(4) 效率:
a) 定义:在规定条件下,相对于所有资源的数量,软件可提供适当性能的能力
b) 时间特性:在规定条件下,软件执行其功能时,使用适合的资源数量和类别的能力
c) 资源利用性:在规定的条件下,软件执行其功能时,提供适当的响应和处理时间以及吞吐率的能力
d) 效率依从性:软件遵循与效率相关的标准或约定的能力
(5) 可移植性
a) 定义:软件从一种环境迁移到另一种环境的能力
b) 适应性:软件无需采用有别于为考虑该软件的目的而准备的活动或手段,就可能适应不同指定环境的能力
c) 易安装性:软件在指定环境中被安装的能力
d) 共存性:软件在公共环境中同于其分享公共资源的其他独立软件共存的能力
e) 易替换性:软件在同样的环境下,替代另一个相同用途的指定软件产品的能力
f) 维护性依从性:软件遵循与维护性相关的标准或约定的能力
(6) 可维护性
a) 定义:软件可被修改的能力。修改可能包括修正,改进或软件对环境、需求和功能规格说明变化的能力。
b) 易分析性:软件诊断软件中的缺陷、失效原因或识别待修改部分的能力
c) 易改变性:软件使指定的修改可以被实现的能力。
d) 稳定性:软件避免由于软件修改而造成意外结果的能力
e) 易测试性:软件使已修改软件能被确认的能力
f) 维护性依从性:软件遵循与移植性相关的标准或约定的能力
原文地址:http://www.cnblogs.com/MickeyHacker/p/7657045.html