




免费预览已结束,剩余4页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
对软件测试的认识对软件测试的认识 赵兴丽 (重庆市北碚区西南大学计算机与信息科学学院,重庆 北碚 400715) 摘要:摘要: 本文首先就其软件测试的内容、测试原则、测试方法的分类等做了简要的概述。然后针 对软件中的白盒测试、黑盒测试做了详细论述,分析了灰盒测试的必要性,并对处于黑盒与 白盒测试之间的灰盒测试做了较细的分析。最后对这三种软件测试方法做了对比并总结了 自己的一点小小的心得体会。 关键字:关键字: 黑盒测试 白盒测试 灰盒测试 测试原则 测试方法分类 Abstract: Firstly, the contents of its software testing, test principles, testing methods for classification, a brief overview. Then the white-box testing for software, black box testing are elaborated to analyze the necessity of gray box testing, and in the black box and white box testing gray box testing between the smaller of the analysis done. Finally, do these three software testing methods are compared and summarized their little feelings and experiences. Keywords: black box testing white box testing gray box testing method for testing the principles of classification 1.1.软件测试的概述软件测试的概述 随着人类社会的进步, 经济的发展, 各种领域计算机的普及, 计算机软件也遍布了各 种场合, 为人们的 生活, 工作,学习, 休闲等提供了前所未有的方便。因此, 当一个软件 从雏形到真正的在一台计算机上运行的时候, 谁也不能保证计算机软件能一步到位的满足 人们的需求。所以产生了软件测试, 软件测试在计算机领域占据着不可替代的角色1, 是 软件开发过程的重要组成部分, 它是用来确认一个程序是否能够满足开发之前用户提出 的一些要求。 软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码 的最终复审,是软件质量保证的关键步骤。软件测试是为了发现软件中的错误而执行 程序的过程。在软件 生存期中软件测试横跨两个阶段: 一般编写完一个模块后就要对 它进行测试,这一阶段称单元测试。 编码和单元测试属于软件生存期中的同一个阶段。 在结束这个阶段后对软件系统还要进行各种综合测试,这是软件生存期的另一个独立阶 段,又称测试阶段。 软件测试贯穿于整个软件生命周期中 ,软件测试并不 仅局限于程序测试。需求分 析、概要设计、详细设计以及程序编码等各阶段所得 到的文档,包括需求规格说明、 概要设计规格说明、详细设计规格说明 及源程序,都是软件测试的对象。Grenford J.M yers 就软件测试目的提出了以下观点: 测试是一个程序的执行过程, 其目的在于寻找 错误;一个好的测试用例在于能发 现到目前为止还没有 发现的错误;一个成功的测试是发现了至今未发现的错误的测试。 测试目的不仅为了发现软件 漏洞与错误,而且还对软件质量进行度量和评估,以 提高软件的质量。测试 以评价系统性能或者程序属性 为目标的活动, 能够为软件质量 的度量与评估的 提供依据。经过分析错误,找到了错误产生的原因, 发现当前开发工 作所采用的软件的缺陷,以便 对软件过程改进。通过对测试结 果的分析整理,还可以 修正软件开发规则,并为软件可靠性分析提供参考依据 。 2 2软软件件测测试试的的内内容容及及原原则则 2.1 软软件件测测试试的的内内容容 软件测试的内容 就是说如果拿到一个完整的软件后,接下来要对软件作怎样的处 理,包括对软件的验证和确认。 验证和确认都是软件产品在发布前必须要进行的测试活 动,二者的区别是测试环境和测试目的不同。 2.1.12.1.1 验证验证(verification)(verification) 验证(verification)就是保证该软件正确地实现了一些特定功能, 即保证软件做了人 们所期望软件能够实现的功能。主要包括以下几个方面: 1.确定软件生存周期中的一个给定阶段的产品是否达到前一阶段确立的需求过程; 2.程序正确性的形式证明, 即采用形式理论证明程序符号设计规定的过程; 3.审查、测试、检查、审计等各类活动, 或对某些项处理、服务或文件等是否和规定 的需求相一致进行判断和提出报告。58 验证是指已经实现的软件产品是按照它的需求做的,是符合需求说明书的。验证测试 是指测试人员在模拟用户环境的测试环境下,对软件进行测试,验证已经实现的软件产品 或产品组件是否实现了需求中所描述的所有需求项。 2.1.22.1.2 确认确认(validation)(validation) 确认(validation)是要做一系列的活动和过程, 目的是为了证实软件在一个给定的外部环 境中的逻辑正确性。从而能够保证软件以正确的方式来做了某一个事件。包括以下一两个 方面::58 1.静态确认, 程序不在计算机上实际执行, 通过人工分析来证实软件是正确的; 2.动态确认, 通过执行程序做分析, 测试程序的动态行为, 从而证实软件是否存在问题。 确认是指已经实现的软件产品或产品组件在用户环境下,实现了用户的需要,是符合 用户需要的。确认测试是指测试人员在真实的用户环境下,软件产品或产品组件不仅实现 了需求中所描述的所有需求项,而且它也是满足用户的最终需要的。 2.22.2 软件测试的原则软件测试的原则 软件测试的原则还没有标准的说法,多数是经验之谈。从开发者的角度出发,开发者 希望测试能表明软件产品不存在错误,且已经实现了用户的需求。从用户的角度出发,就 是希望通过软件测试能充分暴露软件中存在的问题和缺陷;以下几点可以作为测试的基本 原则,当然仅供参考: (1)所有的测试应以用户的需求为根本软件测试的目标在于揭示软件中的错误,软件 的最终目标是拿来给用户使用。从用户角度来看,最严重的错误就是那些导致程序无法满 足用户需求的错误。 (2) 应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭。 这一原则就是要求测试工作尽可能早的进行,一免造成以小失大的的不良后果。应该 在测试工作真正开始前的较长时间内就进行测试计划。测试计划可以在需求模型一完成就 开始,详细的测试用例定义可以在设计模型被确定后立即开始。因此,所有测试应该在任 何代码被产生前就进行计划和设计。 (3) Pareto 原则应用于软件测试 1879 年,意大利人 Villefredo Pareto 提出:社会财富的 80%是掌握在 20%的人手中, 而余下的 80%的人只占有 20%的财富。渐渐地,这种“关键的少数(vital few)和次要的 多数(trivial many)”的理论,被广为应用在社会学和经济学中,并被成之为 Pareto 原则 (Pareto Principle)。12 简单地讲,Pareto 原则暗示着测试发现的错误中 80%很可能起源于 20%的模块中。当 某个功能出问题,其对用户的影响有多大?然后根据风险大小确定测试的优先级。优先级高 的测试,优先得到执行,一般来讲,针对用户最常用的 20%功能(优先级高)的测试会得到 完全执行,而低优先级的测试(另外用户不经常用的 80%功能)就不是必要的,如果时间或 经费不够,就暂时不做或少做。 (4) 应由独立的第三方来构造测试 专业性、独立性、客观性和公正性是第三方测试最大的优点。对软件开发商来说,经 过第三方测试机构的测试,不仅可以通过专业化的测试手段发现软件错误,而且还帮助开 发商提高软件产品的质量,能够对软件有一个比较科学客观的评价,有助于开发商对自己 的产品有一个较好的认识与定位。 (5) 充分注意测试中的群集现象 测试后程序残存的错误数目与该程序中已发现的错误数目或检错率成正比。不要以为 在某个程序段中找到了几个错误就认为该程序中不会有错误了进而就不在进行测试了,其 实不然,对于这种错误群集的程序段应该进行重点测试。 (6) 对测试错误结果一定要有一个确认的过程, 一般有 A 测试出来的错误, 一定要有一个 B 来确认, 严重的错误可以召开评审会进行讨论和分析。应该从工程的角度理解软件测试, 它是有组织、有计划、有步骤的活动。 3 3 软件测试的分类软件测试的分类 根据不同的测试标准,软件测试的种类也不同。下面就其不同的标准进行了分类,并 且着重介绍了黑盒测试、白盒测试以及灰盒测试。 3.13.1 常用分类常用分类 按照开发阶段划分软件测试可分为:单元测试、集成测试、系统测试、确认测试和验 收测试。按照测试实施组织划分:开发方测试、用户测试(又称 测试)、第三方测试。 按照测试技术分为白盒测试、黑盒测试、灰盒测试;也可分为静态测试、动态测试。 3.23.2 黑盒测试和白盒测试黑盒测试和白盒测试 3.2.13.2.1 黑盒测试黑盒测试 黑盒测试是通过软件的外部表现来发现其缺陷和错误。黑盒测试也称功能测试或数据 驱动测试,该测试的条件是已经知道了产品所应具有的功能,通过测试来检测每个功能是 否都能正常使用。在进行黑盒测试时,可以把测试程序看作一个不能打开的黑盆子,可以 在不考虑程序内部结构和内部特性的情况下,测试者在程序界面处进行测试,它只检查程 序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生 正确的输出信息,并保持外部信息(如数据库或文件)的完整性。67 黑盒测试方法主要有等价类划分、边值分析、 因果图、错误推测等,主要用于软 件确认测试。 黑盒测试着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软 件功能进行测试。 7“黑盒测试”法是穷举输入测试,只有把所有可能 的输入都作为 测试情况使用,才能以这种方法查出程序中所有的错误。 实际上测试情况有无穷多个, 人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。这一 点也正是人们认为黑盒测试的不足之处。 3.2.23.2.2 白白盒盒测测试试 白盒测试通过对程序内部结构的分析、检测来寻找问题。白盒测试可以把程序看成装 在一个透明的白盒子里,能够清楚地了解程序的内部结构和处理过程,可通过测试来检测 产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检 验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主 要方法有逻辑驱动、基路测试等,主要用于软件验证。 7 使用“白盒测试”法要全面了解程序内部逻辑结构、对所有逻辑路径进行测试。 “白盒测试”法也是穷举路径测试。在使用 白盒测试方案时,测试者必须检查程序的 内部结构,从检查程序的逻辑结构开始,得出测试数据。 即使程序的每条路径都被测 试了仍然可能有错误 出现。这是因为:第一,穷举路径测试决不能查出程序 是否违反 了设计规范, 也就是说程序本身是个错误的程序。第二,穷举路径测试不可能查出程序 中因遗漏路径而出错。第三,穷举路径测试 可能不能发现一些与数据相关的错误。 这 也正是该白盒测试方法的缺陷所在。 3 33 3 灰灰盒盒测测试试 通过上述对黑盒测试与白盒测试的认识 ,如果做了这两种测试是否覆盖了软件测试 的全部内容,是否就能保证产品的质量呢。其实是不一定的,或者说如果靠这两种方法来 覆盖,投入的代价是比较大的。因为通过黑盒手工测试是很难完成的,而白盒测试是在单 元测试进行的,显然对产品的测试带来很大的局限性,它也无法测试到产品在集成过程中 带来的问题。那么这时灰盒测试的出现就尤为必要。 3 3. .3 3. .1 1 灰灰盒盒测测试试的的含含义义 灰盒是是介于白盒测试与黑盒测试之间的测试。灰盒测试既具有白盒测试的特点,也 具有黑盒测试的特点,它关注输出对于输入的正确性;同时也关注内部表现,但不像白盒 测试那样详细、完整,只是根据一些表征性的现象、事件、标志来判断内部的运行状态。 测试者可能知道系统组件之间是如何互相作用的, 但并不可能对程序内部的功能及运 作了解很彻底。 灰盒测试通常与 web 服务应用一起使用,因为尽管应用程序复杂多变,并不断发展 进步,因特网仍可以提供相对稳定的接口。由于不需要测试者接触源代码,所以灰盒 测试不存在侵略性和偏见。开发者和测试者间有明显的区别,人事冲突的风险减到最小 。但是,灰盒测试与白盒测试相比,灰盒测试更难于发现潜在的问题,若在一个单一的 应用中,白盒测试可以掌握全部的测试细节。 灰盒测试结合了白盒测试 与黑盒测试二 者的要素。它考虑了用户端、特定的 系统知识和操作环境。它在系统组件的协同性环 境中评价应用软件的设计。灰盒测试由方法和工具组成,这些方法和工具取材于应用程 序的内部知识 和与之交互的环境,能够用于黑盒测试以增强错误发现和错误分析的效率 、增强测试效率。灰盒测试关系到测试的输入和输出,但使用关于代码和程序操作等 是在测试人员视野之外的信息设计测试 3 3. .3 3. .2 2 灰灰盒盒测测试试的的需需求求条条件件 灰盒测试法的目的是验证软件满足外部指标要求以及软件的所有通道都进行了检验 。通过该程序的所有路径都进行了检验和验证后 , 就得到了全面的验证 。灰盒测试的 需要条件有以下几个方面 4: (1)需要在测试中,不仅部署产品, 还有程序源代码 , 不管外部是多少漂亮界面或 好使用功能, 最终都是由源代码来实现的。所以在部署时 , 要安装源代码。从源代码 编译生成的目录中运行软件。 2 (2)需要代码覆盖率工具的配置 ; 部署可以针对本软件开发语言的代码覆盖率工具 。 (3)测试人员要具备阅读代码的能力 , 其对开发语言的熟悉程度和程序设计经验多少 决定了采用灰盒测试能够取得多大的好处 , 所以配置这方面的测试人员或进行必要的 培训是必要的。 这也是灰盒测试的缺点之一。 灰盒测试对测试人员的要求也比较高,比如灰盒测试要求测试人员具有丰富的开发知识 ;需要测试人员更多地从业务层面去考虑问题,考虑更多的组合测试业务场景的能力;另 外,很多时候问题的解决还需要很多外围知识,包括数据库层面上的分析能力、J2EE 服务 器内部的调用链分析等。灰盒测试是一个非常好的测试理念,但要真正发挥其作用,显然 还需要借助于相应的自动化工具。AppSight3就是其中一种自动化工具。 3.3.33.3.3 白盒、黑盒、灰盒测试方法的优缺点比较白盒、黑盒、灰盒测试方法的优缺点比较2 测试 方法 优点缺点 白盒 测试 1、使测试人员仔细思考软件的实现 2、可以检测代码中的每条分支和路径 3、揭示隐藏在代码中的错误 4、对代码的测试比较彻底 5、相对比较优化 1、代价高 2、无法检测代码中遗漏的路径和数据敏 感性错误 3、不能验证规格的正确性 黑盒 测试 1、基本上不用人管着, 如果程序停止 运行了一般就是被测试程序 crash 了 2、设计完测试例之后, 下来的工作就 是比较好做了, 当然更苦闷的是确定 crash 原因.29 1、结果取决于测试用例的设计, 测试例 的设计部分来源于经验 2、没有状态转换的概念,目前一些成功 的例子基本上都是针对 PDU 来做的还做 不到针对被测试程序的状态转换来做 3、就没有状态概念的测试来说, 很难寻 找和确定造成程序 crash 的测试例, 必 须把周围可能的测试例单独确认一遍。 而就有状态的测试来说, 就更麻烦了,尤 其不是一个单独的 test case 造成的问 题。这些在堆的问题中表现的更为突出 91011 灰盒 测试 1、能够进行基于需求的覆盖测试和基 于程序路径覆盖的测试 2、测试结果可以对应到程序内部路径 ,便于 bug 的定位、分析和解决 3、能够保证设计的黑盒测试用例的完 整性, 防止遗漏软件的一些不常用的 功能或功能组合 4、能够需求或设计不详细或不完整对 测试造成的影响 1、投入的时间比黑盒测试大概
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黑龙江省大庆市红岗区铁人中学2026届化学高一第一学期期中教学质量检测试题含解析
- 福建省霞浦县第一中学2026届高一化学第一学期期末预测试题含解析
- 2026届福建省福州市三校联盟化学高二上期中调研试题含解析
- 2026届广东省东莞市翰林实验学校高一化学第一学期期末达标检测模拟试题含解析
- 北海市重点中学2026届化学高二上期末质量检测试题含答案
- 2026届山东省滨州市邹平县黄山中学化学高一第一学期期末学业水平测试模拟试题含解析
- 山西省长治市2026届化学高二第一学期期中教学质量检测模拟试题含解析
- 量化投资策略-第1篇-洞察及研究
- 药物释放速率分析-洞察及研究
- 江西丰城二中2026届化学高二上期中教学质量检测模拟试题含解析
- 乏力诊治与管理专家共识解读 2
- 2025亚洲杯男篮+《热血征程砥砺前行》课件-2025-2026学年高中励志主题班会
- 2025-2030牛结核病防控技术进展与行业影响分析报告
- 2024年泰州市靖江市公安局招聘警务辅助人员真题
- 国际快递基本知识培训课件
- 2025年四川省高考生物试卷(含答案与解析)
- 学校安全隐患排查整治表
- 2022年有子女离婚协议书手写
- 公路硬化报告范文
- 纳迪亚之宝全流程攻略 100%完结完整通关指南
- 预测分析:技术、模型与应用 - SAP Predictive Analytics
评论
0/150
提交评论