摘要

单一的自动化测试脚本,维护起来较为困难。自动化测试框架能够系统与高效的将分散的测试脚本进行组织,形成有规划、能跟踪、高效率的测试组合。

正文

要谈自动化框架,肯定绕不开自动化测试,而自动化测试首先要选择自动化工具(自动化测试框架基础脚本的设计来源于自动化测试工具)。那我们首先要了解当下有哪些测试工具。大家当下能够想到的应该selenium与UFT(QTP),当然也不能少了RF(Robot Framework)。其中RF与selenium与UFT又不同,下面会简单讲解几者之间的关系。

1.UFT是HP公司的一款功能性测试工具(商业付费工具):其本身可以测试B/S、C/S、移动端等。如果团队选择使用它,需要一笔不需要的费用。

2.Selenium是一个基于浏览器(仅仅支持B/S测试)的自动化工具,它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。它是开源的哦…~

3.Robot Framework是一款python编写的功能自动化测试框架 。

通过上面其实可以看到,UFT、Selenium是自动化测试工具,而RF是一个自动化测试框架,或者说是一个自动化测试平台。目前开源趋势越来越受到大家欢迎,UFT(QTP)市场份额在萎缩。近几年Selenium越来越受欢迎(自己可以去各大招聘平台上看下哦…~)。因此本系列课程也是围绕selenium讲授自动化测试。当然selenium也有自己弊端(那就是仅仅能开展B/S自动化测试了哦)。

掌握自动化框架,需要哪些条件

本系列文章虽说是带着大家一步步“零基础”设计自动化测试框架,但是也是有前提的哦…~。你要想跟上节奏,需要在学习本系列文章前具备如下必备条件(先给自己打个分吧,如果自己不具备赶紧去恶补知识,再来学习吧):

1.已经掌握了基本的Python语法
2.已经掌握了Selenium的基本用法

是否需要自动化测试?

首先要思考,我们为什么需要自动化测试?自动化测试能给我们带来什么帮助?

1.实际测试过程中是否遇到过这样的情况:1个项目(或产品)持续周期较长(1年或更久)。在这个过程中,如果目前的测试工作大部分都是基于功能测试,是否遇到频繁的发布版本,测试团队在每1个版本中都要花费很多精力执行很多相同的测试用例呢?常常如此,你是否出现过人设崩溃了呢….。

2.是否借助过一些自动化工具来帮助自己进行解脱呢。比如qtp等…,甚至有些朋友可能考虑过按键精灵等类似的东东。

其实当你遇到了以上的问题,有了以上的想法,你心里就萌发了想开展自动化测试的想法。

好了,那我们再一起看看什么是自动化框架吧。

首先要了解,先开展自动化测试,后续慢慢升华为自动化测试框架。自动化框架可以理解为是精心挑选一系列自动化测试用例的集成体系,围绕这些测试用例,设定了自动化测试规则。规则体系中包含公共函数库、测试数据管理、测试页面管理、测试用例管理、日志、测试结果、测试报告等,以及各种可重用的模块。这些模块之间不是相互孤立的,而是相辅相成的。自动化测试架构提供了自动化测试的基础,降低了自动化测试的难度。

手工测试至自动化测试需要做那些工作?

心中有了开展自动化及设计自动化框架的想法,那来衡量下自己的团队是否适合开展自动化吧…。

1.确定版本(产品or项目)迭代频繁,且稳定(就是适合开展自动化);
2.选取自动化的语言、工具、框架等;
3.确定哪些功能点(测试用例)属于BVT或关键路径用例,需要每个版本都回归;
4.提取哪些适合开展UI自动化、那些适合应用接口自动化;
5.根据提取的用例,分析场景,设计自动化测试用例;
6.自动化测试用例组合,形成测试场景,进行验证。形成自动化测试用例库;
7.用框架结合测试用例进行完善,形成测试用例版本。后续不断的完善;

备注:html测试报告、日志、数据驱动等,都是框架或自动化脚本过程中辅助的部分。

这里可能部分朋友,不太理解第1点,自动化测试我们要求版本稳定呢?自动化分为UI自动化、接口自动化。以UI自动化为例,界面元素(对象)一变动,就需要变更测试脚本,因此需要版本持续稳定,自动化测试方可持续开展,否则现在写了脚本,下个版本还要变,自动化的意义就大打折扣了。

如果上面的分析还不理解,咱们讲个通俗的例子。比如某朋友一直是一个发型与衣着打扮(发型、衣着是人这个对象或元素的属性),你很容易再各个场合认出他来。如果某一天,该朋友把发型与衣着的习惯都变了(假如变成了朋克风格),你再在某个场合碰到他,还能够很容易的辨认出来吗?也许你就会直接认不出来。其实这个案例,就相当于上一段讲的元素。UI自动化测试过程中不同的版本之间,元素教稳定,自动化脚本的维护成本就降低,自动化持续性较好。而如果一旦变化了,则可能会有从新识别与定义。

