导言

随着Python语言的热度不断攀升,使用人数不断增加,很多大企业像谷歌、百度、腾讯、阿里都在使用Python构建企业级应用,它也逐渐成为了测试人员学习脚本语言的首选。本期专访有幸邀请到一位有着多年测试开发及管理经验的测试大牛,围绕三个部分结合实际工作进行深入浅出的讲解,让大家轻松掌握Python,全面实现测试自动化。

专访内容

为什么学Python篇:

1、看到您在个人简介中写花了5年时间,自学Python并带领团队从一个纯黑盒手动测试升级为一个既能测试又能开发的"测试研发团队",这中间是否遇到过哪些难题?又是如何克服的?

近期一直在看王阳明的相关书籍,他的一个观点我非常赞同,不管要学习什么一定要立志,立志是非常非常重要的,但是立志前一定要有动机,或者说要有“打击”,那种让你内心感到瓦凉瓦凉的打击!我在软件测试这个行业工作了12年之久,截至5年前,我一直很愉悦地,内心充盈地做着黑盒测试,曾几何时我也觉得最好离“开发”远远的,因为很多人都说:女孩子做测试挺好的~~ 但是,我遇到很一个非常现实而残忍的问题:“裁员”,想想自己也挺奇葩的,在一个公司竟然待了12年之久,在这12年里,因为各种原因,我经历了大大小小的裁员有5次之多,一有裁员需求,老板第一个考虑的就是测试人员。每一次裁员,都是自己团队里的兄弟姐妹,我要亲自告诉他或她,因为公司现在裁员,需要你离开公司,虽然你的工作是合格的,甚至是优秀的~~然后我要鼓起勇气陪着哭泣的他或她去立刻办理离职手续,一刻也不能停留~~你能想象我内心的崩溃吗?每一次我都会问为什么又是我们?每一次老板都会坦率地告诉我,为什么裁员考虑的是我们测试团队:就是因为可取代性太强了!!我真的实实在在意识到了黑盒测试的无力。

公司在寒冬时,需要“蓄积能量”,也就是需要减少开支,老板就要开始衡量,哪类研发人员被裁,后续如果公司渡过难关后补起来比较容易,很不幸,每一次评估下来都是测试人员。有个声音在我脑海里越来越清晰:不能这样,我们团队不能总是做可取代性强的工作!!所以测试的发展方向是什么?我要有什么样的技能才能改观老板对我们的认知??我开始在网上找,当然也在51testing这样专业的网站上找寻,我找寻的结果是:未来的测试应该是以自动化为主,手动测试为辅。所以测试人员必须要学会编程,因为测试是一个无穷尽的工作,如何体现测试人员的价值,就是在单位时间内能有更多的产出,有让老板瞠目结舌的产出......[详情]

2、您前面说到未来的测试应该是以自动化为主,手动测试为辅,但现在还有一种说法,"在国外,资深的软件测试人员大多是手动测试,他们厉害之处在于测试用例的设计,但在国内,很多测试人员都把自动化测试当成很厉害的资本"您对此有何看法?

这个问题非常有意思,首先我不太认同这种简单粗暴的对比方式,不能只是“国外”,“国内”这样的一元的对比,我认为需要多角度考虑问题:例如不同类型的公司,不同规模的公司,不同的待测物,都会影响对比的结果。还有最近听到一个非常有意思的说法:如果你手里只有一个锤子,那你的眼里只能看到钉子。这句话是什么意思?就是说如果你手里的工具非常有限,你所看到的世界就是非常局限的。所以我们要尽可能的多掌握一些工具,这样我们看到的世界才能使多维的世界,这个多维的世界,才是比较接近真实的世界。所以,为什么纠结是手动测试比较厉害还是自动化测试比较厉害呢?对于资深的测试人员,难道这些不都应该被掌握吗?

