您好,欢迎访问三七文档
自动化测试讲解整理自动化测试中基本概念与思想。着重讲解在自动化测试框架下编写测试用例及测试计划的具体方法。---李春毅2017-08-21自动化测试的概念及难点•自动化测试是一个很广义的概念,一般说来所有能替代人工测试的方式都属于自动化测试。•自动化测试是很难的。自动化测试的工具很多情况下只是一个半成品,比如seleniumwebdriver,你需要花很多时间去使用代码编写用例,并且维护这些用例,这一过程是漫长而艰辛的,这个过程非常痛苦,每天的工作内容好像是自虐,而且自虐一段时间后信心基本崩溃,从此谈自动化色变,把所以的错归结于自动化测试策略与技术,而不从本身去找问题。•不过自动化测试的实践者往往是更加幸运的。最简单的例子是自动化测试人员则可以利用自己掌握的语言知识与代码知识自己创造工具,说实在的,这是一件很有成就感的事情。自动化测试的意义自动化测试很难,那么我们为什么要坚持自动化呢?•单元测试是保证代码质量最基本也是最根本的途径,单元测试是自动化测试的一种,因此自动化的重要性不言而喻;•集成测试在很多情况下非常适合使用自动化的手段去运行,最明显的例子是rails里的integrationtest;(unittest:就是独立测试每个功能块的功能.integrationtest:是测试那些有相互联系的功能块之间的联系,和共同运行的结果.systemtest:测试整个系统,所有的功能块都要考虑.)•当单元测试和集成测试都没做好,甚至是没有做的情况下,UI级的自动化测试可以扮演救火队员的角色,尽管成本很高,但是可维护的UI测试代码是回归测试的福音,也是提高测试生产力的重要手段;•自动化测试可以培养团队,一个团队如果可以把自动化测试做好,那么他们的开发水平一定不低,而且如果这些人去做开发,代码的质量反而比一般的开发人员要高,原因很容易理解,测试人员坚信没有测试过的东西就是不可信的,代码如果没有被测试过,那么代码自然是不可信的,不可信的代码就需要用单元测试去覆盖,因此这可以从根本上提高代码的质量。那么自动化测试如何去学习呢?这里给出一个很平滑的线路图。•学习一门脚本语言,rubypythonorjavascript。当然,如果你信仰优雅,追求美感的话,你可以学习ruby(本框架使用的语言)•学习语言的过程是漫长而枯燥的,你可以通过使用seleniumwebdriverapi来更加有效率的学习。在学会自动化测试的同时也搞定了一门语言,而且每一步都很有成就感。自动化框架思想与构建序言•也许到现在大家对所谓的“自动化测试框架”仍然觉得是一种神秘的东西,仍然觉得其与各位很远;其实不然,“自动化测试框架”从理念来说,并不复杂,但其之所以神秘,是因为其运用起来很是复杂,每个公司,每个部门其产品线,其运作流程都是不同的,所以就导致了在想运用“自动化测试框架”去完成自动化测试时产生了很多不定因素,导致了很多自动化测试项目的失败,让人对“自动化测试框架”开始敬而远之。•而自动化测试发展也有一段时间了,为什么到现在虽见其火热,但难见其规模,关键是大家对其的定位,很多公司以及很多人都知道做好自动化测试不简简单单的靠一个工具,而更需要一个框架,但其总是对“自动化测试框架”缺乏清晰的定位,很容易将其定位成了一个固定的框架,其实个人理解不然,自动化测试框架不是一个模式,而是一系列思想的集合,是将各种自动化测试框架思想集合应用去搭建成的一个分层组织。一、简述自动化测试框架•也许很多人印象里的自动化测试框架就是一个能够进行自动化测试的程序似的。其实这不全面,真正的自动化测试框架可以不是一个程序,它仅仅是一种思想和方法的集合,说白了,就是一个架构,大家应该都知道操作系统其实也是一个架构吧,你可以把其理解成一个基础的自动化测试框架为一个简单的操作系统,它定义了几层架构,定义了各层互相通信的方式。通过这个架构我们才能在上面进行拓展我们的测试对象(核心体)、测试库(链接库)、测试用例集(各个windows进程)、测试用例(线程),而其之间的通过参数的传递进行通信(即相当于系统中的消息传递)。二、自动化测试框架思想接触过自动化测试的,一定不会对以下几种“自动化测试框架思想”陌生吧。•模块化思想•库思想•数据驱动思想•关键字驱动思想很多人都将以上定义为“框架”,而我却觉得它们都只是代表了一种自动化测试的思想,不能以纯粹的框架定义。首先,我们来看看自动化测试的一个发展,就能更加明白这些思想的真谛了。a)第一代自动化测试,即自动化测试思想刚开始诞生时,依靠的是传统的“录制-回放”技术,这种技术与现在的工具的“录制-回放”思想不一样,其其实就是一个“模拟”的过程,即模拟你对PC的操作而形成的,其基于你对键盘的输入与对鼠标的操作,原理与按键精灵等类似,这种机制对环境的依赖性太强,对变化性太过于敏感,因此不可能发展成一种规模。b)第二代自动化测试,即脚本化的自动化测试,利用脚本进行结构化的自动化测试,此可以应用于CLI与API的自动化测试,在其就开始集成了模块化与库思想。c)第三代自动化测试,开始产生了各种自动化测试思想,包括数据驱动与关键字驱动思想,其伴随着对象化思想的产生,而且也造就了现在一系列的自动化测试软件,其实其中都集成了这些思想,从这时候开始,自动化就开始实现了一定的规模,开始运用在各个行业,并且发展趋势越来越快。现在将一一根据自己的个人理解来介绍这些“自动化测试框架思想”:1、所谓模块化思想,就是将一个测试用例中的几个不同的测试点拆分并且将其单个点的测试步骤进行了封装,形成了一个模块。例如:一个测试用例要对一个登录程序进行测试,其中包括:用户名输入、密码输入、以及确定登录;那么就可以将用户名输入、密码输入、确定登录、取消登录四个操作分别封装在四个不同的模块中。测试时,只需调用其模块即可。这样的话,当一个模块有变化,你只需单独维护那个模块即可,也可以根据模块的不同组合成不同的测试用例。2、所谓测试库思想,就是模块化思想的升华,其为应用程序的测试创造了库文件(可以是APIs、DLLs等),这些库文件为一系列函数的集合。其与模块化思想不同的是,其拓展了接口思想,即可以通过接口去传递参数,而不是一个封死的模块,可以说是一个多了一个“门”的交互型模块。例如:还是以上那个测试用例,只是将用户名输入、密码输入、确定登录、取消登录封装成一个库,这个库含有一个函数Login,这个函数Login接收两个参数“用户名、密码”,对输入不同的用户名和密码可以进行不同的测试用例。也可以另外一个函数Cancle。3、所谓数据驱动思想,众说纷纭,很多人都觉仅仅依靠用EXCLE表进行不同数据的读取仅是一个高级的参数化,其实怎么理解并不重要,关键是其思想能够好的应用到你的框架中。而我的理解就是变量不变,数据驱动结果,不同的数据导致了不同的结果的产生。而对于数据的导入,可以通过很多方式,例如:EXCLE表、XML(用在WEB中)、数据库(DB)、CSV文件、TXT等都可以。4、所谓关键字思想,这个思想,我曾经一直思考,它与面向对象的关系,与交互模块化思想的区别。后来个人理解,其实关键字驱动就是一种面向对象的思想,例如:QTP、RFT中,对象可以为一个数据或者一个关键字,对对象的抓取,可以将其测试对象封装为一个关键字(即可以将gui元素封装成了一个个关键字),这样可以对其关键对象进行各种操作了,不同的对象可以驱动不同的测试流向与结果。简单的应用的方式可以用一个EXCEL表,里面包括“对象类型”“对象名称”“对象操作名称”“判断方式”“预期结果”。这样的话,可以通过导入不同的对象类型和名称、不同的对象操作来构建成了一个测试用例表了。以上只是对这些思想的个人理解,做好自动化测试,不是说你掌握了一个框架,而是要掌握其自动化的思想,然后根据这些思想,结合你不同的测试环境和流程来构建你自己的自动化测试框架。我们的自动化框架支持EXL编辑测试用例支持EXL编辑测试计划框架功能介绍Gui介绍GUI即人机交互图形化用户界面设计。Element介绍Func介绍Case及Plan介绍执行结果的展示
本文标题:自动化测试讲解
链接地址:https://www.777doc.com/doc-5281249 .html