选择结合的语言

经过前面的衡量后,确定要开展自动化测试。那接下来就需要选择一门语言,自动化测试是需要以语言为驱动的(当然UFT的关键字视图是提供给代码弱的朋友使用的)。这里有一句话,送给各位,IT干到某一阶段你会发现或多或少都需要掌握一门语言的哦。不要对语言畏惧,其实其就是一个纸老虎哦。

至少会一种语言:JAVA、Python、VBS、C#等。不要纠结我到底学什么语言好,是Java还是Python。也许你可以根据市场情况做选择,也许你会根据团队的要求做出选择。

几年前,与selenium结合起来设计开展自动化测试,毫无疑问首选JAVA。近几年随着Python的应用范围越来越广,受欢迎程度越来越高,其本身语言python榜也越来越高。Python的便利性、高效性也给测试开发带来很大的便利性,因此现在很多团队设计自动化框架(当然是新规划的哦….~),首选Python+Selenium的组合了哦。当然并不是说JAVA+Selenium的自动化结合就江河日下了。部分团队及一些已有自动化测试项目仍然在使用JAVA+Selenium的结合。目前可以说与selenium的结合,可以根据自己团队的实际情况(人员构成、已有代码能力)选择到底是Python or JAVA与selenium进行结合开展自动化测试。

Ok…~,那基本就确定了,本系列文章选择的是Python+Selenium哦(我们是从零开始哦…~)。

给出几点补充建议:

1.如果你已经有了一种语言的基础,比如java,可以直接基于java+selenium开展自动化测试吗。当然类似我们的团队,在新的测试框架应用上推广python语言,就需要自己看看了哦。当然如果你自己java很好了,python还叫事儿吗?

2.根据团队的现实情况,比如团队里的程序员们都在敲java,你非要用强推python,那这样的效果肯定是较差的哦;

3.如果你从属兴趣爱好,java和python可以任选的,不用纠结。当然了,如果想上手容易些,可以选python(大量的第三方库支持,代码简单)哦。

测试框架的作用

已经开展了自动化测试,为什么设计自动化框架呢?其实自动化框架不难理解。我们换个思路,比如在开发领域,大家常常听框架框架,框架是什么呢?就是封装了很多函数或东东,我们开发使用时无序从零开始写,直接使用即可。自动化框架也是如此哦…。自动化框架的使用,能给自动化测试带来很多帮助,如:

1.减少重复性劳动:避免功能性测试的重复性工作;
2.代码复用;
3.可维护性:自动化测试用例等可不断的维护;
4.提高编写脚本效率;
5.提高脚本的可读性:让对的测试脚本之间产生联系;
6.无人值守;
7.测试报告输出。

构建框架的思路

构建框架,可以初步参考下图所示。

1. 框架雏形:
现在大脑中或者在草稿纸上、或者团队讨论下,初步构想出想要的框架的功能,然后把它列出来。雏形是框架后续衍生与完善的一个基石。通过头脑风暴、团队讨论可以提取团队对测试框架的需求,听取大家积极的意见。

2. 提取脚本与测试场景
那些测试场景、测试用例(功能性测试用例)适合开展自动化;那些现在已有的测试脚本适合开展与放到自动化框架中,都是需要思考与准备的。

3. 数据分离:数据驱动
数据应该与测试脚本分离,数据管理,是借助Excel、xml还是数据库呢?

4. 断言:单元测试框架
测试用例是需要预期结果的,那么断言就是用来做这个的。

5. 测试用例提取与组织
测试用例组织:用例肯定是有很多的,比如注册、登录等。这些用例又可以组成一个大的用例,满足一个复杂的场景。
维护测试用例:用什么来维护多用例呢?unitest(python)、Junit等都是很好的选择

6. 测试报告
一个漂亮的报告吧,可以清晰的看到用例的执行情况,也方便向领导汇报哦
测试报告可以包含这些:执行结果、执行的什么用例、如果报错,有什么错、错误截图、等等;

7. 日志
日志是开发与测试开发不可或缺的部分,其可以帮助我们定位问题,分析问题。
维护与优化
框架不是万能的,不是一层不变的。需要不断的根据实际需要晚上,才能跟上产品(或项目)与技术的需要;

构成框架的几大要素

自动化测试框架往往包含如下几块:

1.元素(对象)定位|管理;
2.测试页面管理
3.测试用管理
4.数据维护
5.日志管理
6.测试报告
7.测试运行控制

自动化测试之路

测试早已不仅仅是功能测试的时代,测试技术在不断的革新。自动化测试在越来越受到软件团队欢迎。Selenium作为开源,近几年深受测试从业者的喜爱。Python的易上手、高效率,深受开发与测试的喜爱,早些年java+selenium的自动化测试组合,不断的被python+selenium组合所替代。一套高效易用的自动化测试框架,能够大大提升测试效率,解放测试人员。

通过对该专栏的学习,可以设计规划自动化测试框架,生成测试报告和日志, 一步步学会框架的实现

