软件测试概述

• 不论软件的生产者还是软件的使用者,均生存在竞争的环境中:

软件开发商为了占有市场,必须把产品质量作为企业的重要目标之一,以免在激烈的竞争中被淘汰出局。

用户为了保证自己业务的顺利完成,当然希望选用优质的软件。

软件带来错误的原因很多,具体地说,主要有如下几点:

• 交流不够、交流上有误解或者根本不进行交流

• 软件复杂性

• 程序设计错误

• 需求变化

• 时间压力

• 代码文档贫乏

• 软件开发工具

什么是软件测试

软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。

软件测试定义:

软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。

软件测试的目的

• 基于不同的立场,存在着两种完全不同的测试目的。

• 从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。

• 从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。

Myers软件测试目的

(1) 测试是程序的执行过程,目的在于发现错误;

(2) 一个好的测试用例在于能发现至今未发现的错误;

(3) 一个成功的测试是发现了至今未发现的错误的测试。

• 换言之,测试的目的是

– 想以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。如果我们成功地实施了测试,我们就能够发现软件中的错误。

– 测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。

– 实施测试收集到的测试结果数据为可靠性分析提供了依据。

– 测试不能表明软件中不存在错误,它只能说明软件中存在错误。

软件测试的原则

1. 应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。

2. 测试用例应由测试输入数据和对应的预期输出结果这两部分组成。

3. 程序员应避免检查自己的程序。

4. 在设计测试用例时,应包括合理的输入条件和不合理的输入条件。

软件测试的原则

5. 充分注意测试中的群集现象。
经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。

6. 严格执行测试计划,排除测试的随意性。

7. 应当对每一个测试结果做全面检查。

8. 妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。

测试生命周期

• 测试信息流

• 软件测试模型

• 软件开发周期

• 软件测试周期

测试信息流

• 软件配置:软件需求规格说明、软件设计规格说明、源代码等;

• 测试配置:测试计划、测试用例、测试程序等;

• 测试工具:测试数据自动生成程序、静态分析程序、动态分析程序、测试结果分析程序、以及驱动测试的测试数据库等等。

• 测试结果分析:比较实测结果与预期结果,评价错误是否发生。

• 排错(调试):对已经发现的错误进行错误定位和确定出错性质,并改正这些错误,同时修改相关的文档。

• 修正后的文档再测试:直到通过测试为止。

• 通过收集和分析测试结果数据,对软件建立可靠性模型

• 利用可靠性分析,评价软件质量:

– 软件的质量和可靠性达到可以接受的程度;

– 所做的测试不足以发现严重的错误;

• 如果测试发现不了错误,可以肯定,测试配置考虑得不够细致充分,错误仍然潜伏在软件中。

V模型

• 每个开发活动都有右边的测试活动相对应。

• 软件开发过程是一个自顶向下,逐步细化的过程.

• 测试过程是依相反顺序安排的自底向上,逐步集成的过程。

W模型

• 软件测试并不等于程序测试。软件测试应贯穿于软件定义与开发的整个期间。

• 需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象。

开发生命周期

测试生命周期

测试计划(test plan)

• 定义测试项目的过程,以便测试项目能被正确的度量和控制。

包括测试需求,测试策略,测试资源和测试计划。

• 确定测试需求

• 评估风险

• 制定测试策略

• 确定资源

• 创建时间表

• 生成测试计划

确定测试需求

• 确定测试需求是测试计划活动的开始。测试需求确定测试对象以及测试工作的范围和作用。测试需求还用来确定整个测试工作(如安排时间表、测试设计等)并作为测试覆盖的基础。

• 被确定的测试需求项必须是可核实的。即,它们必须有一个可观察、可评测的结果。无法核实的需求不是测试需求。

评估风险

• 确定并验证风险因子

• 确定并验证实施概要因子

• 确定并验证测试优先级因子

制定测试策略

• 要使用的测试技术和工具;

• 测试完成标准;

• 影响资源分配的特殊考虑;如测试与外部接口或者模拟物理损坏、安全性威胁。

确定测试资源

• 人力资源

– 测试经理

– 测试工程师—设计与开发

– 测试工程师—执行

– 测试系统管理者

• 系统资源

– 硬件和软件环境

– 数据库服务器

测试设计

• 为每个工作版本确定可验证的测试用例集。

• 确定如何实现测试用例的测试过程。

• 确定并说明测试用例

