- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅析计算机进程中的软件测试.doc
浅析计算机进程中的软件测试
摘 要: 下文作者主要结合自己在计算机技术上的相关经验,详细阐述了计算机软件测试的方法和技术,以下仅供参考。
关键词: 计算机 功能 结构 软件 测试
中图分类号:TP311.53
前言
软件测试的定义是指使用人工或自动手段来运行或评价某个系统或系统部件的过程, 其目的在于检验它是否满足规定的需求; 或是弄清预期结果和实际结果之间的差别。该定义非常明确地指出了软件测试是以检验是否满足需求为目标。
1 软件质量保证与软件测试
随着软件规模的不断扩大, 复杂程度也不断提高, 特别是随着软件开发技术迅猛发展, 面向对象软件开发等方法的出现和软件开发工具的使用, 使得软件质量更加难以度量。软件质量保障涉及到软件开发生命周期的各个阶段, 从需求获取开始延续到软件维护。软件测试是保证软件质量, 提高软件可靠性的关键。 测试是度量软件质量的一个过程。虽然他们的定义目前看来具有一定的局限性, 但仍然具有指导意义。软件测试同时又是一项费时费力的过程,现在有些软件开发机构将研制力量的 4 0 % 以上投入到软件测试之中; 对于某些性命攸关的软件, 其测试费用甚至高达所有其他软件工程阶段费用总和的 3 到 5 倍。尽管人们在软件开发过程中也采用形式化方法描述和证明软件规约,并采用程序正确性证明、模型检验等方法保证软件质量, 但是这些方法都存在一定的局限性, 尚未达到广泛实用阶段。因此,程序代码最终体现了软件的质量, 无论是从软件开发方法学还是软件测试自身的效益看, 软件测试在今后较长时间内仍将是保证软件质量的重要手段。
2 基于结构的测试用例生成技术
结构化的测试属于白盒测试范畴, 测试用例是根据程的内部结构来设计, 如程序的语句、路径、分支、条件或其他特定容易导致程序出错的节点。结构测试有三种测试用例生成方法: 随机测试用例生成方法、面向目标的测试用例生成方法和面向路径的测试用例生成方法。对于给定的程序结构,随机测试的数据生成方法是在输入域内随机选取测试用例, 使得给定语句或分支被执行。
面向路径的测试用例生成分为基于符号执行和基于实际程序执行的测试用例生成两类。符号执行允许程序输入常量、符号值、符号表达式等, 以符号计算代替实际执行的数值计算, 产生一个符号输入值的代数表达式 - 路径约束, 它是选定路径的谓词系统。实际上是对输入数据的限制要求,由多个不等式(等式)组成。通过求解不等式, 求取满足路径上各限制谓词的测试数据。若不等式无解, 则相应的路径为不可行路径。DeMillo 等提出一种基于故障的测试产生方法, 用代数约束来描述检测特定类型故障的测试数据。
符号执行能够判定路径的可行性, 一次符号测试的结果代表了一类普通测试的运行结果。但在遇到循环、过程调用、动态数据结构、数组和指针处理时, 符号执行实现困难。基于程序实际执行的测试数据生成方法中,Korel 提出对于选定路径上不满足要求的分支, 利用分支函数极小化,确定新的输入值, 直至找到输入数据, 使程序执行沿选定路径进行。K o r e l 提出的程序执行和分支函数极小化方法解决了符号执行中对数组和指针难于处理的缺陷, 但由于每次测试都只考虑一个谓词和一个输入变量, 因此即便路径中的分支条件是输入的线性函数时, 也需要进行大量的叠代才能自动生成一个满足条件的新输入。
Gupta 等利用迭代逼近法,求取满足选定路径上所有谓词的输入值。每次迭代中,执行与选定路径谓词有关的语句, 得到一个线性约束集, 用高斯消去法求解线性约束集, 获得一个输入增量, 进而得到下次迭代的输入值, 最终产生选定路径的测试数据。Gupta 提出的算法同时考虑多个谓词和多个输入变量, 利用随机选择的一组初始输入通过叠代自动生成一组满足该给定路径的新输入, 该算法由于只采用线性函数来进行叠代, 因此只对线性函数有效, 而对于非线性函数则效果较差。Gotlieb 等提出用约束求解的方法生成测试数据, 利用“静态单一指派”(Static Single Assignment)和控制依赖,将被测程序转化成一个约束系统, 然后寻找经过给定语句的路径, 生成相应的测试数据。基于程序实际执行的测试数据生成方法, 在程序执行的每一步中数组下标、指针值都是确定的。因此, 针对数组、指针处理不存在困难, 但其测试数据生成与路径选择有关, 而判定所选路径是否为可行路径也是一件非常困难的事情。
H o w d e n 认为程序错误分为: 计算错误(Computation error)、丢失路径错误(Missingpath error)和域差错(Domain error)。对于某一特定输入, 程序执行的是正确的路径,但由于赋值语
文档评论(0)