专栏大纲

序:自动化测试框架能给我们带来什么?
单一的自动化测试脚本,维护起来较为困难。自动化测试框架能够系统与高效的将分散的测试脚本进行组织,形成有规划、能跟踪、高效率的测试组合。
1.自动化框架的规划与设计
如何规划自动化框架、如何设计。自动化测试框架需要包含那几部分。一起给自动化测试框架定个名字吧…… AutoRunFrameWork
2.配置文件的管理
测试过程中进场需要更改配置文件,如何让配置文件的维护工作变的简单高效。
3.数据驱动那些事儿…..
不同的测试数据,构成不同的测试场景。测试数据的维护与测试脚本的剥离是需要认真考虑的事情。数据驱动能够很好的实现数据与脚本的分离,减少维护成本,提交自动化测试普及效率。
4.日志管理
开发与自动化测试,凡是有代码的地方,总会伴随着错误,如何准确定位错误,日志是不可或缺的部分。
5.公共文件库:配置文件的维护
配置文件有了,配置文件的管理也了解了。如何在自动化测试框架中应用配置文件呢?
6.公共文件库:Excel的处理
测试数据,可以通过很多方式管理。通过Excel管理,只管且易维护。
7.测试用例信息
自动化测试脚本执行过程中,往往需要体现一些用例相关信息,而该信息能够在测试结果分析过程中提供一些指导。
8.漂亮的测试报告与测试邮件的发送
自动化测试结束后,生成易读的html测试报告,并且推送给项目组成员。
9.知道软件工程吗?
现在已经不是千行代码就能完成一个系统的时代,从代码到产品,需要一个规范有序的过程。后端早就工程化了,前端准备好工程化了吗?
10.测试场景的提取
测试场景是自动化测试中的“最小颗粒”,测试场景的组织与提取构成了整个测试?
11.PageObject设计模式
封装、继承、多态?面向对象的特性,在自动化中一样适用,通过PO模式可以大大提高测试用例的维护效率。
12.测试(用例)页面的优化
掌握了PO模式,将测试页面需要结合PO模式进行优化升级,降低维护成本。
13.自动化测试框架中日志的应用
测试框架中融入日志,日志能够通过多出输出形式,帮助定位问题与分析测试记过。
14.全局配置文件、测试数据管理及数据驱动的优化
配置文件、测试数据、数据驱动,3者放在一起从便利、高效的角度考虑,展开优化。
15.测试用例的设计、实现与执行
测试场景提取完毕后,需要设计测试用例,测试用例执行后测试报告的生成。
16.升华:自动化测试框架上,还有那些事情还可以做?
一个完整的自动化测试框架从设计、实现、运行已经完毕,回顾自动化测试框架,那些地方还可以再改进,再升华呢?不断总结,才可不断进步。

李老师

十几年软件研发|测试、项目管理及咨询经验。擅长项目模块化流程设计、软件测试流程设计及敏捷测试开展、自动化(UI自动化、接口测试、性能)测试框架设计与实施。

分别任职于微软、BEA等IT公司,现任某IT互联网创业公司项目总监。具有丰富的软件项目实施与项目管理实战经验,从系统工程师、数据库DBA、研发工程师、测试工程师、测试总监、项目总监等技术与管理岗位获得的丰富的项目及实战经验,令其可以站在技术人员的维度及企业管理者的高度,以更广的视角来理解测试管理(敏捷测试),并能配合和推动研发部门推广敏捷测试、性能测试及自动化测试框架的规划与实施。其著有多本技术书籍。

与企业合作深入推动自动化(性能)工具及框架应用与实施活动。很多课程与咨询中的最佳实践,均来自于其之前及当前参与的实际项目的一线实践。

曾以技术骨干和项目经理等身份,组织和承担开发了多个项目(16年至今主持与参与200W+项目近10个):
全天候移动通信IM(基于UDP视频聊天、文件传输、文本通信、联系人管理)
Helium系统:基于3G网络的集视频、定位、网站于一体的互联网应用系统;
《第29届奥运会门票制作系统》;
《奥运村空间规划与物资信息管理系统》;
平安保险在线投保平台的优化;
海淀区高新区技术交流平台安全设计项目;
中信银行在线支付;
国家信息管理中心OA;
欧美同学会.中国留学生联谊会网络建设项目;
合众人寿保险公司商务平台四期工程;
中国联通一卡通项目;
河北省移动公司摘机项目;
河北移动多媒体信息报送系统;
中国联通OA办公系统;
LoonTime国际等项目;
媒体网关视讯项目;
大船监测项目;

作为技术咨询专家,服务众多企业,如下列举部分近几年服务的企业:
四维图新、周大福、白云机场、工商银行、中国建设银行、中国银行、民生银行、交通银行、中国平安、浦发银行、Brother(兄弟)、中信银行、信诚人寿、广东海关、中广核、冀中能源、华为、中国联通、中国移动、上海大众、浙江邮政、云南海关等。