前言:中文期刊网精心挑选了软件测试范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。
软件测试范文1
关键词:软件可靠性;软件质量;软件测试;测试用例
1概述
信息技术的飞速发展,使软件产品应用到社会的各个领域,软件产品的质量自然成为人们共同关注的焦点。软件开发商为了占有市场,必须把产品质量作为企业的重要目标之一,以免在激烈的竞争中被淘汰。用户为了保证自己业务的顺利完成,总是希望选用优质的软件。质量不佳的软件产品不仅会使开发商的维护费用和用户的使用成本大幅增加,还可能产生其他的责任风险,在一些关键应用,如民航订票系统、银行结算系统、证券交易系统等中使用质量有问题的软件,还可能造成灾难性的后果。
软件危机曾经是软件界甚至整个计算机界最热门的话题,为了解决这个危机,软件从业人员、专家和学者做出了大量的努力。现在人们已经逐步认识到所谓的软件危机实际上仅是一种状况,那就是软件中有错误,正是这些错误导致了软件开发在成本、进度和质量上的失控。有错是软件的属性,而且是无法改变的。因为软件是由人来完成的,所有由人做的工作都不会是完美无缺的。问题在于应该如何去避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度。
软件工程学出现后,软件开发被视为一项工程,以工程化的方法来进行规划和管理软件的开发。事实上,不论采用什么技术和什么方法,软件中出现错误总是难免的。采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出。测试是软件开发的重要部分。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上。而在软件开发的总成本中用在测试上的开销要占30%到50%。如果把维护阶段也考虑在内,讨论整个软件生存时期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,仍至多次开发,其中必定还包含有许多测试工作。系统的问题越早发现,改正成本越低,破坏性越小,所以,在系统前要尽量多地把系统问题找出来,其手段就是有计划、有组织地进行充分的测试。
软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一组测试数据,并利用这些测试数据运行程序,以发现程序错误的过程。根据测试数据设计方法,软件测试可分为结构测试和功能测试。在结构测试过程中,测试者对程序的语句、分支和逻辑路径进行各种覆盖测试,可以在不同点检查程序的状态,以确定实际状态与预期状态是否一致。软件测试的目的是发现错误,而不是确认其正确性,而对已进行的测试过程的程度进行评估。
2测试方法
2.1软件测试实质
软件测试是一项逻辑性强、且极具条理的工作,也是具有风险性的行为。由于软件的输入量、输出结果、软件实现途径都很多,而且软件产品说明书没有客观的标准,导致从不同的角度看,软件缺陷的标准不同,因而无法对软件实施完全测试,这样,就无法通过软件测试显示隐藏的软件缺陷,只能尽量查找软件缺陷,找到的软件缺陷越多,说明软件本身的缺陷就越多,况且还有一些是未发现、不能断定的缺陷,这就是软件测试的局限性。软件测试与软件开发过程的关系如图1所示。
图1软件测试与软件开发的关系
所有的软件测试都有2个关键的问题组成:建立能测试应用程序的环境,并在该环境中测试软件能力。测试员必须理解和重新生成软件所在的复杂软件环境,并运用其能力确保正常的测试。
2.2软件测试手段
从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。2.2.1黑盒测试
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能情况下,通过测试来检测每个功能是否都能正常使用。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息并且保持外部信息(如:数据库或文件)的完整性。黑盒法着眼于程序外部结构,不考虑内部逻辑结构,只针对软件界面和软件功能进行测试,它主要用于软件验收测试。黑盒法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。测试情况实际上有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
2.2.2白盒测试
白盒测试也称结构测试或逻辑驱动测试,它是在已知产品内部工作过程情况下,通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作,而不顾它的功能。白盒测试的主要方法有逻辑驱动、基路测试等,白盒法是穷举路径测试,主要用于软件验证。
(1)软件有产品说明书时,对产品说明书实施测试和审查:由于软件产品说明书属于文档,因此对产品说明书的测试是黑盒测试。在实施测试时要弄清所开发软件的客户,并熟悉现有的标准和规范,基于同类软件测试的经验进行测试。除了这些,如果时间和条件允许,应该对产品说明书进行审查,按照相关的标准,看产品说明书是否符合要求。这都是通常的一些做法,当然还可以采用其他软件检测方法。
(2)由于当前软件开发有时不是很正规,在没有产品说明书时应使用试探性测试:首先要分步骤地弄清软件特性,记录软件运行情况,详细描述软件功能,然后运用静态和动态黑盒测试两种方式来测试软件,发现软件缺陷,在这种情况下,可以将一些非法、错误和垃圾数据作为输入数据,以检验软件的输出结果。测试时可采用反复测试、边界值测试和不合条件等方法。
(3)对有些软件实施状态测试:首先是熟悉软件的逻辑流程,可能的话,建立状态转换图,尽量清晰地描绘软件可能的独立状态,从一种状态到另一种状态所允许的输入和条件,以及进入或退出某种状态时的设置条件和输出结果;如果要测试的软件规模较大、复杂性较高,那么建立状态转换图将是非常艰巨的任务,这时减少要测试的状态及状态的数量,但是必须保证每种状态都必须测试一次,也可以在状态测试时选择那些不常用的分支,因为这是最容易被忽略的。在此基础上,测试所有的错误状态及返回值,测试随机状态转换。
(4)在前述测试的基础上,对有些测试实施失败状态测试:具体在实施时,指的是几个时间对某一资源竞争使用,比如:
①两个不同的程序同时保持或打开同一个文档。
②共享同一台设备。
③当软件处于读取或者修改状态时按键或者单击鼠标。
④同时关闭或者启动同一个软件的多个实例。
⑤使用不同的程序同时访问同一个数据库。
类似这样的竞争条件还有很多,不一一举例。
(5)在实际测试时还常用反复、压迫和重负测试,实施这些测试的目的是考验软件在恶劣条件下是否能正常运行和退出,从而验证软件的性能。反复测试指的是不断地执行同样的操作;压迫测试是使用软件在不够理想的条件下运行,从而观察软件对外部资源的要求和依赖程度,借此来测试软件的性能;重负测试是指尽量提供条件任其发挥,让软件处理尽可能大的数据文件,即最大限度地发掘软件的能力,使之不堪重负,大多数情况下,用时间作为参数实施重负测试,看其在重负情况下能否正常运行。实际测试时,常将三种测试方法结合起来使用。
(6)测试软件的另一种有效方法就是进行正式审查,其中包括以下几个方面:确定问题、制定审查规则、准备工作以及编写报告,进行审查的主要方法就是组织熟悉该类软件的人员逐一检查代码,其中重要的软件还需要按能力成熟度(CMM)中的要求进行同行评审。
(7)在实际测试中经常采用一种称之为动态白盒测试的方法,其意义是指利用查看代码功能和实现方式得到的信息来确定哪些要测试,哪些不需要测试,以及如何开展测试。其中不仅是查看代码,还包括直接测试和控制软件。包括以下几个部分:
①直接测试底层功能、过程、子程序和库。
②根据软件运行的实际情况不断地调整测试用例。
③对软件中的部分变量和状态信息进行访问,确定测试与预期结果是否相符,并强制软件以正常测试难以实现的方式运行。在具体实施时应分阶段地进行测试,即遵循单元测试、集成测试、配置项测试和系统测试的步骤。目前,灰盒测试逐渐为大家认同,灰盒测试综合了白盒测试和黑盒测试的优点,模糊了两者的界限,在做法上仍然把软件当成黑盒来测试,但是通过简单地查看(不像白盒那样进行完整地查看)软件内部工作机制作为补充。现在的网页制作就很适合灰盒测试。
3结束语
软件测试的目的不是为了仅仅找出错误,而是通过它发现错误、分析错误,找到错误的分布特征和规律,从而帮助项目管理人员发现当前所采用的软件开发过程的缺陷,以便改进;同时也能够通过设计有针对性的检测方法,改善软件测试的有效性。即使测试没有发现任何错误,也是十分有价值的,因为完整的测试不仅可以给软件质量进行一个正确的评价,而且是提高软件质量的重要方法之一。
参考文献
软件测试范文2
关键词:软件测试;软件测试技术;自动化测试;测试工具
中图分类号:TP311.5 文献标识码:A
The Status Quo of Software Testing Technology
LI Jing, GUO Xiao-lei
(Software Vocational and Technical College,Kaifeng University,Henan Kaifeng 475004)
Key words: software testing; software testing techniques;automated testin; testing tools
1 软件测试概述与必要性
软件是由人来完成的,所有由人做的工作都不会是完美无缺的。问题在于应该如何去避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度。
随着软件规模的增大,软件的复杂程度也越来越大,与其他系统的接口不断增多应用越来越广泛,集成度越来越高,这使得没有现代软件开发经验的人很难理解它。为了尽可能地减少错误,软件测试这一环节必须得到重视。
中国软件外包市场巨大,国内软件外包服务多属于为客户提供技术和质量服务的中间环节。以占中国软件外包总量近85%的对日软件外包来说,业务内容基本都针对测试环节。这就要求我们加强对软件测试的重视。
质量不佳的软件产品不仅会使开发商的维护费用和用户的使用成本大幅增加,还可能产生其他的责任风险,在一些关键应用,如民航订票系统、银行结算系统、证券交易系统等中使用质量有问题的软件,还可能造成灾难性的后果。这使得软件测试环节显得尤为重要。
2 软件测试技术分析
2.1软件测试的概念
软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一组测试数据,并利用这些测试数据运行程序,以发现程序错误的过程。根据测试数据设计方法,软件测试可分为结构测试和功能测试。在结构测试过程中,测试者对程序的语句、分支和逻辑路径进行各种覆盖测试,可以在不同点检查程序的状态,以确定实际状态与预期状态是否一致。软件测试的目的是发现错误,而不是确认其正确性,而对已进行的测试过程的程度进行评估。
2.2软件测试的目的
软件测试的目的是为了保证软件产品的最终质量,在软件开发的过程中,对软件产品进行质量控制。一般来说软件测试应由独立的产品评测中心负责,严格按照软件测试流程,制定测试计划、测试方案、测试规范,实施测试,对测试记录进行分析,并根据回归测试情况撰写测试报告。测试是为了证明程序有错,而不能保证程序没有错误。
2.3软件测试的方法和过程
软件测试的种类可以分为人工测试和基于计算机的测试。而基于计算机的测试又可以分为白盒测试和黑盒测试。原则上讲,软件测试分为静态测试和动态测试两类。静态测试包括代码审查和静态分析,动态测试包括白盒测试和黑盒测试。[2]
测试虽然是软件生存周期的一个独立阶段,但测试工作却渗透到从分析、设计直到编程的各个阶段中,如测试计划的编写从分析和设计阶段就开始了,而具体的测试工作随编程工作的不断深入也在进行中。在实际工作中,测试环节可分为明显的、同等重要的三个阶段:即单元测试、集成测试(又称构件测试)和系统测试。
2.3.1单元测试
软件单元定义了一个软件很底层的块,用PB开发的客户机/服务器的软件系统中,一个窗口、函数、菜单、报表或一个存储过程都可以作为一个单元进行测试。单元测试是测试的第一步。由开发者自己进行测试最合适,一般采用白盒测试。
2.3.2集成测试
在将所有的单元经过测试以后,接着进行集成测试。集成测试也称综合测试,即将已分别通过测试的单元按要求组合起来再进行的测试,以检查这些单元之间的接口是否存在问题。要求参与的人熟悉单元的内部细节,又要求他们能够从足够高的层次上观察整个系统。集成测试阶段是以黑盒法为主,在自底向上集成的早期,白盒法测试占一定的比例,随着集成测试的不断深入,这种比例在测试过程中将越来越少,渐渐地,黑盒法测试占据主导地位。
2.3.3系统测试
系统测试是整个测试阶段的最后一步,所有的开发和测试在这一点上集中表现为生成一个具有一定功能的软件系统。该阶段主要对系统的准确性及完整性等方面进行测试。主要进行:功能确认测试、运行测试、强度测试、恢复测试、安全性测试等。系统测试的测试人员由测试组成员(或质量保证人员)或测试组成员与用户共同测试。在整个系统开发完成,即将交付用户使用前进行。在这一阶段,完全采用黑盒法对整个系统进行测试。
3 软件测试方法与软件测试工具
3.1软件测试方法
软件测试方法是软件测试技术的一个重要的组成部分,引入自动化测试可以提高软件质量,节省经费,缩短软件产品的周期。软件测试自动化就是通过测试工具或其他手段,按照测试工程师的预定计划对软件产品进行自动的测试,它是软件测试的一个重要组成部分,能够完成许多手工无法完成或者难以实现的一些测试工作。[3]
3.2软件测试工具
自动化测试工具可以减少测试工作量,提高测试工作效率。在实际应用中,首先是能够选择一个合适的且满足企业信息系统工程坏境的自动化测试工具,因为不同的测试工具,其面向的测试对象是不一样的。按照测试工具的主要用途和应用领域将测试软件做了一个整理归纳,将自动化测试工具分为以下几类:
3.2.1捕获错误用途
用于捕获软件错误或程序调试。常用的软件:一个是开发人员自行编写的测试工具;另一个是利用所使用的开发工具的调试功能或工具;最后就是购买专业的调试软件。如:Compuware NuMega推出的一系列的调试软件。
3.2.2一般用途
一般用途的测试工具在进行测试时,可以适用大部分的软件。如Sysinternals网站提供的一些免费软件。
3.2.3GUI自动化用途
这类软件除了提供在窗口界面中使用外,也有不少是针对浏览器窗口开发的自动化测试工具。主要代表:Rational公司的Robot、Compuware的QARun等。
3.2.4专项用途
以专项用途为主的测试工具,就是某种专项测试的软件。专用代码测试工具:BoundsChecke、CodeReview、JCheck;白盒测试工具:Logiscope和PRQA、DevPartner、Rational Purify系列等;网络测试工具:Network Associates提供的Network Sniffer。
3.2.5软件产品功能、性能测试用途
IBM Rational系列包括多款测试产品,如功能测试工具IBM Rational Manual Tester、IBM Rational Functional Tester和IBM Rational Robot。如性能测试工具:手动测试工具IBM Rational Performance Tester和IBM Rational Robot。(Robot包括功能测试和性能测试)
3.2.6测试管理工具
一般而言,测试管理工具对测试需求、测试计划、测试用例、测试实施进行管理,并且测 试管理工具还包括对缺陷的跟踪管理。测试管理工具能让测试人员、开发人员或其他的IT人员 通过一个中央数据仓库,在不同地方就能交互信息。主要代表:TestDirector MI的测试管理工具、TrackRecord、Bugzilla、QC(quick center)。
3.2.7测试辅助工具
这些工具本身并不执行测试,例如它们可以生成测试数据,为测试提供数据准备。常用工具:SmartDraw、SDemo。
4 结束语
软件测试是软件工程的一个范畴。软件测试是有计划、有目的的工程性的活动。软件测试是使用人工或者自动化的手段来运行或测试某个系统的过程其目的在于检验是否满足某种预期的结果。软件测试目的是发现错误。一个好的测试用例是发现未发现的错误。一个经过测试的软件不能就说是完全正确的。软件测试是保证软件质量的一个重要手段。因此,软件测试应该贯穿与软件工程的始终。
参考文献:
[1]王水.软件工程[M].郑州:河南科学技术出版社,2008.
软件测试范文3
关键词:软件测试;系统测试;线索;压力测试;性能测试
中图分类号:TP39文献标识码:A文章编号:1007-9599 (2012) 05-0000-02
一、引言
软件测试作为软件质量保证的关键技术之一,其目的就是能够有效地发现软件中的错误或缺陷。系统测试是对完整集成后的系统进行测试的阶段,用来评价系统对具体需求规格说明的符合性,系统测试是在单元、组件和集成测试阶段之后进行的。主要针对软件系统和其他系统元素(及硬件、数据库和人机交互信息)组合构成完整的计算机应用系统中所有的元素配合是否合适以及整个系统的功能、性能、执行强度、安全性等是否达到规定标准而进行的测试。
二、系统测试概述
(一)系统测试概念
所谓系统测试是将通过集成测试的软件系统,作为计算机系统的一个重要组成部分,与计算机硬件、外设、某些支撑软件的系统等其他系统元素组合在一起所进行的测试,目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或矛盾的地方。
(二)系统测试前的准备工作
系统测试前的准备工作主要包括:对系统各种功能的描述;系统要求的数据处理及传输的速率;对系统性能的要求;对备份及修复的要求;对兼容性的描述;对配置的描述;对安全方面的要求等。
(三)系统测试的测试数据
系统测试所用的数据必须尽可能地像真实数据一样精确和有代表性。可以使用真实数据或者使用真实数据的一个复制,复制数据的质量、精度和数据量必须尽可能地代表真实的数据。
(四)系统测试与确认测试区别
确认测试始于集成测试的结束,那时已测试完单个构件,软件已组装成完整的软件包,且接口错误已被发现和改正。在确认测试时,传统软件与面向对象软件的差别已经消失,测试便集中于用户可见的动作和用户可识别的系统输出。
1.确认测试准则
软件确认是通过一系列表明已符合软件需求的测试而获得的。测试计划和规程都是用于确保满足所有的功能需求,具有所有的行为特征,达到所有的性能需求,文档是正确的、可用的。执行每个确认测试用例之后,存在下面两种可能条件之一:(1)功能或性能特征符合需求规约,因而被接受;(2)发现了与规约的偏差,创建缺陷列表。
2.配置评审
评审的目的是保证所有的软件配置元素已正确开发、编目,且具有支持软件生命周期的支持阶段的必要细节。
3.α测试与β测试
α测试是由最终用户在开发者的场所进行。软件在自然的环境下使用,开发者站在典型用户的后面观看,并记录错误和使用问题。α测试在受控的环境下进行。
β测试是最终用户场所执行。开发者通常不在场,因此,β测试是在不为开发者控制的环境下软件的现场应用。最终用户记录测试过程中遇见的所有问题(现实存在或想象的),并将其定期地报告给开发者。接到β测试的问题报告之后,软件工程师进行修改,然后准备向最终用户软件产品。
二、系统级功能测试技术
(一)线索的概念
线索(thread)的概念很难定义。事实上,一些已经公开的定义都是矛盾、容易产生误导或错误的。可以把线索看作是一种不需要形式化定义的原始概念。以下是对线索的多种看法:一般使用的场景;系统级测试用例;激励/响应对;由系统级输入序列产生的行为;端口输入和输出事件的交替序列;系统状态机描述中的转换序列;对象消息和方法执行的交替序列;机器指令序列;源指令序列;MM-路径序列;原子系统功能序列。
(二)需求规约的基本构造元素
根据一组基本需求规约构造元素,即数据、行动、设备、事件和线索,来讨论系统测试。每个系统都可以使用这五种元素表示。
1.数据
主要包括:变量、数据结构、字段、记录、数据存储和文件、实体关系模型高层数据描述。
2.行动
以行动为中心建模仍然是需求规约的一种常见形式,这是因为有命令式程序设计语言以行动为中心性质的历史原因。行动有输入和输出,这些输入和输出既可以是数据,也可以是端口事件。行动还可以分解为低层活动,例如数据流图。
3.设备
每个系统都有端口设备,这些端口设备是系统级输入和输出(端口事件)的源和目的地。在技术上,端口是I/O设备接入系统的点。
4.事件
事件既有数据方面的一些特征,又有行动方面的一些特征。事件是发生在端口设备上的系统级输入(或输出)。可以是离散的,也可以是连续的(例如温度、高度或压力)。端口输入事件是物理到逻辑的转换,同样,端口输出事件是逻辑到物理的转换。
5.线索
因为要测试线索,因此测试人员通常不能在数据、事件和行动之间的交互中找出线索。线索本身出现在需求规约中的惟一地方,是使用快速原型法并结合场景记录器。
(三)线索测试的结构策略及功能策略
结构策略实际上是基于有限状态机的行为建模中的结构来寻找测试线索的。首先自底向上组织各层次的状态机,然后寻找线索覆盖每个状态机的节点和边,同时还要找出节点与边覆盖指标。
线索测试的功能策略
1.基于事件的线索测试
(1)端口输入事件覆盖指标
五个覆盖指标为覆盖端口输入事件提供了一组线索:
(1)PI1:每个端口输入事件发生。
(2)PI2:端口输入事件的常见序列发生。
(3)PI3:每个端口输入事件在所有“相关”数据语境中发生。
(4)PI4:对于给定语境,所有“不合适”的输入事件发生。
(5)Pl5:对于给定语境,所有可能的输入事件发生。
(2)端口输出事件覆盖指标
根据端口输出事件定义两种覆盖指标:
(1)PO1:每个端口输出事件发生。
(2)PO2:每个端口输出事件在每种原因下发生
2.基于端口的线索测试
基于端口的测试是基于事件测试的有用补充。
对于每个端口都要询问端口上会出现什么事件。然后根据每个端口的事件列表寻找使用输入端口和输出端口的线索。有些需求规约技术要求提供这种端口的事件列表。
设备和事件之间的多对多测试应该在两个方向上进行:基于事件的测试覆盖从事件到端口的一对多关系,反之,基于端口的测试覆盖从端口到事件的一对多关系。SATM系统不能使用这种测试,因为SATM不发生在多个端口上。
三、系统测试的主要内容
系统测试一般要完成以下几种测试:功能测试、性能测试、可靠性、稳定性测试、兼容性测试、恢复性测试、安全性测试、强度测试、面向用户支持方面的测试、其他限制条件的测试。下面就对常用的系统测试做一个介绍:
(一)压力测试
压力测试是指模拟巨大的工作负荷以查看或评估应用程序在峰值或超越最大负载使用情况下如何执行操作。压力测试有如下特点:可以测试系统的稳定性;一般需要对用户的使用情况进行模拟。压力测试的方法包括:并发测试法、增加量级法、重复测试法。
(二)性能测试
性能测试一般需进行:对软件计算的精度有要求时,设计测试用例;对软件有时间要求时,设计测试用例;测试为完成功能所处理的数据量;测试程序运行所占用的空间;测试对系统的负载潜力;测试配置项各部分的协调性;测试软件性能和硬件性能的集成;测试系统对并发事务和并发用户访问的处理能力。
(三)恢复性测试
多数基于计算机的系统必须从错误中恢复并在一定的时间内重新运行。恢复性测试是通过各种方式强制地让系统发生故障并验证其能适当恢复的一种系统测试。若恢复是自动的(由系统自身完成),则对重新初始化、检查点机制、数据恢复和重新启动都要进行正确性评估。若恢复需要人工干预,则估算平均恢复时间(mean-time-to-repair,MTTR)以确定其是否在可接受的范围之内。
(四)安全性测试
安全性测试验证建立在系统内的保护机制是否能够实际保护系统不受非法入侵。系统的安全必须经受住正面的攻击,但是也必须能够经受住侧面和背后的攻击。在安全性测试过程中,测试者扮演试图攻击系统的角色。测试者可以试图通过外部手段获取密码;可以通过瓦解任何防守的定制软件来攻击系统;可以“制服”系统使其无法对别人提供服务;可以有目的地引发系统错误以期在其恢复过程中入侵系统;可以通过浏览非保密数据,从中找到进入系统的钥匙等等。
四、结语
系统测试有助于在其部署中客户发现缺陷之前,尽可能多滴发现缺陷,在系统测试期间要验证完整产品的行为,包括设计多个模块、程序和功能的测试,测试完整产品的行为是很关键的,因为很多人错误地认为经过单独测试的组件放到一起后仍能正常运行。
参考文献:
[1]薛冲冲,陈坚.软件测试研究[J].计算机系统应用,2011,2
[2]陶幸辉,宋志刚.软件系统测试类型及测试用例设计[J].科技经济市场,2011,6
[3]朱家云.浅析软件测试[J].信息系统工程,2011,4
[4王丽达.论软件系统的测试[J].经济研究导刊,2011,14
软件测试范文4
关键词 软件测试 软件生命周期 软件测试评估
中图分类号:TP311 文献标识码:A
0前言
自从IBM 360操作系统开发的失败以来,软件危机便进入人们的视野并备受关注。如今,在软件产业化发展的大趋势下,人们对软件的质量、成本和开发进度的要求也越来越高,质量控制的含义已经超越了传统意义上的软件测试的要求及规范。传统的软件测试大多是基于代码运行的,并且常常是在软件开发的后期才开始进行的。但大量研究表明,设计活动引入的错误占软件开发过程中出现的所有错误数量的50%~65%,因此,越来越多的声音呼吁,要求有一个贯穿于软件开发各个阶段的软件测试过程。
1软件测试的发展历程
按照时间划分可以把软件测试的发展史划分为5个阶段,这五个阶段分别是面向调试、面向证明、面向查错、面向评估以及面向预防的测试。1956年之前是面向调试的测试,是软件测试的第一个阶段。早期的开发过程中,由于软件规模小,软件测试是为了纠正软件的故障等同于软件调试。那时进行软件测试较晚,测试工作一般是由开发人员进行;面向证明的测试从1957年开始到1978年结束,是软件测试的第二个阶段。此时软件测试作为一种独立、客观地查找软件缺陷的活动,与调试区分开来。但是该阶段的软件测试虽然作为一门独立的学科,仍处于作为软件开发的辅助方法的萌芽阶段;软件测试的第三阶段是从1979年开始到1982年结束,称为面向查错的测试。在这一时期,软件人员设计和开发程序的逻辑越来越严密,不仅要考虑程序正常状态下的运行情况,也要考虑程序在各种错误操作和数据下的承受能力,软件测试促进了程序质量的提高。但是这一阶段对于软件测试的理解并不太成熟,往往过分强调找到软件中的错误;软件测试的第四阶段,即面向评估的测试,从1983年开始到1987年结束,该阶段的测试是面向评估的测试。在这一时期,软件测试不仅得到了蓬勃发展,而且软件测试的目的变得客观成熟;1988年至今,是软件测试的第五个阶段,即面向预防的测试。这一阶段测试是为了度量和提高软件的质量,对软件进行工程设计、实施和维护的整个生命周期过程。软件测试技术的研究取得了很大的突破,不仅出现了很多测试模型,而且也出现了很多商业化的测试工具。
2软件测试的理论基础
2.1软件测试的定义
软件测试是在软件生命周期内运用技术手段保证软件质量的一门学科。其主要内容包括软件验证技术、软件确认技术和软件测试管理技术这三大部分。软件测试是根据软件开发各阶段的规格说明和程序的内部结构精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例运行程序以及发现错误的过程,即执行测试步骤。
2.2软件测试的目的
(1)测试是为了证明程序有错,而不是证明程序无错。
(2)一个好的测试用例在于它能发现至今未发现的错误。
(3)一个成功的测试是发现了至今未发现的错误的测试。
2.3软件测试的主要方法
随着软件测试技术的日臻成熟,软件测试方法与技术已经发展得较为完善,现今软件测试的方法很多,以下主要介绍几种常用的软件测试方法。
静态测试不对代码进行运行,而是借助专业的软件测试工具评审软件文档或程序,度量静态复杂度,通过分析或检查源程序的文法、结构、过程、接口等来检查程序的正确性,借以发现程序的不足之处,降低程序出现错误的概率。静态测试包括代码审查、静态结构分析、代码质量度量等。
动态测试是通过人工或使用工具运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能。该方法有三部分组成:构造测试实例、执行程序、分析程序的输出结果。
黑盒测试是在软件的功能知道的前提下,通过测试来检测每个功能是否正常使用,是一种验证性方法。测试的过程中程序的内部是不可见的,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息的完整性。
白盒测试又称为结构测试,与黑盒测试不同,它是在知道产品的内部工作过程,检测产品内部动作是否按照规格说明书的规定正常运行、按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定的要求正确工作。白盒测试的主要方法有逻辑驱动、路径测试等,主要用于软件验证。
灰盒测试介于黑盒测试和白盒测试之间,主要用于测试各个组件之间的逻辑关系是否正确,重点在于测试程序的处理能力和健壮性,相对黑盒测试和白盒测试而言,投入的时间较少,维护量也较小。
3软件测试的评估
软件测试评估是在测试结束后对整个测试过程与产品进行评估的过程,主要包括对于测试工作的总结、缺陷数据的分析及测试过程的评估。
由图1可知,加入了测试评估的测试过程能形成一个完整的测试反馈系统,由此可见测试评估非常的重要。软件测试评估是对软件测试工作整体进展状况的监督和评价,是保证测试完整性和有效性的重要工作。软件测试评估贯穿于软件测试的整个过程,软件测试评估的方法主要包括覆盖评估和质量评估。
覆盖评估是对测试完全程度的评估,其建立在测试覆盖的基础之上,这通常与测试的定义相关,与完成计划的程度相关。在测试的过程中,一些关于发现测试缺陷本身状态的评估会展现出来,除此之外随着测试工作的推进,测试完成的量会越来越多,所有这些与缺陷相关的测试评估称为测试质量评估。质量评估是对测试软件的整体质量状况的评估,其建立在对测试的过程中发现的软件缺陷的分析和修复基础之上。它不断监控软件测试过程中总结出来的中间结果,然后通过对这些中间结果的分析又反过来对软件测试的过程进行指导。
4结语
虽然在近年来,中国的软件产业得到了飞速地发展,但国内很少开发出世界范围内通用的软件,且开发出的软件在性能和质量上也无法和国外大公司开发的产品相比较。软件测试作为软件开发过程中的一个重要环节,长期以来一直滞后于中国软件产业的发展。软件测试作为一种保障软件质量的一种技术,应该贯穿于软件生命周期的整个过程,通过严格的软件测试可以将软件中的错误减少到可以接受的程度,从而提高软件的质量。
参考文献
[1] 秦航,杨强.软件质量保证与测试[M].北京:清华大学出版社,2012(1).
软件测试范文5
关键词:软件测试;软件工程;软件质量;可靠性
中图分类号:TP311
1软件可靠性分析
1.1软件可靠性定义
软件可靠性是指在一定的时间间隔、给定的软件的运行环境下,程序按照设计要求执行一定的功能的能力。从软件的可靠性定义可以看出,软件的可靠性有3个要素:规定的时间、特定的运行环境和规定的软件完成的任务与功能。
(1)规定的时间
软件可靠性体现的是运行阶段的软件的性能,所以度量规定的时间的量应当是软件的运行时间。运行时间包不但包括系统运行后的工作时间,还包括开启但是空闲的时间。由于在运行软件时,程序路径和运行的环境的选取都具有随机性,软件的失效是一个随机事件,因此,软件的运行时间是一个随机变量。
(2)规定的环境条件
环境条件是指软件运行所处的环境。它包括支持软件系统运行的各种要素,例如,运行软件的操作系统、支持运行的硬件、其它的支持软件、输入的数据格式及范围等。在不同的环境条件运行同一个软件,得出的是不同的可靠性。详细的说,假定其他的因素是理想的,规定的环境条件主要包括支持软件运行的计算机的配置以及数据的输入格式等要求。在明确了软件规定的运行环境下,有利于准确的判断软件失效是研制方还是客户方的责任。
(3)规定的功能
软件规定的任务和功能也是影响软件可靠性的一个因素。当完成不同的任务时,会有不同的软件运行剖面,软件调用的子模块,即程序选择的路径,就会不同,就可能会得到不同的可靠性。所以明确软件的任务和功能是准确度量软件系统的可靠性的一个最重要的先决条件。
1.2软件可靠性度量
软件可靠性度量是定量的评价软件产品具有的可靠性程度。具体是采用统计技术统计出软件在运行测试期间的失效数据,从而根据数据评估软件的可靠性。可靠性的定义是某种产品在规定的时间和条件下完成某种功能的能力,可靠度是可靠性的概率的度量。
软件可靠性是软件的一个固有特性,是衡量软件在按照设计目标和用户的要求执行其特定的功能的正确程度。软件可靠性不仅与软件本身的缺陷有关,也和系统的输入和使用有一定的关系。从理论上来讲,一个可靠的软件必须是具有以下四个性质:正确性、一致性、完整性和健壮性。然而在实际中,没有软件能够保证完全正确,也无法准确的度量其精确度。通常情况下,是通过测试软件系统来估计其可靠性的。
为了进行软件可靠性评估,首先需要了解软件的可靠性模型。软件可靠性一般需要通过建立数学模型和可靠性框图而进行估算,这些数学模型和可靠性框图就是软件的可靠性模型。建立可靠性模型的目的是把较为复杂的可靠性分解为多个简单的系统的可靠性,从而方便评价复杂系统的可靠性。
1.3软件可靠性的测试实施
上述工作完成后,就可以进行测试。进行软件可靠性测试必须按照研制方交付的软件文档中与可靠性相关部分的文件、文档、数据等要求。在用户文档、需求说明书和项目合同中规定的配置要求下,必须全部测试程序和数据。
在软件可靠性测试中,可以考虑输入比正常的输入在允许的一定范围内更恶劣的输入,即强化输入。如果在强化输入下,软件的运行依然可靠,那说明软件的强化输入比正规输入的情况更可靠。为了获得更多的软件可靠性数据,应该增加软件的累积运行时间,比如,可以采用多台计算机同时运行软件。
1.4可靠性数据收集
对软件进行可靠性评估的依据是软件的可靠性数据。为了收集软件的可靠性数据,应该建立一个具有软件错误报告、分析与纠正功能的系统。根据行业标准的规定,编制完成软件错误报告、可靠性数据收集、分析与处理的规则,准确、完整的收集软件测试阶段的可靠性数据。
收集可靠性数据主要包括下面四个方面的数据:失效时间数据、失效间隔时间数据、分组数据和分组时间内的累积失效数。失效时间数据是指软件在运行过程中发生一次失效而总共经历的时间。失效间隔时间数据是指软件测试时某次失效与下一次失效之间的间隔时间。分组数据是指在一个时间段内软件总共发生几次失效。分组时间内的累积失效数是指某个区间内的累积失效数。
每一次测试记录都要包含以下详细信息:测试时间;测试说明或者计划;和测试相关的所有的结果;参与测试的人员的详细信息。
1.5编写测试报告
软件测试结束后,下面的工作便是编写《软件可靠性测试报告》,总结和归纳软件测试中的测试项和测试结果。测试报告的内容一般包括下面的几个方面内容:软件的标识;软件测试时的计算机软件和硬件的配置;测试所使用的文档;对软件的说明;程序和数据的测试结果;软件的测试最终日期。采用规范的管理控制,能够保证在软件测试阶段获得真实的可靠性数据,从而能够客观的评价软件的可靠性。
2软件测试
2.1软件测试的定义
软件测试是保证软件质量的一个关键步骤,也是软件生存期中一个阶段。简单来讲,软件测试就是通过对软件需求的分析、设计的规格以及编码进行的最后的审核活动。软件测试的定义为:使用某种手段通过运行软件系统来检查软件系统是否满足设计的要求或者是测试结果是否与实际要求的功能相满足。从定义可以看出,软件测试的目的是确定软件是否与设计的需求相满足。
现在,从客户的角度来看,软件测试的目的是希望通过这个测试过程,发现软件中隐藏的错误和缺陷。因此,也可以说,软件测试是为了发现软件系统中的错误而执行程序的一个过程。为了达到这个目的,需要设计出一批测试用的输入数据及其预期的输出结果,通过这些测试用例去测试运行的程序能否输出预期的结果。
2.2软件测试的方法
软件测试方法包括两类:黑盒测试方法和白盒测试。黑盒测试是在不考虑程序内部结构及其特性的情况下检查输入与输出是否达到预期的结果的测试,所以又称为功能测试等。而白盒测试则是在已知程序内部结构的情况下而设计测试用例的测试方法,又称为结构测试等。一般情况下,如果进行的是独立测试,则适合采用黑盒测试方法,如果进行的是单元测试,则采用白盒测试法。
测试用例是对客观存在的程序的一种抽象,是对程序中的目标、运动和结果等的一种描述。设计测试用例是对软件的某种功能而设计出的测试方案,以文档的形式编制。在设计测试用例时,不仅能够考虑到普通的情况,还应该考虑到边界值以及极限值等特殊情况。为了达到测试时发现软件系统中的隐藏缺陷,所以在选择输入输出数据和测试用例时,必须结合软件的运行环境,尽可能的选择出所有具有代表性的测试用例和数据,从而全面的判断输入输出结果与实际设计是否符合。得到软件测试的数据后,对其进行处理,以此为依据来判断软件系统能否满足设计需求。
3结束语
综上所述,本文通过对软件测试与可靠性评估方法进行了分析与研究。根据多年的经验表明,采用现场试验的方法是评估软件可靠性的最好的方法。影响软件的可靠性的因素有很多,最大的一个因素是关于可靠性的数据不足。所以在实际的软件测试与可靠性分析时,必须根据丰富的历史可靠性试验信息统计来评估全系统的可靠性。
参考文献:
[1]潘立武,杨健.谈应用软件测试方法[J].福建电脑,2007,7.
软件测试范文6
1 软件开发和软件测试
软件开发和软件测试都是软件工程定义里的重要阶段。软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发人员主要工作是对用户需求进行分析,根据需求分析进行系统设计、程序编码、单元测试和软件缺陷的修复。
软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(包括输入数据与预期输出结果),并利用这些测试用例运行软件,以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷的过程。在软件投入运行前,软件测试对软件需求分析、设计规格说明和编码最终复审,是软件质量保证的关键步骤。
2 软件开发和软件测试的关系
在软件项目团队中,软件开发和软件测试都是其重要的项目成员,两者都有共同的目标就是实现用户需求,保证软件高品质的交付到用户手中。有开发就会有测试,开发人员先实现软件,测试人员对软件进行测试找出程序错误和缺陷,并提交开发进行修复。软件开发和软件测试通过这样互相合作,逐步解除软件隐藏的程序错误和潜在风险,使软件产品更逼近于用户需求。
软件开发和软件测试的工作交集就是软件缺陷,在软件缺陷的定义和处理上往往容易发生意见分歧。在这个时候,作为软件测试人员,如何处理和应对好和软件开发的关系,保持高效的团队协作能力就显得尤为重要。
3 软件测试对软件开发关系的处理方法及技巧
3.1 尊重开发成果
作为测试人员要保持良好的心态,要尊重开发的工作成果。有的测试人员接到开发提交测试的软件,在开始测试后碰到这样那样的问题,有的可能是显而易见的问题时,就会心生抱怨,甚至言语上抨击开发人员技术水平低,单元测试没做好,这样很容易导致开发人员对测试人员的反感和抵触,造成两者关系紧张。其实,你要理解开发人员也是在时间紧,任务重,经过加班加点的情况下开发出来的程序,有错误那是肯定的,我们测试人员的职责就是要帮助他们找到软件里面的 Bug,帮助他们改进软件质量。所以,测试人员要保持好的心态,理解开发人员的辛劳,尽好测试职责努力帮助他们。
3.2 提交缺陷技巧
日常工作中测试与开发打交道最多的莫过于在软件缺陷的定义和处理上了。怎样能够让开发人员更乐于接受测试提交的缺陷并改进它,测试人员要注意以下几点:
3.2.1 换位思考,多站在开发人员的角度想
开发人员将软件提交测试后,他们最焦急等待的测试结果基本上都是系统逻辑跑不跑得通,数据流转是否正确。测试人员在这方面就要注意测试技巧和提交Bug的优先顺序。测试时优先按业务流程测试整个系统逻辑,把影响系统逻辑的错误找出来优先提交给开发人员,这时候的开发人员会很喜欢修改这些问题。测试中碰到一些不影响系统逻辑的Bug我们先暂且记录下来,待第一批都修改完毕,测试才提交如界面美观、输入输出控制等改进型的Bug,这样有主次的提交 Bug顺序,开发更易于接受。
3.2.2 Bug描述要清晰准确
测试人员发现的BUG是开发人员改进的重要依据,好的Bug描述对于正确的和高效的解决Bug非常重要。测试人员在描述Bug时,语言要简明准确,杜绝使用“好像、有时、偶尔、几分钟、一段时间”等模糊词语;描述的内容不是越多越好,只要提供有利于开发人员快速定位的必要信息即可。具备一定开发经验,水平较高的测试人员还能通过错误现象,定位程序可能出错的地方,提出问题查找的方向。
3.2.3 避免提交重复和无效的Bug
测试人员在遇到Bug时,要先进行问题分析,这个问题是独立出现还是整个系统都普遍存在,如果是普遍问题,只需要提交一个Bug即可。过多的同一问题根源的Bug会令开发人员厌烦。另外,测试人员不但要熟悉业务需求,还要熟悉软件系统的操作和使用,提交由于操作错误而非程序问题引起的Bug,容易导致开发对测试失去信任。如果测试人员在不确定是否Bug的时候,可先向开发人员进行询问确认。
3.3 注重沟通
(1)测试人员与开发人员最容易产生分歧的就是对缺陷的定义,这时候面对面的讨论比在即时通讯工具上数十个来回的争论来得直接、有效、清晰。讨论的时候,测试人员应说说自己的测试方法,让开发明白你的测试内容和做法都是站在用户的角度去测试和看待问题。
(2)不要期望所有的Bug都会被开发人员修复,浪费太多的时间去争论一些不影响系统本质的非关键点反而会得不尝失,应该允许开发人员保持不同的观点,问题可留待下个版本完善。
(3)平时多与开发人员交流,了解他们负责的模块和实现方法,这样有助于自己对系统有更深入的认识,改善测试方法和测试技巧,帮助开发改进软件质量。
4 总结
软件测试与软件开发保持良好的合作关系,能够使项目团队具备更高的凝聚力,极大的提升团队协作能力,是顺利、高效的实施软件项目的有力保障。