软件测试理论基础
p Validation: Are we building the right product? 是
否构造了正是用户所需要的软件?即是否正在做正确的事 。验证产品所实现的功能是否满足用户的需求
主动测试和被动测试
p
主动测试方法:测试人员主动向被测试对象发送请求、或借助数据、事件驱动 被测试对象的行为,从而验证被测试对象的反应或输出结果
p p
将需求和设计的评审纳入测试的范畴,可看作是广义测试 静态测试包括对软件产品的需求和设计规格说明书的静态分析的查错和分析功能是其他方法所不能替代的,可以采用 人工检测和计算机辅助静态分析手段进行检测,但越来越多地采 用工具进行自动化分析
p
动态测试是通过真正运行程序发现错误,通过观察代码运行过程 ,来获取系统信息,对系统行为进行验证。
评审的形式和方法
p
互为评审 (Peer review)
p 轮查 (Pass-round) p 走查 (walk-through) p 会议评审 (Inspection)
最不正式的
最正式的
临时评审
轮查
走查
互为评审 同行评审
评审
评审分类
p 管理评审 p 技术评审 p 文档评审 p 流程评审
需求和设计审查
任何程序、系统中的问题,和产品设计书 的不一致性,不能满足用户的需求
软件缺陷的定义
缺点(defect) 谬误(fault) 偏差 (variance) 失败 (failure)
问题(problem)
错误(error ) 异常(anomy)
矛盾(inconsistency)
毛病 (incident )
在商业过程中有关的质量内容:
培训、成品制作、宣传、发布日起、客户、风险、成本、业务等
(https:///gaochundong/p/software_quality_models. html)
产品质量的标准
- 功能性 Functionality - 可用性 Usability - 可靠性 Reliability - 性能 Performance - 容量 Capacity
p
被动测试方法:测试人员不干预产品的运行,而是被动地监控产品在实际环境
中运行,通过一定的被动机制来获得系统运行的数据,包括输入、输出数据.
黑盒测试方法和白盒测试
客户需求
结构测试
逻辑驱动测试
输出
输入
事件驱动
功能测试 数据驱动测试
黑盒测试方法和白盒测试
一个微软测试工程师的一天
a) b) c) d) e)
缺陷成本
什么是质量?
软件质量的内涵
IEEE: 质量是系统、部件或过程满足 ① 明确需求
②
p
客户或用户需要或期望的程度不同
软件质量:软件产品具有满足规定的或隐含要求能力要 求有关的特征与特征总和(ISO 8492) 软件质量:软件产品满足
p
使用要求的程度
软件质量的内涵
为了能够在产品发布前,对产品质量能够做出比较 准确的判断,需要清楚质量的属性,这就需要建立 质量模型产品质量
p 文档错误、用户使用场合(user scenario),
p 时间上不协调、或不一致性所带来的问题 p 系统的自我恢复或数据的异地备份、灾难性恢复等问题
软件缺陷的构成
其他 6% 代码 15%
规格说明书 54%
设计 25%
在真正的程序测试之前,通过审查、评审会可以发现更多的缺陷。 规格说明书的缺陷会在需求分析审查、设计、编码、测试等过程中会 逐步发现,而不能在需求分析一个阶段发现
可靠性测试、安全性测试和兼容性测试等
p 根据测试过程中被测软件是否被执行,分为静态测试和
动态测试
p 根据是否针对系统的内部结构和具体实现算法来完成测
试,可分为白盒测试和黑盒测试
静态测试和动态测试
主持人 内审员 作者 列席人员 技术专业人员
记录员
用户代表
不正式
正式
轮查
互审
走读
审查会议
静态测试和动态测试
软件缺陷的定义
Any problem/disfigurement/limitation in product design & development Feature or function can’t work Unreasonable design Partly realization in function Data error Run error Limitation in features Difference between actual results and expected results Unfriendly UI, Low performance Others
p 测试用例(Test Case)是将软件测试的行为活动做一科
学化的组织归纳,目的是能够将软件测试的行为转化成可 管理的模式;同时测试用例也是将测试具体量化的方法之 一,不同类别的软件,测试用例是不同的。不同于诸如系 统、工具、控制、游戏软件,管理软件的用户需求更加不 同的趋势。
一个好的用例的表述要点,即用例中应当包含的信息 一个优秀的测试用例,应该包含以下信息: 1) 软件或项目的名称
2018
软件测试理论基础
汇报人: 汇报时间:2018 年 1月
(一)绪论
(1) 测试用例及测试用例的设计 (2) 软件测试的方法 (3) 软件质量的保证和软件测试 (4) 大量软件的测试策略
回顾
① 什么是软件测试
② 软件测试的正反两面性
p p
验证软件 发现缺陷
p
V&V
① 软件测试和开发的关系 ② TDD
软件缺陷
p p p p
功能、特性没有实现或部分实现 设计不合理,存在缺陷 实际结果和预期结果不一致
运行出错,包括运行中断、系统
崩溃、界面混乱 数据结果不正确、精度不够 用户不能接受的其他问题,如存
p p
取时间过长、界面不美观
软件缺陷的产生
① 技术问题 算法错误,语法错误,计算和精度问题,接口参数传递不 匹配 ② 团队工作 沟通不充分,误解 ③ 软件本身
9) 步骤号、操作步骤描述、测试数据描述
10) 预期结果(这是最重要的)和实际结果(如果有BUG管理工具, 这条可以省略) 11)开发人员(必须有)和测试人员(可有可无) 12)测试执行日期
测试用例的模板
测试用例的优点
p p p
测试用例是测试人员在测试过程中的重要参考依据 测试用例将有助于节约测试时间,提高测试效率。 良好的测试用例不断地被重复使用,使得测试过程事半 功倍
测试用例的规范要求
2) 软件或项目的版本(内部版本号)
3) 功能模块名 4) 测试用例的简单描述,即该用例执行的目的或方法 5) 测试用例的参考信息(便于跟踪和参考)
6) 本测试用例与其他测试用例间的依赖关系
7) 本用例的前置条件,即执行本用例必须要满足的条件,如对数据 库的访问权限 8) 用例的编号(ID),如可以是软件名称简写-功能块简写-NO.。
p 可靠:在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属
境,开发测试脚本、与开发组织协作实现各阶段的测试活
动
测试工作流程
测试计划内容
p p p p p p
目标和范围 项目估算 风险计划 进度安排 资源配置 跟踪和控制机制
测试用例的引进
p 测试用例(Test Case)是为某个特殊目标而编制的一组
测试输入、执行条件以及预期结果,以便测试某个程序路 径或核实是否满足某个特定需求。
p
测试用例是一个知识积累的过程
软件测试的方法
测试阶段或层次
验收测试 系统测试 集成测试 单元测试 功能测试 强壮性测试 性能测试 适用性测试 安全性测试 可靠性测试 方法 白盒测试 黑盒测试
目标/特性
不同的分类
p 按测试的对象或范围分类,如单元测试、文档测试、系
统测试等)
p 按测试目的分类,如功能测试、回归测试、性能测试、
NOTE Defects may be found during, but not limited to, reviewing, testing, analysis, compilation, or use of software products or applicable documentation
行特性分析,从程序中提取一些信息,以便检查程序逻
辑的各种缺陷和可疑的程序构造。
验证和确认
Verification:Are we building the product right?
p 是否正确地构造了软件?即是否正确地做事,验证开发过
程是否遵守已定义好的内容。验证产品满足规格设计说明 书的一致性
软件缺陷
IEEE (1983) 729 软件缺陷一个标准的定义:
从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错 误、毛病等各种问题;
p p
从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。
ISO 29119
(1) a flaw in a component or system that can cause it to fail to perform its required function. (2) any condition that deviates from expectation based on requirements specifications, design documents,
f) g)
一个微软测试工程师的一天(续)
h) i) j) k) l) m) n) o)
关闭Bug并增加针对此Bug的Regression Test 验证最近的Lab Run结果 如果其中有新的错误,隔离并汇报新Bug 开发新的测试Spec与新的测试代码 使用个人Private Run来验证新开发的测试程序 使用个人Private Run来验证开发伙伴新开发的产品程序没有重大错误 改进与提高自动化测试系统的功能 参与Spec, Test Spec Review会议,做测试同伴测试代码Review, UE 帮助文件Review, 回答内外Newsgroup的问题