• 确立并结构化测试过程

• 复审并评估测试覆盖

测试开发

• 创建可以重用的测试过程和测试用例

• 维护测试过程、测试用例与相关测试需求的一一对应

– 设立开发环境

– 建立测试过程和测试用例

– 建立外部数据集合

测试执行

• 运行与被测试应用的软件构造相对应的测试过程集,并记录结果日志,包括缺陷报告和测试日志。

• 执行测试过程

• 评估测试的执行情况

• 核实测试结果

• 恢复暂停的测试

测试评估

• 分析测试结果,确定是否测试标准被覆盖的过程.

– 分析测试结果并提交变更请求

– 评估基于需求的测试覆盖

– 评估基于代码的测试覆盖

– 分析缺陷

– 确定是否达到了测试的完成标准和成功标准

– 生成测试评估摘要

• 为把握软件开发各个环节的正确性,需要进行各种确认和验证工作。

• 验证(Verification),是保证软件正确地实现了某一功能的一系列活动。

• 确认(Validation),指的是保证软件的实现满足了用户需求的一系列活动.

• 验证:“我们是否正确地完成了产品?”

• 确认:“我们是否完成了正确的产品?”

软件测试方法

• 两种常用的测试方法

– 黑盒测试

– 白盒测试

黑盒测试

• 这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。

• 黑盒测试又叫做功能测试或数据驱动测试。

• 黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误:

– 是否有不正确或遗漏了的功能?

– 在接口上,输入能否正确地接受? 能否输出正确的结果?

– 是否有数据结构错误或外部信息(例如数据文件)访问错误?

– 性能上是否能够满足要求?

– 是否有初始化或终止性错误? 

• 用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。

• 但这是不可能的。

• 假设一个程序P有输入量XY及输出量Z。在字长为32位的计算机上运行。若XY取整数,按黑盒方法进行穷举测试:

• 可能采用的

测试数据组:

232×232

264

• 如果测试一组数据需要1毫秒,一年工作365× 24小时,完成所有测试需5亿年。

白盒测试

• 此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。

• 通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。

• 软件人员使用白盒测试方法,主要想对程序模块进行如下的检查:

– 对程序模块的所有独立的执行路径至少测试一次;

– 对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次;

– 在循环的边界和运行界限内执行循环体;

– 测试内部数据结构的有效性,等。

• 对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字。给出一个小程序的流程图,它包括了一个执行20次的循环。

• 包含的不同执行路径数达520条,对每一条路径进行测试需要1毫秒,假定一年工作365 × 24小时,要想把所有路径测试完,需3170年。

逻辑覆盖

– 语句覆盖

– 判定覆盖

– 条件覆盖

– 判定-条件覆盖

– 条件组合覆盖

– 路径覆盖。

语句覆盖 

• 语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。

• 在图例中,正好所有的可执行语句都在路径L1上,所以选择路径 L1设计测试用例,就可以覆盖所有的可执行语句。

• 测试用例的设计格式如下
【输入的(A, B, X),输出的(A, B, X)】

• 为图例设计满足语句覆盖的测试用例是:
【(2, 0, 4),(2, 0, 3)】 

覆盖 ace【L1】

判定覆盖

• 判定覆就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。

• 判定覆盖又称为分支覆盖。

时间: 2024-08-05 11:16:05

软件测试概述的相关文章

一、 软件测试概述

1. 软件的概念  软件就是程序与文档的集合. 文档指软件从无到有整个生命周期中产生的各类图文集合.具体可包括用户需求规格说明书.需求分析.系统概要设计.系统详细设计.数据库设计.用户操作手册等. 2. 软件生命周期 生命周期包括需求定义.可行性分析.软件概要设计.软件详细设计.编码实现.调试和测试.软件验收与应用.维护升级到废弃的各个阶段. 3. 软件测试   软件测试是软件质量的重要保证. 软件测试主要描述了两项内容: (1)软件测试是为了发现软件中的错误而执行程序的过程: (2)通过设计测

第一节 软件测试概述

软件测试是软件质量保证的关键步骤,也是软件工程的重要组成部分,对软件产品的质量起着至关重要的作用.软件测试工作的目的就在于尽早找到软件缺陷,并保证其得到修复. 1.软件及其特点 IEEE Std 610.12 给出了软件(Software) 的定义:软件是计算机程序及其相关的文档,以及用以操作计算机系统的附属数据. 一般而言,软件来源于应用问题.应用问题经过抽象(包括数据抽象和过程抽象)后,形成软件的设计(包括数据结构和算法等内容),继而被编码实现.其后软件即可运行于硬件之上. 从软件的定义可以