说到国外,我最近听一个在美国工作10多年的主管跟我讲他所见到的非常厉害的测试团队,他之前所负责的项目是由一个15个人左右的测试团队测试了2-3个月的全面测试当然期间也会与开发团队配合进行debug,而且期间经常加班,工作得非常辛苦,就这样辛苦了2-3个月最后剩下大概30多个已知bug,项目团队经过商议,这些bug隐藏较深,应该不影响认证......[详情]

如何学习Python篇:

您之前提到了自学Python的经历,我们有很多会员也是目前正在从事功能测试,想转自动化测试,如果他们现在学习Python,您是否能介绍一些好的学习方法介绍给大家呢?

首先明确Python是一个语言,一个脚本语言,所有的语言都是从Hello world开始,就是说首先都要学习它的基本语法,变量;它的数据结构;它的各种语句写法等等,然后对于这些基本语言,写各种对应的代码,目的是帮助我们更好理解这些基础的知识。这部分就像盖房子时搭建房子的框架,无论是什么类型产品的自动化开发,这些框架都是需要的。学习基本语法,真的与学习其它的语言相比并没有什么特殊之处。但是我想强调的是:看一万遍都不如自己实际手动试一遍,实践非常重要(所以千万不要轻视Hello world,它就是开启你美妙人生的钥匙)。网上有很多很多很好的课程,甚至是免费的课程,也有很多资料,免费的资料,这个只能靠自己耐着性子去读,去实践了……,这部分谁也帮不了你,只能靠你自己了。如果一定要我推荐,我建议可以在网上找“超级无敌Python教程”,当然还有很多优 秀的python书籍和教程,可以根据自己的需要进行选择。

基础知识学完了,就可以问问自己学它是为了什么,目的性一定要强,我们总不会为了考试是吗,总归有相关的工作需求你才会想学python,根据你的工作需求确认一下你需要学习什么模块,python是有非常非常丰富的第三方模块,可以帮助你快速完成你所需要的自动化开发工作。这部分就比较让人激情澎湃,这就是你需要偏重的学习的方向,首先要搞清楚你的需求是什么,然后再选择用什么模块,用什么模块学什么模块!接下来就会有实实在在的产出了,哈哈,可以说,接下来是见证奇迹的时刻!!Python有很多模块,这些模块可以帮你实现很多功能,所以千万不要尝试自己写测试库,请先尝试找相关的模块,这些模块可以让你事半功倍!例如手机测试可以用它的Monkeyrunner模块,路由器项目可以用它的selenium模块,需要调用运行在操作系统上的软件可以用pywinauto模块。。当然一个项目需要有自己的架构,连架构Python的模块也帮你解决了:unittest模块,所以Python是个多么贴心的人儿啊~~所以千万千万不要上来就想所有的功能都要靠自己写......[详情]

Python自动化实际操作篇:

前面聊到了为什么要学习Python和具体学习Python的方法,下面有几个51Testing会员在实际测试工作中应用Python遇到的问题,你能帮他们解答一下吗?
1) Python如何实现对系统的API接口功能实现自动化测试?
2) 如何对Python写的程序进行 GUI 自动化测试?
3) Python用于工业控制自动化测试怎么样?
4) 移动APP的UI和接口自动化测试怎么进行?

就像上面的4个问题,其实可以参考我在网校上的“Python系列课程”,这个课程就是解答了不同类型的产品需要使用哪些第三方模块,课程是根据我在工作中的实际的项目进行讲解,并给大家总结了一套方法,供大家在自己的工作进行应用。如果真的感兴趣的童鞋,可以去看一下这个课程。

这里我简单讲解一下常用的几个第三方模块:

a. 基于网页的测试的项目,例如路由器测试的自动化,用到的模块Selenium (说人话:就是你在做黑盒测试的项目,需要打开浏览器,需要测试的功能都是在网页上。)而我们这个Selenium这个模块提供了很多用于控制网页以及网页上各种控件的函数,所以在有了一定的Python的基础上再结合Selenium模块就可以达到我们的目的(说人话:对于Python的基本语法有了解,做过简单的Python的项目即可,不需要太深入的了解,要问为什么,因为你只有函数没有其它代码如何将这些函数组织起来,实现你想实现的功能呢?)

b. 基于运行在Windows OS上的程序的自动化,例如硬件的测试需要控制,用到的模块Pywinauto(说人话:就是不管是我们软件测试还是硬件测试,只要用到运行在windows系统上应用软件,就可以通过控制这个软件进而实现自动化)我们这个Pywinauto这个模块提供了很多控制应用软件以及应用软件上各个控件的函数。

c. 补充模块:Pymouse和Pykeyboard,这两个模块就是控制鼠标和键盘的,一定要慎用这两个模块,它们只是上述两个模块的补充......[详情]

5) Python常用的测试框架有哪些?

1) 是的在开发一个相对来说比较复杂完整的项目就要考虑“测试框架”的问题了,在我们实际工作中,使用较多的就是unittest框架了,因为不管是什么类型的测试,都需要搭建测试框架,即test case怎么组成的,怎么执行,最后怎么生成test report。

接下来给大家简单介绍一下unitest框架,首先它是python自带的模块,所以不需要另外安装。它的基本构造是将一个个test case打包成一个个独立的“模块”,然后根据需要再将这些test case使用test suit继续归类,然后再使用test runner运行,可以以模块为单位进行运行,然后再根据Assert方法判断你的每个case的执行结果,最后使用网上开源的免费的模块:HTMLTestRunner.py生成一个漂亮的测试报告......[详情]

6) 在实际项目中Python可以结合哪些测试工具做自动化测试?

这个问题,其实很难回答:因为实际上python可以结合很多测试工具,哪怕这些测试工具是你们公司自己独立开发的测试工具,我们也可以将其搭配我们的python进行自动化测试。关键看是什么样的测试工具,因为python主要是靠第三方模块来实现具体的可用于实际工作自动化开发,我们已经学习的第三方模块是:Selenium,可以用于控制浏览器(市面上主流的浏览器均可使用);pywinauto,可以用于控制运行在windows OS上的软件;pykeyboard以及pymouse均是控制鼠标和键盘的模块......[详情]

感谢王平平老师为大家带来这么丰富的内容分享,详细大家看完这些内容对于学习Python自动化应该不在迷茫了,最后您还有什么话想对我们会员说的吗?

时间有限只能与各位分享到这,我最近因为公司的发展需求,需要学习前端开发,哈哈后端也是Python实现的哦,所以Python真的是一个应用非常广泛的语言。嗯,有点扯远了,我近期学习的前端开发,非常酸爽,痛并痛着,但是我秉持着与学习Python一样的理念,一样的思路:首先先将所学知识在头脑中搭建框架,然后再对这个框架中慢慢添加砖块,哈哈像极了盖房子是吗,真的,这样思路清晰的学习,会让你事半功倍,本周已经写了一个小项目,所以,相信我,不管学习什么语言,都是有一套相同的方法的,对了,后续有机会我会写有关前端开发的相关文档,或者出一些相关的课程,呵呵,我就是一个这么爱分享的好孩子^_^。

专家简介

13年软件测试经验,12年测试团队管理经验,5年Python自学及开发经验并带领团队从一个纯黑盒手动测试升级为一个既能测试又能开发的"测试研发团队"。两年的C++自学以及开发经验,对于统计学如何应用到实际工作有独到的见解。并在《51测试天地》连续发表10余篇文章。

专家在线视频

评论


关于我们 | 广告服务 | 招聘信息 | 会员注册 | 联系我们 | 站点地图 | | 沪ICP号05003035号
意见反馈/投稿邮箱:editor#51testing.com(请将#修改为@)
Copyright51testing.com 2003-2017 All Rights Reserved