
摘 要软件在开发过程中不可避免的要出现各种错误,为了最大限度地确保其质量必须进行软件测试。文章即对软件测试的主要方法进行了介绍与说明,以供参考。关键词软件质量;软件测试;黑盒测试;白盒测试
1、引言
随着计算机技术的迅速发展和越来越广泛深入地应用于国民经济和社会生活的各个方面,随着软件系统的规模和复杂性与日俱增,软件的生产成本和软件中存在的缺陷和故障造成的各类损失也大大增加,甚至会带来灾难性的后果。软件质量问题已成为所有使用软件和开发软件的人关注的焦点。
由于软件是人脑的高度智力化的体现和产品这一特殊性,不同于其他科技和生产领域,因此软件与生俱来就有可能存在着缺陷。如何防止和减少这些可能存在的问题呢?回答是进行软件测试。
测试是最有效的排除和防止软件缺陷与故障的手段,并由此促进了软件测试理论与技术实践的快速发展,新的测试理论、测试方法、测试技术手段在不断涌出,软件测试机构和组织也在迅速产生和发展,由此软件测试技术职业也同步完善和健全起来。
无论怎样强调软件测试的重要性和它对软件可靠性的影响都是不过分的。在开发大型软件系统过程中,我们力求在每一个阶段结束之前通过严格的技术审查,尽可能早地发现并纠正差错,如果在软件投入生产性运行之前,没有发现并纠正软件中的大部分差错,则这些差错终究会在生产过程中暴露出来的,那时不仅改正这些差错的代价更高,而且往往会造成很恶劣的后果。测试的目的就是在软件投入生产运行之前,尽可能多地发现错误。
2、软件测试的基本问题
一个软件生命周期包括:制定计划、需求分析定义、软件设计、程序编码、软件测试、软件运行、软件维护、软件停用等8个阶段。
软件测试的根本目的是为了保证软件质量。软件质量是指与软件产品满足规定的和隐含的需求的能力有关的特征或特征的全体。软件质量反映以下三个方面:
1)软件需求是度量软件质量的基础。
2)在各种标准中定义开发准则,用来指导软件人员用工程化的方法来开发软件。
3)往往会有一些隐含的需求没有明确地提出。如果软件只满足那些精确定义的需求,而没有满足这些隐含的需求,软件质量也不能得到保证。
软件质量内涵包括:正确性、可靠性、可维护性、可读性、结构化、可测试性、可移植性、可扩展性、用户界面友好性、易学、易用、健壮性。
3、软件测试的原则
1)尽早地和及时地测试应作为软件开发人员的座右铭,测试应当从软件产品开发初始阶段即开始。
2)测试用例应当由测试数据和与之对应的预期结果这两部分组成。
3)在程序提交测试后,应当由专门的测试人员进行测试,避免由程序设计者自行检查程序。
4)测试用例应包括合理的输入条件和不合理的输入条件。
5)严格执行测试计划,排除测试的随意性。
6)充分注意测试当中的群体现象,测试经验表明,约一半(47%)的错误仅与系统中4%的程序模块有关。
7)应对每一个测试结果做全面的检查。
8)保存测试计划、测试用例、出错统计和最终分析报告,为维护工作提供充分的资料。
4、软件测试的种类及方法
软件测试的种类大致可以分为人工测试和基于计算机的测试。而基于计算机的测试又可公为黑盒测试和白盒测试。这些测试方法在软件开发的最后检测阶段有着重要的作用。
41黑盒测试
黑盒测试又称功能测试。黑盒测试顾名思义就是将被测系统看成一个黑盒,完全不考虑程序的内部结构和处理过程,从外界取得输入,然后再输出。也就是,黑盒测试是在程序接口进行的测试,它只是检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并保持外部信息的完整性。
黑盒测试在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等。
42白盒测试
白盒测试也称结构测试,白盒测试需要知道产品内部工作过程,可以通过测试来检测产品内部动作是否按照规格说明书的规定正常进行。也就是说,完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能。白盒测试的主要方法有逻辑驱动、基本路径测试等,主要用于软件验证。
粗略看起来,不论采用上述哪种测试方法,都不可能把所有可能的输入数据都拿来进行所谓的穷举测试,因为可能的测试输入数据数目往往达到天文数字。因为不可能穷尽测试,所以软件测试不可能发现程序中的所有错误,也就是说,通过测试并不能证明程序是正确的。但是,我们的目的是要通过测试保证软件的可靠性,尽可能地发现错误并纠下错误,提高软件的质量,因此,必须仔细考试设计测试方案,力争用尽可能多的测试发现尽可能多的错误。
参考文献
[1]许静,陈宏刚,王庆人等软件测试方法简述与展望[J]计算机工程与应用,2003,39(13):75-78
[2]戴凌宸,张朕荣,黎丰泽等传统的软件测试方法浅析[J]科技风,2011,(16):136-137
[3]董洁,孙惠娟软件测试方法及面向对象软件的测试[J]河南科技:上半月,2011,(9):45-46
[4]马海云,魏凯斌一种新的软件测试方法的研究[J]自动化与仪器仪表,2010,(3):4-5
[5]崔赛英基于结构化软件测试方法探究[J]软件导刊,2011,10(12):32-34
[6]周小涵,丁晓明一种基于构件的嵌入式实时软件测试方法[J]科学技术与工程,2010,10(13):3116-3120
目前由于软件测试工作在软件的生产过程中越来越重要,很多软件测试工具应运而生,这里介绍一下目前最流行的一些软件测试工具,一个十个,介绍如下:
一、企业级自动化测试工具WinRunner
这款软件是MercuryInteractive公司的。
WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用 *** 作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。
二、工业标准级负载测试工具Loadrunner
这款软件是惠普公司开发的。
LoadRunner是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
三、功能测试工具RationalRobot
IBMRationalRobot是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进行成功的测试。它集成在测试人员的桌面IBMRationalTestManager上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能是自动化测试的理想开始。
四、功能测试工具SilkTest
BorlandSilkTest2006属于软件功能测试工具,是Borland公司所提出软件质量管理解决方案的套件之一。这个工具采用精灵设定与自动化执行测试,无论是程序设计新手或资深的专家都能快速建立功能测试,并分析功能错误。
五、功能和性能测试的工具JMeter
JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。
六、单元测试工具xUnit系列
目前的最流行的单元测试工具是xUnit系列框架,常用的根据语言不同分为JUnit(java),CppUnit(C++),DUnit(Delphi),NUnit(net),PhpUnit(Php)等等。该测试框架的第一个和最杰出的应用就是由ErichGamma(《设计模式》的作者)和KentBeck(XP(ExtremeProgramming)的创始人)提供的开放源代码的JUnit
七、全球测试管理系统testdirector
TestDirector是业界第一个基于Web的测试管理系统,它可以在您公司内部或外部进行全球范围内测试的管理。通过在一个整体的应用系统中集成了测试管理的各个部分,包括需求管理,测试计划,测试执行以及错误跟踪等功能,TestDirector极大地加速了测试过程。
八、自动化白盒测试工具Jtest
Jtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。parasoft同时出品的还有C++test,是一款C/C++白盒测试工具。
九、性能测试工具WAS
MicrosoftWebApplicationStressTool是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的Client端计算机仿真大量用户上线对网站服务所可能造成的影响。
十、性能测试和分析工具WEBLODE
webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的 *** 作,生成压力负载来测试web的性能。
1、从是否关心内部结构来看
(1)白盒测试:又称为结构测试或逻辑驱动测试,是一种按照程序内部逻辑结构和编码结构,设计测试数据并完成测试的一种测试方法。
(2)黑盒测试:又称为数据驱动测试,把测试对象当做看不见的黑盒,在完全不考虑程序内部结构和处理过程的情况下,测试者仅依据程序功能的需求规范考虑,确定测试用例和推断测试结果的正确性,它是站在使用软件或程序的角度,从输入数据与输出数据的对应关系出发进行的测试。
(3)灰盒测试:是一种综合测试法,它将“黑盒”测试与“白盒”测试结合在一起,是基于程序运行时的外部表现又结合内部逻辑结构来设计用例,执行程序并采集路径执行信息和外部用户接口结果的测试技术。
2、从是否执行代码看
(1)静态测试:指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
(2)动态测试:是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能指标。
3、从开发过程级别看
(1)单元测试:又称模块测试,是针对软件设计的最小单位----程序模块或功能模块,进行正确性检验的测试工作。其目的在于检验程序各模块是否存在各种差错,是否能正确地实现了其功能,满足其性能和接口要求。
(2)集成测试:又叫组装测试或联合,是单元测试的多级扩展,是在单元测试的基础上进行的一种有序测试。旨在检验软件单元之间的接口关系,以期望通过测试发现各软件单元接口之间存在的问题,最终把经过测试的单元组成符合设计要求的软件。
(3)系统测试:是为判断系统是否符合要求而对集成的软、硬件系统进行的测试活动、它是将已经集成好的软件系统,作为基于整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、人员、数据等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。
在系统测试中,对于具体的测试类型有:
(1)功能测试:对软件需求规格说明书中的功能需求逐项进行的测试,以验证功能是否满足要求。
(2)性能测试:对软件需求规格说明书的功能需求逐项进行的测试,以验证功能是否满足要求。
(3)接口测试:对软件需求规格说明中的接口需求逐项进行的测试。
(4)人机交互界面测试:对所有人机交互界面提供的 *** 作和显示界面进行的测试,以检验是否满足用户的需求。
(5)强度测试:强制软件运行在异常乃至发生故障的情况下(设计的极限状态到超出极限),验证软件可以运行到何种程序的测试。
(6)余量测试:对软件是否达到规格说明中要求的余量的测试。
(7)安全性测试:检验软件中已存在的安全性、安全保密性措施是否有效的测试,
(8)可靠性测试:在真实的或仿真的环境中,为做出软件可靠性估计而对软件进行的功能(其输入覆盖和环境覆盖一般大于普通的功能测试)
(9)恢复性测试:对有恢复或重置功能的软件的每一类导致恢复或重置的情况,逐一进行的测试。
(10)边界测试:对软件处在边界或端点情况下运行状态的测试。
(11)数据处理测试:对完成专门数据处理功能所进行的测试。
(12)安装性测试:对安装过程是否符合安装规程的测试,以发现安装过程中的错误。
(13)容量测试:检验软件的能力最高能达到什么程度的测试。
(14)互 *** 作性测试:为验证不同软件之间的互 *** 作能力而进行的测试。
(15)敏感性测试:为发现在有效输入类中可能引起某种不稳定性或不正常处理的某些数据的组合而进行的测试。
(16)标准符合性测试:验证软件与相关国家标准或规范(如军用标准、国家标准、行业标准及国际标准)一致性的测试。
(17)兼容性测试:验证软件在规定条件下与若干个实体共同使用或实现数据格式转换时能满足有关要求能力的测试。
(18)中文本地化测试:验证软件在不降低原有能力的条件下,处理中文能力的测试。
4、从执行过程是否需要人工干预来看
(1)手工测试:就是测试人员按照事先为覆盖被测软件需求而编写的测试用例,根据测试大纲中所描述的测试步骤和方法,手工地一个一个地输 入执行,包括与被测软件进行交互(如输入测试数据、记录测试结果等),然后观察测试结果,看被测程序是否存在问题,或在执行过程中是否会有一场发生,属于比较原始但是必须执行的一个步骤。
(2)自动化测试:实际上是将大量的重复性的测试工作交给计算机去完成,通常是使用自动化测试工具来模拟手动测试步骤,执行用某种程序设计语言编写的过程(全自动测试就是指在自动测试过程中,不需要人工干预,由程序自动完成测试的全过程;半自动测试就是指在自动测试过程中,需要手动输入测试用例或选择测试路径,再由自动测试程序按照人工指定的要求完成自动测试)
5、从测试实施组织看
(1)开发测试:开发人员进行的测试
(2)用户测试:用户方进行的测试
(3)第三方测试:有别于开发人员或用户进行的测试,由专业的第三方承担的测试,目的是为了保证测试工作的客观性
6、从测试所处的环境看
(1)阿尔法测试:是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际 *** 作环境下进行的测试
(2)贝塔测试:是用户公司组织各方面的典型终端用户在日常工作中实际使用贝塔版本,并要求用户报告
软件测试学习思路
1、基础知识、理论知识(用例编写,测试方法,用例管理),测试思维的学习,很多人不屑理论,一股劲的扎进测试工具里面。最大的误区,工具永远学不完,测试必须的自己思路清晰。
2、数据库(mysql 、oracle、sql server),增删改查必须会 ,这个是入门,尽量会点存储过程等其他高深点的,面试表现出来,绝对是加分项。
3、Linux,必须会,现在很多WEB测试环境都是搭建在centos下,所以建议直接学习centos7,服务器一般用的这个系统,Ubuntu这些有些地方和centos还是有一点区别。
以上就是关于软件测试概述_软件测试方法概述全部的内容,包括:软件测试概述_软件测试方法概述、软件测试工具有哪些、软件测试方法是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)