‘壹’ web自动化测试
目前越来越多的人想学自动化测试,认为自动化测试好牛逼。经常在测试交流群里看见有HR发招聘广告说:招初级(功能测试),招中级(性能测试),招高级(自动化测试)......
我不去讨论他们这个初中高级的说法对不对,我只是觉得,越来越多的公司都希望把自动化测试做起来了。于是,市场给我们提了个要求,测试如果掌握了自动化,那么工资会怎么怎么样。
而对于自动化测试,其实又可以分为很多块。见下图:
同时根据平台也可以分成,Web自动化测试,App自动化测试等等。
我今天主要概括一下对于Web自动化测试而言,现在最火的一个工具----Selenium的学习思路。
1.首先,对于想学自动化测试的朋友,那么你得懂一种语言,常用的比如Java或者Python。因为没有语言基础,你是写不出自动化脚本的。
2.有了开发语言的铺垫,那么开始入手Selenium。了解它的发展,了解它的组成,了解它的实现原理。
3.当你对Selenium有了整体的了解后,可以开始学习了。实际上,我现在说的Selenium就是Selenium2。
4.(第一层次)首先你得知道:什么是元素?怎么去定位一个页面元素?怎么去控制元素?怎么控制浏览器?.....学完这些,那么恭喜你,你可以写简单页面的自动化功能测试了。
5.(第二层次)熟练的编写页面自动化脚本:碰到复杂的页面,比如嵌套很多,知道怎么去跳转。复杂元素,怎么去定位,各种页面元素的处理,比如表格、下拉框、弹出框等等。
6.(第三层次)熟练掌握上面技巧之后,开始学习怎么将页面元素与代码分离,学习数据驱动(TestNG),以及怎么样结合Excel去做自动化测试。
7.(第四层次)学习持续集成的方法,怎么样将自动化测试更加“自动化”。同时,开始学习自动化测试框架,能够根据产品的实际情况来编写合适的测试框架。
以上,我认为大体就是学习web自动化测试的一个思路。都是个人观点,而且由于时间原因,写的不是很详细,还请大家见谅。
‘贰’ 如何做自动化测试
这个问题是写给想要做自动化测试的人,或许你以为软件测试的门槛很低,低到任何人都可以做,随便点点就可以了,这个行业太low了,所以你想做自动化测试,提升自己的逼格,我想说手工测试并不low,如果让一个什么都不懂,一点业务基础都没有的人去做测试,能测出来问题吗?不要忽略你的业务知识储备.
你的业务知识储备的积累能让你成为不可替代的行业专家,而做自动化的码农会因为一个时代的更迭被小鲜肉替代。
扯了这么多,究竟什么什么样的人能做自动化测试?
我的理解分一下几点:
a. 拥有代码能力
掌握一门开发语言,java、Python、ruby、c#
b. 熟悉被测系统
比如你是web测试,你就得懂js、css、html、xpath
你是移动端测试,你就得具备Android 开发基础和iOS开发基础,会debug app
你是 C/S测试你就要很熟悉TCP、IP协议
c. 掌握一套自动化测试框架(工具)
比如 selenium/appium
nunit/testng
robot framework/cucumber
d. 善于学习,达到知其然知其所以然
IT行业变化太快,每隔一段时间就会出现一些新兴的东西,也会出现原来很火的东西逐渐没落,谁也无法预测。
曾经诺基亚还是手机霸主,靠塞班一统天下,然而不思进取,落得个卖身求生存.
曾经qtp很火,曾经selenium也很火,现在appium也很火
软件行业从桌面软件到web端,又从web端迁移到移动端,谁也不知道下一个是什么。而我们作为软件行业的从业者,不能因为那些很火的东西不火了而让自己没落,一个人最为核 心的能力就是学习能力,如果你善于学习,你就不必担心这些变迁,因为你可以毫无压力的迁移,selenium的原理你掌握了,学习appium简直小菜一碟,因为appium使用的是
selenium WebDriver protocol .如果你能做到知其然知其所以然,你也可以造轮子,改造appium,毕竟现在很多功能需要完善。
如果你没有达到以上的几点,建议你还是做手工测试吧。
‘叁’ 怎么学习自动化测试
首先,想从事自动化测试,必须先了解What/Why/How,也就是常说的去了解什么是自动化测试、为什么要进行自动化测试、该如何进行自动化测试,这类的资料在网上有很多,这里就不做重复了; 其次,需要根据项目的特点,选择合适的自动化测试工具,并了解工具的特性。以QTP为例,该如何去掌握它呢?对于初学者,大多数都是通过录制的方式来生成脚本,这个阶段应该掌握的基础知识有:1) QTP是如何去识别对象的,对于新手经常会出现录制的脚本回放的时候报错的现象,这个时候就应该考虑为什么呢?如果很了解QTP识别对象的原理啊,我想就能很快定位到原因了2) 去掌握一些QTP对象的方法,如GetROPreperty、GetTOPreperty、ChildObjects等等,对于相似的方法应该去搞清楚到底区别在哪?像GetROPreperty、GetTOPreperty有什么区别等3) 什么是Action参数、什么又是Test参数?两者有什么区别,又有什么联系,在同一Test和不同Test间这些参数如何工作4) 什么是环境变量?环境变量是如何建立和使用的,环境变量在参数传递中和action参数、test参数有什么不同5) 了解检查点的知识,明白什么是内置检查点,什么又是自定义检查点。并搞清楚在什么时候该如何使用检查点6) 掌握对象库的操作,了解对象库对于测试的意义,象是否启用智能识别对测试脚本有何影响、为什么同一对象识别起来会有_1、_2之类的后缀等都是需要去研究清楚的问题这几个问题都搞清楚的话,那基本就能够利用QTP生成正确的脚本了,当然以上只是部分必须掌握的内容,其实还是很多细节的设置,就需要在实际运用中去掌握了。接下来,就可以进一步提升自己的QTP运用水平了,这个阶段就需要去学习vbs知识和如何运用描述性编程实现脚本了,同时在这个过程中还需要去学习html知识、DOM、XML、以及像excel、word等的API知识了,总的来说,这个阶段应该掌握的内容大体上包括:1) VBscrīpt的基础知识,熟悉常用的方法和函数,掌握文件对象的操作等2) 熟练掌握XML技术;excel、word等API对象,可以根据需要创建日志等3) 熟练掌握DOM和HTML知识,能够结合这些技术对Web页面进行解析4) 掌握数据库的基本操作语句,能够利用ADO对象进行数据操纵5) 熟练掌握正则表达式,很多时候处理对象问题相当方便6) 掌握如何调用dll进行工作7) 能够利用QTP的自动化对象模型创建出需要的运行模式8) 掌握WMI知识以上只是我考虑到的部分,并不全面,呵呵,供大家参考,当然这些技术主要是针对Web系统运行,因为我们的系统就是B/S的,呵呵。如果这些知识都能够扎实的掌握的话,个人认为,基本上能够处理自动化过程中的绝大多数问题了,这个时候你对自动化测试的技术应该是有一定积累了。接下来就需要考虑自动化测试框架问题了。当脚本规模到了一定的程度,就会面临一些问题,如:1) 如何有效的管理并调度脚本2) 如何实现脚本运行的无人值守,测试过程中能够自动进行错误处理并进行日志记录3) 如何生成简介明确的测试报告4) 如何能够更加高效的维护测试脚本5) 实现框架代码和业务代码的分层、业务脚本和业务数据的分离这个阶段主要体现的是测试人员的测试思想,是可以脱离工具独立存在的过程。当然各个公司项目的实际情况不同,导致设计出来的思想不同,但总体上来说一般包括数据驱动和关键字驱动两种模式。后者实现的技术难度大于前者,大多数公司目前都采用的数据驱动模式。这个阶段不应局限于技术运用上,而需要从测试全局考虑,进行分层设计、模块化实现,减少代码之间的耦合。如果以上三个方面都能够做的很好的话,那么恭喜你,你已经可以独立负责项目的自动化测试建立工作了,呵呵!总之,学习自动化测试需要在实际项目中进行,这样提高的会比较快,项目中运用了很多种技术,自动化实施过程会碰见各种各样的问题,是很好的学习机会,关键要善于总结、积累经验,只要能够把各个细节做好,那么你一定能够成为一名优秀的自动化测试工程师。
‘肆’ web测试中对客户端和服务器的性能测试都涉及到什么
这种就类似于云计算等后端基础服务的测试,对于一些大的公司,会有一个专门的团队来开发这种后端基础服务,这种服务当然也需要测试人员来保证质量。
这类服务一般都是通过HTTP接口的方式提供给刚才讲的WEB/APP的后端使用,所以,第一个要做的也就是接口测试,也就是用Postman等工具做手工测试、用TestNG+HttpClient或者Python的Nose框架做自动化测试。
不过,对于这类后端服务来说,接口只是暴露给外用的部分,内部逻辑通常是非常复杂的,所以,除了针对接口做测试之外,测试人员还需要细致地了解这些服务端产品的技术框架及技术实现,需要了解到模块的级别,对于系统框架图、时序图等都有很好的理解。针对这些理解去设计用例,再跟开发一起讨论如何实现用例。
如果这种基础服务用了某一个开源软件,那通常也需要测试人员能关注社区的进展,并把我们发现的Bug及解决方案等推到社区,为社区做贡献。
除了接口测试之外,在我们公司,异常测试、稳定性测试、性能测试也是服务端测试必备的测试类型。
异常测试会模拟各种异常情况,比如硬件异常-机器挂掉的情况下能否启动备机、硬盘挂掉的情况下是否会丢失数据;网络异常-网络忽然断掉、或者网络流量变小的情况;系统异常-操作系统忽然挂掉的情况。这些极端的情况出现的时候,我们需要验证数据有没有丢、能不能尽快启动备机对外提供服务、系统状态有没有异常等。我们会采用各种方式或者工具来模拟这些异常,比如用TrafficControl工具来控制网络流量。
稳定性测试,就是模拟系统在7*24的运行下会不会出问题,一般会用接口测试或者性能测试用例不断地跑,在运行期间,我们会模拟各种情况,比如说负载的变化、系统的各种干扰等。可以用ChaosMonkey等工具来进行这类测试。
性能测试,其实细分起来会有各种类型,比如负载测试、压力测试、配置测试、甚至还有线上压测、容量规划等。最常规的性能测试,一般是先规定一个系统需要承受的压力,比如说,某一个系统,1个小时之内会有1W单的单子,那基于这个需求我们分析服务器后端需要承受的压力,分析出来以后,就写性能测试脚本,然后逐渐增加压测的力度,直到超过这个预定的压力。通常在这个测试过程中会发现各种问题,比如数据库索引没有建、线程池太小、系统异常等。需要解决了之后再加大压力测试。也是用Grinder/JMeter等工具来进行性能测试,不过难的不是这些工具的使用,而是发现问题以后的定位。
对于这种后端服务的测试人员来说,技术上的要求是挺高的,需要有较好的编程能力,需要对数据库、操作系统等机制有很好的了解才行。
‘伍’ testng自动化测试框架怎么用
1、前提
安装好jdk
配置好Java环境变量
安装Eclips
这些网上都有,就不再详细介绍。
2、安装TestNG插件
在线安装由于网速原因,速度较慢。下面是离线安装方式。
(1)解压eclipse-testng离线包.zip
(2)将【eclipse-testng离线包/feature】中的文件夹org.testng.eclipse_6.8.6.20130607_0745复制到【MyEclipse安装目录/features】目录下
(3)将【eclipse-testng离线包/org.testng.eclipse_6.8.6.20130607_0745】文件夹复制到【MyEclipse安装目录/plugins】目录下
(4)重启MyEclipse,Windows - show view - TestNG
3、安装Ant
(1)解压apache-ant-1.9.6-bin.zip到任意目录下
(2)配置Ant环境变量,在Path变量末尾添加:<Ant目录>/bin;
二、在Eclipse中创建Java工程
1、Eclipse -> File -> New -> Java Project,如下图,在弹窗中填入Project name,点击Finish,即可完成工程的创建。
‘陆’ 如何完成这个Web自动化测试框架
1. ui自动化是需要极大的脚本维护工作量的,那平台脚本的可维护性一和易用性定要好。
2. junit和testng框架都可以提供很完善的测试报告输出功能,不要用log4j打报告,log4j用来输出日志,增加平台的脚本的可维护性。
3. 增加定时执行功能和邮件发送报告的功能,增加持续集成接口,自动测试应该不需要人手工触发。
4. 给自己的测试平台再写一套高覆盖率的单元及接口测试套件吧测试平台本身吧。
‘柒’ 如何用testng实现接口自动化测试
下面看看是如何一步步实现的:1、在TestNG的XML中设置参数。下 面的截图中,我设了两个参数,一个是testEnv,另一个是browser。参数的值可以直接写死,也可以由外部传入。参数有不同的作用域,如直接写 在<suite>下,那他的作用域就是整个suite。如写在<test>下,那他的作用域就是所在的test。2、在测试代码中使用参数。如下所示,我是在beforeClass 方法中,根据传入的两个参数来初使化浏览器和load 相应环境的测试数据。3、修改pom.xml文件4、Jenkins job 传入参数并执行mvn命令 在job中,我设置了两个参数,并给出了默认值。执行job时,可直接使用该默认值或根据实际情况把参数的值改成自己想要的。下面是Maven命令:mvn clean test -DtestEnv=%testEnv% -DxmlFileName=%xmlFileName%执行这条命令时,我们把testEvn及xmlFileName两个参数的值传入了pom.xml文件,接着,Maven在调用TestNG时又会把参数传过去。经过如上四个步骤,我们可以通过参数传递,灵活的指定测试环境、测试范围等,而不需要对测试脚本做任何改动。这边要讲下xmlFileName这个参数。因为考虑到要执行不同的用例集,比如只针对某一模块进行自动化测试,或对项目所有的功能进行全面回归,我们可以创建不同的TestNG XML文件,然后在执行mvn命令时指定你想要跑的那个XML文件。该方法适用于所有使用Jenkins + Maven + TestNG的测试场景。
‘捌’ 自动化测试框架有哪几种
冒昧的说一句,您这个问题问的可能比较大。
因为从自动化测试角度讲的测试框架有很多种;而且并没有什么固定的条条框框。全部是根据测试需要及公司产品开发现状进行搭建的。从通俗的 整体的角度讲只要满足:测试输入(脚本编写)-》测试执行-》结果输出 这种模式的都可称之为自动化测试框架。
而从不同的角度分析框架又可根据不同筛选条件分为多类:
如:1.脚本语言方面分析,很多种语言提供了多种自动化测试的基础框架:
1)ruby的Watir开源自动化测试框架、Test::Unit单元测试框架、开源测试框架Ruby on Rails 等等
2)java的junit回归测试框架、Mockito、TestNG、easyb等等等等
3)Perl的perl Mechanize、Test::Base数据驱动测试等等等等
4)Python的PyUnit、PAMIE等等等等
5)基于Tcl/Tk的swift 自动化测试框架,ATF/VTP自动化测试框架
以上仅列举自动化测试常用的几种脚本语言的测试框架,当然不仅仅是这些
2.从测试体系角度分又分为:
1)单元测试框架.
2)系统测试框架
3)集成测试框架
。。。。。
3.基于测试目的的划分
1)GUI自动化测试框架
2)网络协议自动化测试框架
3)基于web的自动化测试框架
。。。。。
4.从实现深度和角度分类:
1)简单的录制回放测试框架(或工具)
2)关键字驱动的测试框架
3)关键字驱动及结果输出分析的自动化测试框架
4)智能匹配功能及具备快速脚本生成功能的自动化测试框架
。。。。。。
5.从测试工具角度分:
有些测试工具是许多大型公司结合了很多测试经验及数据后进行开发的自动化测试软件或者称之为测试管理软件的自动化管理部分及自动化测试部分;也有人称之为自动化测试框架或自动化测试工具。比如QTP;LoadRunner;Quality Center、selenium等等。都具有一定的自动化测试及管理功能。
所以总的来看,测试框架分为很多种;不知提问者问的是哪个具体方面的。
笔者水平有限,仅能做个基本介绍,希望能有所帮助。也祝愿所有从事自动化测试相关工作的同志事业顺利。欢迎沟通交流
‘玖’ 自动化测试工具有哪些
自动化测试工具有如下几种:
1、WinRunner
Mercury Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。
通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。企业级应用可能包括Web应用系统,ERP系统,CRM系统等等。
2、Rational Robot
是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进行成功的测试。它集成在测试人员的桌面IBM Rational Test Manager上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。
这种测试和管理的双重功能是自动化测试的理想开始。
3、AdventNet QEngine
AdventNet QEngine是一个应用广泛且独立于平台的自动化软件测试工具,可用于Web功能测试、web性能测试、Java应用功能测试、Java API测试、SOAP测试、回归测试和Java应用性能测试。
支持对于使用HTML、JSP、ASP、.NET、PHP、JavaScript/VBScript、XML、SOAP、WSDL、e-commerce、传统客户端/服务器等开发的应用程序进行测试。此工具以Java开发,因此便于移植和提供多平台支持。
4、SilkTest
是业界领先的、用于对企业级应用进行功能测试的产品,可用于测试Web、Java或是传统的C/S结构。SilkTest提供了许多功能,使用户能够高效率地进行软件自动化测试。
这些功能包括:测试的计划和管理;直接的数据库访问及校验;灵活、强大的4Test脚本语言,内置的恢复系统(Recovery System);以及具有使用同一套脚本进行跨平台、跨浏览器和技术进行测试的能力。
5、QA Run
QARun的测试实现方式是通过鼠标移动、键盘点击操作被测应用,即而得到相应的测试脚本,对该脚本可以进行编辑和调试。在记录的过程中可针对被测应用中所包含的功能点进行基线值的建立,换句话说就是在插入检查点的同时建立期望值。
在这里检查点是目标系统的一个特殊方面在一特定点的期望状态。通常,检查点在QARun提示目标系统执行一系列事件之后被执行。检查点用于确定实际结果与期望结果是否相同
‘拾’ 怎么搭建selenium2+eclipse+testng的自动化测试环境
1、 Selenium IDE:selenium-ide-2.2.0.xpi 用来在Firefox上录制脚本。
2、 Selenium RC:selenium-server-standalone-2.33.0.jar 模拟服务器端,不可少。
3、 IEDriverServer:DriverServer_Win32_2.33.0.zip IE驱动,Firfox和chorm不用驱动。
4、 Selenium Client Drivers:selenium-java-2.33.0.zip 模拟Selenium客户端。