还剩14页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
软件测试的概述及方法摘要从软件产业的发展初期到目前的大型软件开发过程,软件测试已成为其中一个不可分割的部分随着软件规模的日益增大,软件测试问题也日益突出,现代社会对软件的依赖越来越强,高可信软件测试有着广泛的需求,基于缺陷模式的软件测试技术作为高可信软件的重要保证,可以大大降低软件的缺陷密度,提高软件的可信性本文从测试的基本概念入手,深入剖析软件测试相关理论关键字软件测试、白盒测试、黑盒测试、类测试在接口上,输入能否正确地接受?能否输出正确的结果?•是否有数据结构错误或外部信息(例如数据文件)访问错误?•性能上是否能够满足要求?是否有初始化或终止性错误?用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出但这是不可能的假设一个程序有输入量和及输出量在字长为位的计n PX YZo32算机上运行若、取整数,按黑盒方法进行穷举测试X Y可能采用的测试数据组如果测n232X232=264n试一组数据需要毫秒,一年工作小时,完成所有测试需亿年1365X245黑盒测试的测试用例设计等价划分法•边界值法•错误推测法•因果图法白盒测试
5.3白盒测试指的是把盒子盖打开,去研究里面的源代码和程序结构白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能使用被测单元内部如何工作的信息,允许测试人员对程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑路径进行测试基于一个应用代码的内部逻辑知识,测试是基于覆盖全部代码、分支、路径、条件白盒测试的主要方法•逻辑驱动测试•基本路径测试主要用于软件验证使用程序设计的控制结构导出测试用例逻辑驱动测试主要是测试覆盖率,以程序内在逻辑结构为基础的测试包括以下种类型6•语句覆盖•判断覆盖•条件覆盖•判定-条件覆盖•条件组合覆盖•路径覆盖白盒测试的主要目的•保证一个模块中的所有独立路径至少被执行一次;•对所有的逻辑值均需要测试真、假两个分支;•在上下边界及可操作范围内运行所有循环;•检查内部数据结构以确保其有效性白盒测试的实施方案在开发阶段要保证产品的质量,产品的生产过程应该遵循一定的行业标准软件产品也是同样,没有标准可依自然谈不上质量的好坏所有关心软件开发质量的组织、单位,都要定义或了解软件的质量标准、模型其好处是保证公司实践的均匀性,产品的可维护性、可靠性以及可移植性等在测试阶段与软件产品的开发过程一样,测试过程也需要有一定的准则,来指导、度量、评价软件测试过程的质量定义测试准则为控制测试的有效性以及完成程度,必须定义准则和策略,以判断何时结束测试阶段准则必须是客观的,可量化的元素,而不能是经验或感觉根据应用的准则和项目相关的约束,项目领导可以定义使用的度量方法,和要达到的覆盖率度量测试的有效性、完整性对每个测试的测试覆盖信息和累计信息,用图形方式显示覆盖比率,并根据测试运行情况实时更新,随时显示新的测试所反映的测试覆盖情况允许所有的测试运行依据其有效性进行管理,用户可以减少不适用于非回归测试的测试的过程概念语句覆盖语句覆盖就是设计若干个测试用例,运行被测试程序,
1.使得每一条可执行语句至少执行一次;.判定覆盖(也称为分支覆盖)设计若干个测试用例,运行所测2程序,使程序中每个判断的取真分支和取假分支至少执行一次;.条件覆盖设计足够多的测试用例,运行所测程序,使程序中每3个判断的每个条件的每个可能取值至少执行一次;.判定-条件覆盖设计足够多的测试用例,运行所测程序,使程4序中每个判断的每个条件的所有可能取值至少执行一次,并且每个可能的判断结果也至少执行一次,换句话说,即是要求各个判断的所有可能的条件取值组合至少执行一次;.条件组合测试设计足够多的测试用例,运行所测程序,使程序5中每个判断的所有可能的条件取值组合至少执行一次;.路径测试设计足够多的测试用例,运行所测程序,要覆盖程序6中所有可能的路径4静态测试
5.是指不实际运行被测软件,而只是静态的检查程序代码、界面或文档中可能存在的错误的过程其中包括代码测试、界面测试和文档测试个方面对于代码测试,3主要测试代码是否符合相应的标准和规范对于界面测试,主要测试软件的实际界面与需求中的说明是否相符对于文档测试,主要测试用户手册和需求说明是否符合用户的实际要求动态测试
5.5是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程所以,我们判断一个测试属于动态还是静态测试,唯一的标准就是看是否运行程序软件测试中的类测试6面向对象软件从宏观上来看是各个类之间的相互作用在面
6.1向对象系统中,系统的基本构造模块是封装了的数据和方法的类和对象,而不再是一个个能完成特定功能的功能模块每个对象有自己的生存周期,有自己的状态消息是对象之间相互请求或协作的途径,是外界使用对象方法及获取对象状态的唯一方式对象的功能是在消息的触发下,由对象所属类中定义的方法与相关对象的合作共同完成,且在不同状态下对消息的响应可能完全不同对象中的数据和方法是一个有机的整体,测试过程中不能仅仅检查输入数据产生的输出结果是否与预期的吻合,还要考虑对象的状态模块测试的概念已不适用于对象的测试“类测试将是整个测试过程的一个重要步骤类测试技术
6.2基于服务的类测试技术
6.
2.1基于服务的类测试主要考察封装在类中的一个方法对数据进行的操作,它可以采用传统的白盒测试方法为克服软件测试的盲目性和局限性,保证测试的质量,提高软件的可靠性,下面我们介绍一种类的服务的测试模型及相应的测试策略通常有两种获取途径一是采用逆向工程的方法根据BBD源程序画出流程图,然后构造出但这毕竟是在缺少软件开发前期BBDo的分析、设计文档或文档不齐全的情况下退而求其次的办法当源程序不正确时构造出来的就是错误的另一种途径就是追根溯源,在软BBD件的分析、设计阶段就根据测试的需要构造出相应的这样就能从根BBDo本上解决问题,正确地指导类的服务的测试基于层次增量的类测试622层次增量测试的基本思想是:首先分别测试父类的各个成员函数,再测试成员函数间的相互作用,把测试用例和执行信息保存在/测试历史中,在测试子类时,根据父类的测试历史修改部分的定义以及实现语言的继承映射来决定子类中的哪些特征应当重测试以及父类的哪些测试用例可以复用这种根据类间继承关系的层次特性对类进行增量测试的技术是由M.等人提出的,其特点是复用父类的测试信息来指导子类Harrold的测试参考文献7参考书籍、《软件测试》机械工业出版社1Ron Patton、张克东等《软件工程与软件测试自动化教程》电子工业出版社
6.
3.1软件测试使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别它是帮助识别开发完成中间或最终的版本的计算机软件整体或部分的正确度完全度和质量的软件过程;correctness completenessquality是的重要子域SQAsoftware qualityassurance测试并不仅仅是为了找出错误.通过分析错误产生的原因和错误1的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进;这种分析也能帮助测试人员设计出有针对性的测试方法,改善测2试的效率和有效性;没有发现错误的测试也是有价值的,完整的测试是评定软件质量3的一种方法软件测试的描述
3.2测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情()另一方面是确认软件以正确的方式来做了这个事件Do theright thing,(Do itright);第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息;第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的软件测试的目的
3.3如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置如果测试目的是为了给最终用户提供具有一定可信度的质量评价,那么测试就应该直接针对在实际应用中会经常用到的商业假设在谈到软件测试时,引用GrenfordJ.Myers在《The Artof SoftwareTesting》一书中的观点
(1)软件测试是为了发现错误而执行程序的过程;
(2)测试是为了证明程序有错,而不是证明程序无错误;
(3)一个好的测试用例是在于它能发现至今未发现的错误;
(4)一个成功的测试是发现了至今未发现的错误的测试这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此首先,测试并不仅仅是为了要找出错误通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法软件测试的原则
3.4应当把〃尽早和不断的测试〃作为开发者的座右铭
1.程序员应该避免检查自己的程序,测试工作应该由独立的专业的
2.软件测试机构来完成设计测试用例时应该考虑到合法的输入和不合法的输入以及各种
3.边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况一定要注意测试中的错误集中发生现象,这和程序员的编程水平
4.和习惯有很大的关系对测试错误结果一定要有一个确认的过程,一般有测试出来的
5.A错误,一定要有一个来确认,严重的错误可以召开评审会进行讨论和B分析制定严格的测试计划,并把测试时间安排的尽量宽松,不要希望
6.在极短的时间内完成一个高水平的测试回归测试的关联性一定要引起充分的注意,修改一个错误而引起
7.更多的错误出现的现象并不少见妥善保存一切测试过程文档,意义是不言而喻的,测试的重
8.现性往往要靠测试文档软件测试的内容4验证
4.1verification验证是保证软件正确地实现了一些特定功能的一系列活verification动,即保证软件做了你所期望的事情Do theright thing.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立1的需求的过程;程序正确性的形式证明,即采用形式理论证明程序符号设计规约
2.规定的过程;.评市、审查、测试、检查、审计等各类活动,或对某些项处理、服3务或文件等是否和规定的需求相一致进行判断和提出报告确认
4.2validation确认是一系列的活动和过程,目的是想证实在一个给定的validation外部环境中软件的逻辑正确性即保证软件以正确的方式来做了这个事件Do itright.静态确认,不在计算机上实际执行程序,通过人工或程序分析来1证明软件的正确性;.动态确认,通过执行程序做分析,测试程序的动态行为,以证2实软件是否存在问题软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期问各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序软件测试的分类5常用分类
3.1从是否需要执行被测软件的角度,可分为一静态测试和动态测试从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为一白盒测试和黑盒测试黑盒测试
5.2黑盒测试指的是把被测软件看作是一个黑盒子,我们不去关心盒子里面的结构是什么样子,只关心软件的输入数据和输出结果黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误是否有不正确或遗漏了的功能?。
个人认证
优秀文档
获得点赞 0