自动化软件测试概述.doc_第1页
自动化软件测试概述.doc_第2页
自动化软件测试概述.doc_第3页
自动化软件测试概述.doc_第4页
自动化软件测试概述.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自动化软件测试概述自动化软件测试的实际情况自动化软件测试(Automated Software Testing,AST)这个术语从软件开发和测试社区成员那儿汲取了许多不同的含义。对于有些人来说,这个术语也许是测试驱动开发或单元测试的意思,但是对于其他人也许意味着使用捕获/记录/回放工具进行自动化软件测试。这个术语的意思也有可能是使用诸如Perl、Python、Ruby等脚本语言来定制开发测试脚本。对于另一些人,自动化软件测试也许只涉及性能测试和压力测试,或全部关注于功能测试或安全性测试。在本书中,AST指代所有这些含义。在进一步深入细节之前,明确地定义AST,以及就这个术语与读者达成一致的含义和理解很重要。我们将根据过去的工作和经验来定义AST,这同样是它的真实含义。另外,本章将讨论成功的AST工作需要什么,以及一些AST方法。在这里我们将讨论如何精简一些自动化测试工作的建议,还会讨论在整个软件测试生命周期中应用AST。1.1 自动化测试定义自动化软件测试的定义包括了所有测试阶段,它是跨平台兼容的,并且是进程无关的。一般来讲,当前作为手动测试程序部分的各种测试(如功能、性能、并发、压力等测试)都可以自动化。大家经常问这个问题:“手动测试和自动化测试有什么不同呢?”答案如下:自动化测试可以完成手动测试难以完成的工作,可以提高手动测试的工作效率。自动化测试也是软件开发。自动化测试不是要取代手动测试人员所需要的分析技能、测试策略知识和对测试技术的理解。手动测试人员的经验会作为AST的蓝图。自动化测试不可能完全和手动测试分开。相反,自动化测试和手动测试是相辅相成的。尽管开发软件将今天已有的手动软件测试全部转换成自动化测试是有可能的,然而我们的经验表明,为了适应自动化,大多数手动测试都必须经过修改。手动测试技术、实践和知识与AST是相互交织的,所以也会在本书中对其进行讨论,以对AST技术提供支持。而自动化是否可以产生合理的ROI(Return On Investment,投资回报率)是另外一个问题,这需要通过评估。经验表明,即使可以将所有测试自动化,但并不是所有测试都值得自动化。当决定是否要自动化时,我们需要考虑各种准则。如何确定哪些测试应该自动化会在第6章进一步探讨。要将ROI铭记在心,我们对AST的高层次定义是:以改进软件测试生命周期(Software testing lifecycle,STL)的效率和有效性为目标,贯穿整个STL的应用程序和软件技术的实施。AST是指跨越整个STL中的自动化工作,以及关注自动化集成测试和系统测试的工作。AST的总体目标是设计、开发和交付自动化测试,并通过重复测试来提高测试效率。若成功实施,那么它可以大幅度减少针对软件密集型系统的传统测试和评估方法、过程相关的成本、时间和资源。1.2 自动化测试的方法当有效地实施了AST时,它不完全是对图形用户界面(GUI)的捕捉和回放(但是许多人是这样理解的),也不局限于某一特定阶段的测试,同时也不是专门针对任何特定厂商的产品,它适应AUT(Application Under Test,被测试的应用)使用的特定架构或语言。本书描述的AST是过程无关的、技术无关的,并且环境无关的。遵循本书描述的实施建议,就可以实施AST,而不管是使用瀑布模型、测试驱动开发模型、Scrum或任何其他类型的软件开发模型,而且不管是测试Web应用或面向服务架构的方案,也不论你的应用运行在Linux上、Mac上或Windows上,它与环境、OS和平台都无关。如果有效地实施了AST,则可以支持下面环境的应用:在多台计算机上运行。使用不同的编程语言。在不同类型的操作系统或平台上运行。无论是否有GUI(例如,消息接口的测试,没有GUI)。运行任何网络协议,如TCP / IP、DDS协议等。在开发自动化测试框架时,以下几点应该铭记在心。它应该:对多个商业测试工具的集成提供支持,无论是开源的、自主开发的,还是来自不同的供应商(即使是市场上出现的最新的和更好的可以使用的产品)。支持无须在与SUT相同计算机上安装框架就可以进行测试。同时支持正在开发的新应用和遗留应用。支持整个测试生命周期(但并不是为了使用AST,就需要在整个测试生命周期中应用)。支持在跨多台计算机上和各种系统工程环境中进行分布式测试。如果适用,则支持在多个程序之间复用AST框架和组件。AST的实现需要一个小型的开发生命周期,包括测试需求、自动化框架的设计和构建、自动化测试的实施/验证以及执行。如果做得正确,AST将产生可重用且可扩展的框架和组件。应该应用并遵守软件开发中的最佳实践。尽管某些程序和AUT有相似的测试自动化需要和许多共同点,然而其他一些程序需要独特的、个性化的AST实现。有效实现的自动化测试框架可以适应这些独特的需求。图1-1显示的是已经用我们所描述的自动化框架方法实现的例子。在这里,我们通过在Linux和Windows平台上运行测试演示跨平台兼容性。此外,我们还展示了将各种工具作为自动化框架的一部分集成起来。在这个例子中,我们使用了Testplant的Eggplant和VNCRobot作为测试工具。我们还使用了软件测试自动化框架/软件测试自动化引擎(STAF/ STAX),并将该AST框架成功地集成进我们的自动化测试框架中。STAF/STAX是开源、跨平台、支持多语言、围绕可复用组件(称为服务,如进程调用、资源管理、记录和监测)的思想设计的。STAF消除了从零开始构建自动化基础设施的冗长和乏味。STAF框架为构建高层次方案提供了基础,并提供一种插件的方式对广泛的平台和语言提供支持。STAF/STAX已经被证明非常有用,而且我们已经成功地将其集成进我们自己的自动化框架里了。AST的实现一般需要根据具体的AUT需要做适当的调整,这依赖下面的各种准则。AUT的测试生命周期阶段当在软件测试生命周期开始时有各种参与自动化的方式,也许是在单元测试阶段,与之形成对照的是仅仅在快结束的时候参与,还可能在用户验收测试阶段。在STL中越早应用AST越好。以便在后续的阶段中复用测试工件,而且已经证明,在系统测试生命周期中越早发现缺陷,修复该缺陷的代价就越小。AUT的进度和时间表根据进度和时间表,可以实现或多或少的AST综合方案,也就是说,时间越多,测试覆盖率越高,测试自动化的百分比越高,分析可以越详细等。AUT的技术有效的AST会调整它的实现以适应AUT的技术需求。如果适用,AST工具应该可以在Windows与Linux上应用,或在实时环境与静态环境中应用,并且都是兼容的。AUT的复杂性通常,AUT越复杂,就需要更详尽的AST工作。基于AUT的复杂性,我们需要不同的AST方法和策略。AUT的使命的重要性和风险AUT使命的重要性和风险会影响AST的工作。我们认识到每个程序的独特性,需要为具体的AUT需要来调整AST,但又不依赖于这些需求,有效的AST框架的实现可以适应各种环境。有效的AST可以在极其重要的阶段和里程碑中应用,并且与程序实现的类型无关,这些将在第9章详述。我们的目标是可以在各种程序中应用AST,但不用为每个程序从零开始开发AST框架,并且使用可以在任何组织或程序中易于调整的轻量级过程。最近很长一段时间都很忙,突然对自己最近的学习方法做个简单的总结,以及个人对测试发展的整个过程的一个分析,希望对大家有帮助一、测试发展过程我认为一般的测试过程发展:测试执行-测试用例撰写-自动化测试实现-测试流程与平台实现。1测试执行阶段要求:1、会看文档(即会看测试用例)。2、有一定的业务知识。3、有一定的工作操作和仪器仪表使用技巧。 而在此过程中也许你对自动化测试有一定的认识,觉得自动化测试就是依靠简单的脚本代替人的一部分手工测试。2测试用例撰写阶段要求:1、对产品的认识和业务知识掌握到了一定深度。2、对测试理念和各种测试知识学习到了一定程度,至少对软件测试或者系统测试等原则和方法有了深刻认识(例如:黑盒测试中的各种方法、执行测试用例需能恢复到干净环境的原则等)。 也许在此过程如果你没有特别专研自动化测试的话,那么当然你还是停留在脚本执行的理念中,当然按照此路线向QA和管理发展也是不错的选择。但是如果你有想提高技术的想法,那么就得对自动化开始进一步进攻了。说句自己的理解:测试管理有点虚,如果你不是测试专家或者在管理确实有独特想法,那么你何以服众,技术为王吧。3自动化测试阶段实现:整个测试流程,从单元测试-集成测试-系统测试-(回归测试)各对应有各自的自动化测试方法和工具。单元测试过程中,依靠的是TDD思想(测试驱动开发)。系统测试过程中包括:功能测试(B/S测试与C/S测试),性能测试等。自动化测试也有自己的一个过程:工具使用-工具实现(脚本开发)-框架搭建-平台与流程的建立。各有各的思想和理念,得好好学习,这里就不深究了,有兴趣的可以一起探讨。4流程流程与平台实现阶段:测试的作用就是质量监控和保障,如果不建立一个良好的测试流程与平台实现,平台中包括手工测试执行与自动化测试实现,两者并行,手工测试执行负责发现问题,自动化测试负责保障质量。到了这一部,则需要对整个测试流程有很深刻的认识,可以考虑去学习一个测试管理工具的流程思想,将其的理念变为自己的理念。二、测试技能学习方法因为测试本身是一个涉及很广的领域,它的本质就是质量保障,所以它的要求不是要求你去专研某一个知识,而是去专研其实用性,如何更可能的节省测试成本、如何更可能的保证测试质量。所以其需要的技能是多方面的,因此我个人总结了一套学习方法,就从自动化测试这个领域来说吧自动化测试涉及太广,真的想做好自动化测试,它不仅要求你对系统业务、编程、系统框架搭建有所专研,更是需要在测试流程与平台建设方面有所认识,而我觉得更行的学习方法为:首先将学习当做一个流程,为学习建一个基本框架,明确自己要达到的目标,分别根据以下三部门进行列出。1、实践精通式学习:这部分是你需要重点掌握的,像自动化测试过程中,需要重点掌握的就有:编程技巧(脚本语言,例如:javascript、tcl、perl、ruby等,一种即可;面向对象语言,例如:JAVA、.net等,一种即可;WEB编程技巧:客户端与服务器端);HTML与XML(XML一定要学会) 自动化测试工具学习(单元测试工具:xUNIT等;WEB自动化测试工具:selenium、QTP、Watir等;GUI自动化测试工具:RFT、winrunner等;性能测试工具:loadrunner等) 数据库知识(SQL查询语言;一些数据库的使用) 操作系统知识(Windows:DLL、COM组件、环境变量等知识一定要是掌握的,不然很多东西都很难了解本质) 业务知识(电信业务中的各种协议知识等) 流程知识(软件测试的艺术等) 当然还有很多,得具体看个人喜好了。以上是需要一变学习,一边在实践中操作的,光学习是没有用的,一定要学会把以上知识用到实践项目中,方能迅速提高。2、目录审阅式学习:这部分知识不是需要精通,但需要认识的,不会有很大的精力花在上面,一般都是很多方面的经典书籍,例如: 单元测试过程中的书籍:Java+development+with+ant等 自动化测试过程中的书籍:自动化软件测试入门、管理与实现等 软件测试过程中的书籍:有效软件测试提高测试水平的50条建议。像这些书籍,都是一些辅助性的提高参考书籍】因此可以采用“抄目录”的形式,然后对照目录快速找到自己需要的重点知识学习。我们时间太宝贵,需要学习的东西太多,自己斟酌着哪些知识需要采用这种学习方法,因人而异。3、视野开阔式学习:学习活的,因此要多去各大网站,多到外面去

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论