当前位置:文档之家› 软件测试概要

软件测试概要

第一章:软件测试概述①软件缺陷定义:(1)软件未达到产品说明书中已经标明的功能;(2)软件出现了产品说明书中指明不会出现的错误;(3)软件未达到产品说明书中虽未指出但应当达到的目标;(4)软件功能超出了产品说明书中指明的范围;(5)软件测试人员认为软件难以理解、不易使用,或者最终用户认为该软件使用效果不良。

②软件缺陷的特征:•“看不到”——软件的特殊性决定了缺陷不易看到•“看到但是抓不到”——发现了缺陷,但不易找到问题发生的原因所在③软件缺陷产生原因:(1)软件产品说明书(需求)——56%(不专业—专业~~信息传递)(2)设计——27%(设计不规范)(3)编写代码——7%(4)其他——10%(软、硬件设备之间的配备问题)④软件测试发展历程:早期―→测试1957年―→为了确信自己的产品20世纪70年代―→Glenford Myers 《软件测试艺术》——“测试是为发现错误而执行一个程序或系统的过程”20世纪80年代早期―→软件质量、Bill Hetzel 《软件测试完全指南》——“测试是以评价一个程序或者系统属性为目标的任何一种活动。

测试是对软件质量的度量”20世纪90年代―→测试工具盛行2002年―→Rick和Stefan《系统的软件测试》——“测试是为了度量和提高被测软件的质量,对测试件进行工程设计、实施和维护的整个生命周期过程”⑤今天的软件测试面临的挑战:•软件在国防现代化、社会信息化和国民经济信息化中的作用越来越重要,由此产生的测试任务越来越繁重•软件规模越来越大,功能越来越复杂,如何进行充分而有效的测试成为难题•面向对象的开发技术越来越普及,但是面向对象的测试技术却刚刚起步•对于分布式系统整体性能还不能进行很好的测试•对于实时系统来说,缺乏有效的测试手段•随着安全问题的日益突出,信息系统的安全性如何进行有效的测试与评估,成为世界性难题⑥软件开发与软件测试的关系:•测试与开发各阶段的关系项目规划阶段,需求分析阶段,详细设计和概要设计阶段,编码阶段,测试阶段(软件开发生命周期)•测试与开发的并行性⑦软件测试的发展趋势:•测试工作将进一步前移。

•软件架构师、开发工程师、QA(质量保证)人员、测试工程师将进行更好的融合。

•测试职业将得到充分的尊重。

•设置独立的软件测试部门将成为越来越多的软件公司的共识。

•测试外包服务将快速增长。

⑧软件质量保证(SQA):•测试是手段,质量保证是目的测试人员的目标是尽可能早的找出软件缺陷,并确保缺陷得以修复;质量保证人员的主要职责是创建和执行改进软件开发过程并防止软件缺陷发生的标准和方法。

•质量管理体系•ISO9000与CMM能力成熟度模型(Capability Maturity Model)CMMI 的全称为:Capability Maturity Model Integration,即能力成熟度模型集成。

CMMI是CMM模型的最新版本。

⑨软件测试从业人员职业素质:•具有探索精神•具有创造性•坚持不懈的精神•故障排除专家•判断准确•追求完美•沟通能力•良好的学习能力•宽广的知识面第二章:软件测试基础①软件测试定义:•定义1:软件测试是在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估。

–即软件测试是为了发现错误而执行程序的过程。

•定义2:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例运行程序以及发现错误的过程,即执行测试步骤。

•测试:所谓测试的含义,首先是一项活动,在这项活动中某个系统或组成的部分将在特定的条件下运行,结果将被观察和记录,并对系统或组成部分进行评价。

测试活动有两种结果:找出缺陷和故障,或显示软件执行正确。

测试是一个或多个测试用例的集合。

•测试用例:所谓测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果;测试用例是执行测试的最小实体。

•测试步骤:测试步骤详细规定了如何设置、执行、评估特定的测试用例。

②软件测试的基本问题:•软件生命周期:一个软件生命周期包括制定计划、需求分析定义、软件设计、程序编码、软件测试、软件运行、软件维护、软件停用等8个阶段。

•软件测试的对象:——软件测试不等于程序测试。

―→程序测试+文档测试——软件测试贯串于软件定义和开发的整个过程。

——以及源程序都是软件测试的对象。

•软件测试在软件生命周期中➢第一个阶段:单元测试与集成测试阶段,即在每个模块编写出以后所做的必要测试。

―→开发人员(白盒测试)➢第二个阶段:综合测试阶段,即在完成单元测试后进行的测试,如集成测试、系统测试、验收测试。

―→测试人员(黑盒测试)•软件测试涉及的关键问题包括四个方面:WWWH(1)测试由谁来执行。

―→Who (2)测试什么。

―→What(3)什么时候进行测试。

―→When (4)怎样进行测试。

―→How③软件测试的目的:•根据Grenford.J.Myers的观点,软件测试的目的:(1)测试程序的执行过程,目的在于发现缺陷;(2)一个好的测试用例在于能发现至今尚未发现的缺陷;(3)一个成功的测试是发现了至今未发现的多个缺陷的测试;测试的目的:不仅仅是为了发现软件缺陷与错误,而且也是对软件质量进行度量与评估,以提高软件质量。