软件测试概述、结构化测试

一.软件测试的目的 是在最小的成本和最短的时间内,通过设计良好的测试规程和测试用例,系统地发现不同类别的错误. 二.软件测试的基本原则 设计好的测试用例.不可能进行穷举测试.尽早开展测试.重点测试.定期进行检验与修正测试用例,并增加新的测试用例.测试依赖于系统环境.测试用例应该包含合理和不合理的输入条件. 测试过程模型 V模型特点:1.对应瀑布模型的变种(自下到上)线性关系 2.有局限性,在于不能体现"尽早地和不断地进行软件测试"的原则 3.仅仅把测试过程作为在需求分析.概要设计.详细

287.软件测试概述

1.软件的缺陷及其影响 1.1什么是软件缺陷 软件缺陷就是软件产品中所存在的问题,最终表现为用户所需要的功能没有完全实现,不能满足或不能全部满足用户的需求.从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误.误差等各种问题.从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背. 软件缺陷的类型:(1)软件未实现产品说明书要求的功能.(2)软件出现了产品说明书不应该出现的错误.(3)软件实现了产品说明书未提到的功能.(4)软件未实现产品说明书虽未明确提及但应该实现的功能.(5)软件难

《软件测试管理公开课》2015.8.7~8 深圳 2015.8.11~12 北京 2015.8.18~19上海,欢迎报名!

课时:13小时(2天) 在软件开发流程中构筑软件质量 --软件测试管理     2015.8.7~8 深圳 2015.8.11~12 北京 2015.8.18~19上海   [课程背景] 据中国软件行业协会研究报告显示,2010年1-11月,我国软件业呈快速增长态势,同比增长30%,增速比去年同期提高8.6个百分点,软件产业已成为中国高科技发展重要支柱之一,但中国软件产品质量保证手段以及测试流程和管理的规范性,与国外同行(美国.印度等)存在较大的的差距.      在软件业较发达的国家, 软件测

软件测试基础概念总结

一.软件测试概述 (一)什么是测试,与测试相关常见活动有哪些? 测试:与科学方法中的实验类似,是对事物状态.功能的测量和观察.通过将测量结果与已知状态或理论假设相比较,测试者得以对事物状态.功能做出判断. 质检:顾名思义是质量检验,而质量是一个企业生存的根本,没有质量,企业只是空中楼阁! 解读:药品.食品等都有专门的质检员,我国有专门的质检机构--质检总局 QC:Quality Control['kwɑ?l?ti? k?n'tro?l],即质量控制.质量管理(检测产品质量的方法),在ISO900

软件测试重点

文章1章  软件测试概述 什么是软件测试 ü  广义的概念:它指的是整个软件生命周期的检查.审查和验证,其中包含分析.设计阶段,毕开发后维护阶段的各类文档.代码的审查和确认 ü  狭义概念:识别软件缺陷的过程,即实际结果与预期结果的不一致 ü  软件測试通常包含验证(verification)和确认(validation): -    验证指保证软件正确的实现了某一特定功能的一系列活动 -    确认指的是保证软件的实现满足了用户需求的一系列活动 软件測试的目的 ü  測试的目的就是发现软件中的

深入理解软件测试应用(测试用例+测试应用+测试技术及工具+测试等级)

我这里有个课程想和大家分享,有兴趣的朋友可以加我的QQ2059055336和我联系. 本课程为软件测试课程,主要讲述内容:软件测试概述.软件测试过程.软件测试技术.软件测试的应用.自动化测试技术等软件测试前言和问题的提出                             问题的提出 1课时                            基本概念                             本课程的主要内容                             各部分的

软件测试视频教程在线学习

课程观看地址:http://www.xuetuwuyou.com/course/22 课程来自学途无忧网:http://www.xuetuwuyou.com/ 课程介绍 一.课程所需软件及版本号:tomcat6.0.JDK1.6.Oracle10.TestDirector8.0 二.课程涉及知识点:软件测试基础理论.软件工程基础理论.数据库基础.java开发基础 三.课程目标: 课程设计从零基础开始,强化基础理论储备,然后理论结合实际,从小项目练习入手,由浅入深. 通过项目实战使学生掌握软件测试