软件测试基本概念 软件测试技术
软件测试方法 软件测试流程
软件测试过程 微软软件测试简介
课程目标
掌握软件测试的基本概念
理解测试对于软件质量保障的重要性
了解软件测试的基本流程和过程
理解白盒测试、黑盒测试的含义和方法
理解测试的分类和内容
课程内容
软件测试基本概念 软件测试技术
软件测试方法 软件测试流程
软件测试过程 微软软件测试简介
软件测试基本概念
什么是软件测试
广义的概念
指软件生存周期中所有的检查、评审和确认工作,其中包括了对分析、设计阶段,以及完成开发后维护阶段的各类文档、代码的审查和确认
狭义概念
识别软件缺陷的过程,即实际结果与预期结果的不一致
软件测试通常包括验证(verification)和确认(validation):
验证指保证软件正确的实现了某一特定功能的一系列活动
确认指的是保证软件的实现满足了用户需求的一系列活动
软件测试的目的
测试的目的就是发现软件中的各种缺陷
测试只能证明软件存在缺陷,不能证明软件不存在缺陷
测试可以使软件中缺陷降低到一定程度,而不是彻底消灭
以较少的用例、时间和人力找出软件中的各种错误和缺陷,以确保软件的质量
测试的目标
最终目的是确保软件的功能符合用户的需求,把尽可能多的问题在发布或交付前发现并改正:
确保软件完成了它所承诺或公布的功能
确保软件满足性能的要求
确保软件是健壮的和适应用户环境的
为软件的质量评估提供依据
为软件质量改进和管理提供帮助
软件测试原则
Good-enough: 一种权衡投入/产出比的原则
保证测试的覆盖程度,但穷举测试是不可能的
所有的测试都应追溯到用户需求
越早测试越好,测试过程与开发过程应是相结合的
测试的规模由小而大,从单元测试到系统测试
为了尽可能地发现错误,应该由独立的第三方来测试
不能为了便于测试擅自修改程序
既应该测试软件该做什么也应该测试软件不该做什么
测试的规律
木桶原理:
软件质量的关键因素是分析、设计和实现,测试应该是融于其中的补充检查手段,其他管理、支持、甚至 文化因素也会影响最终软件的质量
测试是提高软件质量的必要条件,最直接、最快捷的手段,但决不是一种根本手段
Bug的80-20原则
在分析、设计、实现阶段的复审和测试工作能够发现和避免80%的Bug
而系统测试又能找出其余Bug中的80%
最后的5%的Bug可能只 有在用户的大范围、长时间使用后才会曝露出来
软件测试的重点
测试用例的良好设计
测试用例的设计是整个软件测试工作的核心
测试用例反映对被测对象的质量要求,决定对测试对象的质量评估
测试工作的管理
尤其是对包含多个子系统的大型软件系统,其测试工作涉及大量人力和物力,有效的测试工作管理是保证有效测试工作的必要前提
测试环境的建立
测试环境应该与实际测试环境一致
软件测试可以发现以下软件缺陷:
软件实现的功能不正确
“缺少”:软件没有实现某项功能
“多余”,软件实现的某项功能在需求中没有定义
发现第一类软件缺陷的过程 — “验证”
发现后两类软件缺陷的过程 — “确认”
测试成功率:
有多少测试已经通过了,并且有多少是运行正常的?需记录以下值:
已通过的测试用例的数目
可利用的测试用例的数目
软件测试的质量
软件测试本身的质量在于:
发现软件缺陷并能区分其类型
提供关于软件质量和开发过程质量的信息
软件测试度量
测试覆盖率
有多少需求、代码已经被测试了
缺陷发现率
缺陷是何时被发现,并且有多少缺陷已经被发现。缺陷可以根据严重性来分类。需记录以下值:
缺陷数目
缺陷的严重性
软件测试的分类
典型的软件测试类型
功能测试 可靠性测试
容错性测试 恢复测试
易用性测试 性能测试
可维护性测试 可移植性测试
安全性测试 用户文档测试
软件的可测试性
软件容易被测试的程度,包括下面几个指标:
可确认性:可以明确确认软件是否符合要求,例如有明确的要求和指标
可观察性:用于确认的结果可以进行有效的观察
可控制性:相对应的测试环境可以进行控制,从而保证测试的有效性
可分解性:软件可以进行分解,对分解的结构进行测试
软件测试技术
黑盒测试/白盒测试
动态测试/静态测试
什么是黑盒测试
又称功能测试或数据驱动测试,是针对软件的功能需求/实现进行测试
通过测试来检测每个功能是否符合需求,不考虑程序内部的逻辑结构
穷举输入测试
黑盒测试方法
功能划分
等价类划分
边界值分析
因果图
错误推测等
什么是白盒测试
白盒测试也称结构测试或逻辑驱动测试
必须知道软件内部工作过程,通过测试来检测软件内部是否按照需求、设计正常运行
通过逻辑覆盖、路径覆盖等方式选择测试用例,可以用测试覆盖率评价测试用例
白盒测试的主要方法
对应于程序的一些主要结构:语句、分支、逻辑路径、变量;白盒测试的主要方法是:
语句覆盖方法
分支覆盖方法
逻辑覆盖方法
动态测试
动态测试需要在开发/测试环境或实际运行环境中运行软件,并使用测试用例去查找软件缺陷
动态测试包括功能确认与接口测试、覆盖率分析、性能分析、内存分析等
静态测试
静态测试不实际运行软件,主要是对软件的编程格式、结构等方面进行评估
静态测试包括代码检查、程序结构分析、代码质量度量等。它可以由人工进行,也可以借助软件工具自动进行
黑盒测试、白盒测试
测试用例设计阶段采用的方法
动态测试、静态测试
测试执行阶段采用的方法
手工测试和自动测试
手工测试
自动测试
适合自动化的测试操作
手工测试和自动测试的比较
自动测试 等等
请登录之后再进行评论