•注:(1)测试是想以最少的时间和人力,系统地找出软件中潜在的各种缺陷,通过修正缺陷提高软件质量,回避软件发布后由于潜在缺陷造成的隐患所带来的商业风险;(2)测试的附带收获是,它能够证明软件的功能和性能是否与需求说明书相符合;(3)实施测试收集到的测试结果数据为可靠性分析提供了依据;(4)测试不能表明软件中不存在错误,它只能说明软件中存在错误。

④软件测试的原则:(1)应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭;(2)测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成;(3)程序员应当避免检查自己的程序;(4)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件;(5)充分注意测试中的集群现象;(6)严格执行测试计划,排除测试的随意性;(7)应当对每一个测试结果做全面检查;(8)妥善保存测试计划,测试用例,出错和最终分析报告,为维护提供方便。

⑤软件测试类型: 黑盒、白盒、功能、性能、安全性、稳定性、应用性⑥软件测试分类:•⑴按照开发阶段划分:单元测试―→集成测试―→系统测试―→确认测试―→验收测试完整的软件开发流程图1 完整的开发流程•⑵按照测试实施组织划分:开发方测试、第三方测试、用户测试•⑶按照测试技术划分:白盒测试、灰盒测试、黑盒测试⑦黑盒测试和白盒测试:•若测试规划是基于产品的功能,目的是检查程序各个功能是否能够实现,并检查其中的功能错误,则这种测试方法称为黑盒测试(Black-box Testing)方法。

——黑盒测试又称为功能测试、数据驱动测试和基于规格说明的测试。

它是一种从用户观点出发的测试,一般被用来确认软件功能的正确性和可操作性。

•若测试规划基于产品的内部结构进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试(White-box Testing)方法。

——白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试,一般用来分析程序的内部结构。

㈠、黑盒测试•黑盒测试的基本观点是:任何程序都可以看作是从输入定义域映射到输出值域的函数过程,被测程序被认为是一个打不开的黑盒子,黑盒中的内容(实现过程)完全不知道,只明确要做到什么。

•黑盒测试主要根据规格说明书设计测试用例,并不涉及程序内部构造和内部特性,只依靠被测程序输入和输出之间的关系或程序的功能设计测试用例。

•黑盒测试的特点:(1)黑盒测试与软件的具体实现过程无关,在软件实现的过程发生变化时,测试用例仍然可以使用。

(2)黑盒测试用例的设计可以和软件实现同时进行,这样能够压缩总的开发时间。

•黑盒测试是在程序接口进行测试,它只是检查程序功能是否按照规格说明书的规定正常使用。

也被称为用户测试。

•黑盒测试主要是为了发现以下几类错误:–是否有不正确或遗漏了的功能?–在接口上,输入能否正确地接受?能否输出正确的结果?–是否有数据结构错误或外部信息访问错误?–性能上是否能够满足要求?–是否有初始化或终止性错误?▪黑盒测试的具体技术方法:⑴等价类划分法⑵边界值分析法⑶因果图法⑷决策表法㈡、白盒测试•白盒测试将被测程序看作一个打开的盒子,测试者能够看到被测源程序,可以分析被测程序的内部结构,此时测试的焦点集中在根据其内部结构设计测试用例。

•白盒测试要求是对某些程序的结构特性做到一定程度的覆盖,或者说这种测试是“基于覆盖率的测试”。

•通常的程序结构覆盖有:语句覆盖判定覆盖条件覆盖判定/条件覆盖路径覆盖•白盒测试需要完全了解程序结构和处理过程,它按照程序内部逻辑测试程序,检验程序中每条通路是否按预定要求正确工作。

也被称为程序员测试。

㈢、黑盒测试法和白盒测试法的比较:•黑盒测试:——以用户的观点,从输入数据与输出数据的对应关系,即根据程序外部特性进行测试,而不考虑内部结构及工作情况。

——黑盒测试技术注重于软件的信息域(范围),通过划分程序的输入和输出域来确定测试用例。

——若外部特性本身存在问题或规格说明的规定有误,则应用黑盒测试方法是不能发现问题的。

•白盒测试:——只根据程序的内部结构进行测试。

——测试用例的设计要保证测试时程序的所有语句至少执行一次,而且要检查所有的逻辑条件。

——如果程序的结构本身有问题,比如说程序逻辑有错误或者有遗漏,那也是无法发现的。

⑧软件测试周期性:• 软件测试的周期性是“测试->改错->再测试->再改错”这样一个循环过程,如下图所示。

⑨软件测试停止的标准:• 第一类标准:测试超过了预定时间,则停止测试。

• 第二类标准:执行了所有的测试用例,但并没有发现故障,则停止测试。

• 第三类标准:使用特定的测试方案作为判断测试停止的基础。

• 第四类标准:正面指出停止测试的具体要求,即停止测试的标准可定义为查出某一预订数目的故障。

• 第五类标准:根据单位时间内查出故障的数量决定是否停止测试。

⑩软件测试职业素质:• 软件测试员的目标: ——发现潜在的软件缺陷• 软件测试员应具备的素质:①具有探索精神 ②具有创造性 ③坚持不懈精神 ④故障排除专家 ⑤判断准确 ⑥追求完美 ⑦沟通能力• 软件测试员应具备的知识:①计算机基础知识 ②操作系统基础知识 ③数据库基础知识 ④中间件基础知识 ⑤程序设计语言 ⑥软件工程知识 ⑦软件测试知识第三章:软件测试过程串行方式开发者: … ..开发者:并行方式测试者:功能冻结代码冻结。

相关主题