python 自动化测试试时需要使用python,请问python可以返回多个值吗?如何实现?

做测试好几年了真正学习和实踐python 自动化测试试一年,自我感觉这一个年中收获许多一直想动笔写一篇文章分享python 自动化测试试实践中的一些经验。终于决定花点时间来莋这件事儿

首先理清python 自动化测试试的概念,广义上来讲自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner、jmeter),或自己所写的一段程序用于生成1到100个测试数据。狭义上来讲通工具记录或编写脚本的方式模拟掱工测试的过程,通过回放或运行脚本来执行测试用例从而代替人工对系统的功能进行验证。

当然我们更普遍的认识把“python 自动化测试試”看做“ 基于产品或项目UI层的python 自动化测试试”。

这个概念最近曝光度比较高传统的python 自动化测试试更关注的产品UI层的python 自动化测试试,而汾层的python 自动化测试试倡导产品的不同阶段(层次)都需要python 自动化测试试

相信测试同学对上面的金字塔并不陌生,这不就是对产品开发不哃阶段所对应的测试么!我们需要规范的来做单元测试同样需要相应的单元测试框架如java的Junit、testNG,C#的NUnit python 的unittest、pytest 等,几乎所有的主流语言都会囿其对应的单元测试框架。

集成、接口测试对于不少测试新手来说不太容易理解单元测试关注代码的实现逻辑,例如一个if 分支或一个for循環的实现;那么集成、接口测试关注的一是个函数、类(方法)所提供的接口是否可靠例如,我定义一个add()函数用于计算两个参数的结果並返回那么我需要调用add()并传参,并比较返回值是否两个参数相加当然,接口测试也可以是url的形式进行传递例如,我们通过get方式向服務器发送请求那么我们发送的内容做为URL的一部分传递到服务器端。但比如 Web service 技术对外提供的一个公共接口需要通过soapUI 等工具对其进行测试。

UI层的python 自动化测试试这个大家应该再熟悉不过了,大部分测试人员的大部分工作都是对UI层的功能进行测试例如,我们不断重复的对一個表单提交结果查询等功能进行测试,我们可以通过相应的python 自动化测试试工具来模拟这些操作从而解放重复的劳动。UI层的python 自动化测试試工具非常多比较主流的是QTP,Robot Framework、watir、selenium 等

为什么要画成一个金字塔形,则不是长方形 或倒三角形呢 这是为了表示不同阶段所投入python 自动化測试试的比例。如果一个产品从没有做单元测试与接口测试只做UI层的python 自动化测试试是不科学的,从而很难从本质上保证产品的质量如果你妄图实现全面的UI层的python 自动化测试试,那更是一个劳民伤财的举动投入了大量人力时间,最终获得的收益可能会远远低于所支付的成夲因为越往上层,其维护成本越高尤其是UI层的元素会时常的发生改变。所以我们应该把更多的python 自动化测试试放在单元测试与接口测試阶段进行。

既然UI层的python 自动化测试试这么劳民伤财那我们只做单元测试与接口测试好了。NO! 因为不管什么样的产品最终呈现给用户的是UI層。所以测试人员应该更多的精力放在UI层。那么也正是因为测试人员在UI层投入大量的精力所以,我们有必要通过自动化的方式帮助我們“部分解放”重复的劳动

在python 自动化测试试中最怕的是变化,因为变化的直接结果就是导致测试用例的运行失败那么就需要对自动化腳本进行维护;如何控制失败,降低维护成本对自化的成败至关重要反过来讲,一份永远都运行成功的python 自动化测试试用例是没有价值

臸于在金字塔中三种测试的比例要根据实际的项目需求来划分。在《google 测试之道》一书对于google产品,70%的投入为单元测试20%为集成、接口测试,10% 为UI层的python 自动化测试试

我为什么要做python 自动化测试试?

根据51testing的《中国软件测试从业人员调查报告》手工测试占到的89% ,相对开发来说测試的门槛底,薪资普遍较底所要求的知识面虽然有一定广度,但缺乏深度这是测试的普遍现状。

正因为手功测试人门槛不高使大量嘚毕业生,甚至是非专业人员涌入这个行业从而增加了这个行业的激烈竞争。对于工作几年扔处于手工测试的人员来说都会有强列的危機感由于工作的技术含量不高,薪资的涨幅遇到瓶颈另一方面受到新进入者的威胁,同样的工作公司花5K招来的人就可以做那么就不會花8K 的招。

好吧这个问题不应该出现讨论技术的话题中,但他的确是大多测试人员不得不面对的一个问题所以,从测试人员自身的发展来说我其实非常需要通过自动化技术来增加自己有竞争力。当然做到一定年限测试人员会选择转管理或其它岗位,这又是另一个话題了

从测试行业的发展来说,国内产品由于产品特点世界级的产品不多,技术含量相对不高质量要求相对要求不高,外包国外项目测试人力成本低廉,所以需要大量的手工测试人员

所以,在不远的未来我认为纯的工手测试人员的需求是递减,公司更需要更高技術能力的测试质量需要测试,测试行为永远不会消失但纯的手工测试人员是否消失是有可能的。

好吧你可以说测试多朝阳的行业,峩纯属在危言耸听不管未来如何,我们都需要提升自身的技能对吧!

什么项目适合做python 自动化测试试

假如你已经决定要学习python 自动化测试試了,如何学习是要面临的下一个问题这个问题以被测试产品为出发点进行分析,假如你所学的技术不能得到应用(验证)将会使你嘚学习过程寸步难行。

首先考考虑产品是否适合做python 自动化测试试这方法比较普遍的共识是从三个方面进行权衡。

测试脚本的稳定性决定叻python 自动化测试试的维护成本如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本而脚本的維护本身就是一个代码开发的过程,需要修改、调试必要的时候还要修改python 自动化测试试的框架,如果所花费的成本不低于利用其节省的測试成本那么python 自动化测试试便是失败的。

项目中的某些模块相对稳定而某些模块需求变动性很大。我们便可对相对稳定的模块进行python 自動化测试试而变动较大的仍是用手工测试。

由于python 自动化测试试需求的确定、python 自动化测试试框架的设计、测试脚本的编写与调试均需要相當长的时间来完成这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成如果项目的周期比较短,没有足够的时间去支持这样一个过程那么python 自动化测试试便成为笑谈。

python 自动化测试试脚本可重复使用

python 自动化测试试脚本的重复使用要从三个方面来考量一方面所测试的项目之间是否很大的差异性(如C/S系统和B/S系统的差异);所选择的测试工具是否适应这种差异;最后,测试人员是否有能力开發出适应这种差异的python 自动化测试试框架

选择什么工具进行python 自动化测试试

假如你已经确认了XX 项目适合做python 自动化测试试,那么接下来你要做嘚就是选测试工具了

首先要先确认你所测试的产品是桌面程序(C/S)还是web应用(B/S)。

由于B/S架构的诸多优势早几年前大量C/S架构的应用转为B/S結构。从而也推动了web开发与测试技术的发展假如,被测试有产品是C/S架构的那么推荐QTP ,QTP在UIpython 自动化测试试领域占到了一半的试用率所以,足以说明QTP在自动化领域强大易用性等。学习主流的工具也可以使你获得更多的机会市面上关于QTP的书籍也非常丰富。当然要想学好QTP ,你必须要掌握VBS脚本语言

如果,被测产品是B/S 结构那么推荐selenium ,为什么不是QTP 或其它工具因为selenium 对B/S应用支持很好,更重要的一点它支持多語言的开发,真正的试用selenium 你所要掌握的不仅仅是一个工具而已,你还需要学习一门语言我为什么要选择selenium?还要学一门语言这无疑增加了我的学习成本。增加成本的同时也增加的你的竞争力,而且在这个过程中你不单单只是学会了一个自动化工具而已,你完全可以使用所学的语言去做更多的事情

从语言易学性来讲,首选ruby python

从语言应用广度来讲,首选java、C#、php、

或者你可以考虑整个技术团队主流用什么語言然后选择相应的语言。

OK!经过上的过程我相信你一定做出的相应的选择,如果你选择的是selenium 工具那么接着往下阅读。

首选你在开始selenium之前需要花一到两个月时间去学一门语言,这里是根据没有语言基础的同学而定的我推荐ruby ,python ,java 任意一门语言来进行学习。

当然已经如果有很好的语言基础略过这个环节,或者你的丰富的java编程能力那么学习python 可能只需要几天时间或更短。

假如你已经搞定了一门语言的基礎,接下来你需要先了解selenium selenium 并不是单纯的一个工具,他是一组工具的集合而且,他还有1.0与2.0之分当然3.0也已经到来。

selenium 也不是简单一个工具而是由几个工具组成,每个工具都有其特点和应用场景

selenium IDE 是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能那麼什么情况下用到它呢?

快速的创建bug重现脚本在测试人员的测试过程中,发现了bug之后可以通过IDE将重现的步骤录制下来以帮助开发人员哽容易的重现bug。

IDE录制的脚本可以可以转换成多种语言从而帮助我们快速的开发脚本,关于这个功能后而用到时再详细介绍

Selenium Grid是一种自动囮的测试辅助工具,Grid通过利用现有的计算机基础设施能加快Web-app的功能测试。利用Grid可以很方便地同时在多台机器上和异构环境中并行运行哆个测试事例。其特点为:

· 通过一个主机统一控制用例在不同环境、不同浏览器下运行

· 灵活添加变动测试机

selenium RC 是selenium 家族的核心工具,selenium RC 支歭多种不同的语言编写python 自动化测试试脚本通过selenium RC 的服务器作为代理服务器去访问应用从而达到测试的目的。

Core就是一堆JS函数的集合就是通過这些JS函数,我们才可以实现用程序对浏览器进行操作Launcher用于启动浏览器,把selnium Core加载到浏览器页面当中并把浏览器的代理设置为Selenium Server 的Http Proxy。

WebDriver通过原生浏览器支持或者浏览器扩展直接控制浏览器WebDriver针对各个浏览器而开发,取代了嵌入到被测Web应用中的JavaScript与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript安全模型导致的限制除了来自浏览器厂商的支持,WebDriver还利用操作系统级的调用模拟用户输入

如果是新项目直接学习webdriver 僦OK了,RC是过时技术

配置你的测试环境,真对你所学习语言来配置你相应的selenium 测试环境。selenium 好比定义的语义---“问好”假如你使用的是中文,为了表术问好你的写法是“你好”,假如你使用的是英语你的写法是“hello”。 所以同样有语义在不同的语言下会有不同的写法(语法)。

接着你需要熟悉webdriver API API就是selenium 所定义一方法,用于定位操作页面上的各种元素。

定位元素的目的是为了操作元素接就要学习各种元素囿操作,输入框下拉框,按钮点击文件上传、下载,分页对话框,警告框...等等

裙里有大量学习资源,欢迎入裙:壹壹二七壹九壹零其实大家找到学方法学习Python就容易很多。

经过一段时间的学习你可以游刃有余的模拟手工测试来操作页面上的各种元素了。接着你需偠做的就是把这些“用例”组织起来统一来跑。

那么你需要做的就是学习并使用单元测试框架单元测试框架本身就解决了用例的组织與运行。

当你写了一些“测试用例” 之后你会发现用例中有大量重复的操作,能不能写到一个单独的文件中需要的时候调用这些操作?当然可以运用你的编程能力来实现这一点将非常简单。然后你又发现每个用例中都有一些数据,这些数据也是一样的但如果变化叻修改起来非常麻烦,你也可以把他写到一个单独的文件中进行读取

接着你又遇到了新的疑问,我写的脚本(用例)都是流水式的我怎么知道用例运行失败还是成功。那么就需要在脚本中加一些验证与断言

接着你又有了更多的想法,单元测试框架的log太简陋了能不能苼成一张漂亮的测试报告出来。我能不能定时的来跑这个脚本能不能把每一次跑脚本的测试结果直接发到我的邮箱。能不能......

为解决这些問题你不得不学习更多的编程技术,然后你的“测试结构”会功能越来越强大越来越灵活。产生了一定的通用性和移植性一个有模囿样的python 自动化测试试框架诞生了。

假如有一天你不再做UI的python 自动化测试试了,你会发现你去做单元测试 或接口测试基本没什么难度开发個测试工具之类的也不在话下,感谢selenium 吧!顺便也感谢一下我吧!

软件测试工程师都有一门属于自巳的工作语言有的喜欢用Python,有的擅长用Java有的偏爱于Go。而其中对于选择用Python作为工作语言的测试工程师来说它的优点不仅仅是简单而已。

作者:柠檬班软件测试来源:| 18:00

python 自动化测试试哪种编程语言更好

软件测试工程师都有一门属于自己的工作语言。有的喜欢用Python有的擅长鼡Java,有的偏爱于Go而其中对于选择用Python作为工作语言的测试工程师来说,它的优点不仅仅是简单而已~

Python的语法非常简单更适合初学编程者,這也是为什么那么多半路转行的人都选择 Python入门编程的原因以前麻省理工的《编程导论》这门课程用的Schemer语言,这几年改成了Python引来很多大佬吐槽

他们的理由是: Python 太简单了,根本不能将那些不适合从事编程工作的人拒之门外

Python在社区和商业上都非常活跃,会有越来越多的人使鼡这么语言意味着有什么问题,你能更容易的找到答案

最近微软在考虑将他们的官方脚本语言换成Python,连这头封闭出名的大象都这么积極的拥抱Python生态可以知道它发展的迅猛。

Python语言***的优势就在于灵活灵活在测试领域是非常重要的。因为测试面对的业务和需求往往千变万囮甚至有时候都不是自己能遇见和决定的。你可以利用 Python广泛的第三方库来轻松实现自己的自动化方案

除了测试行业,你可以通过 Python很容噫的接触到 Web 开发、数据分析、自动化运维和人工智能等领域如果你愿意的话。当然任何一门语言都会有他的弊端。

Python是一门动态语言這也是他为什么容易学的原因,但是他的执行效率比较慢这一点在测试行业的劣势并不明显。但如果要构建巨型应用、对性能有很高要求的领域就不太合适这时候你需要学一门静态语言,比如说Java当然,在1-3年之内也没有这个必要,先把Python 学好如果你在其他地方听到有囚说Python不好,想学静态语言可以考虑Java。

Java学起来稍微复杂一点不过只要你肯用功,资料随便找大牛到处是。现在很多应用还是 Java 语言开发嘚意味着你在测试的时候不太需要考虑语言的兼容性,还有一些主流的测试工具是 Java 写出来的

比如Jmeter等,如果学了Java你可以改造这些工具,让他们更好的为自己所用

Java语言的应用相信你比较熟悉。安卓开发、服务开发、大数据你能想到的商业项目几乎都用了 Java。很多人都说Java咾了可是至今没有其他语言能撼动它在商业项目上的地位。也会有人说 Java种种不是哪门语言都会有人喷。比如Java编译速度比较慢比较笨偅,这些我觉得不能作为拒绝一门语言的理由

如果你觉得Python、Java你都不适合的话。你可以考虑Go语言Go语言因为天然的并发性被很多人青睐,現在主要用于云计算和服务设计对于并发要求不高的领域应用较少。

都说它现在势不可挡人人都说它是趋势,不过这些人都是一些老程序员他们学一门新语言比你要容易太多,做为新人我觉得你还是先学一门容易学的。能给自己信心的语言比较合适学完一门语言鉯后再去学其他的会轻松很多。语言有太多种每一种都有自己的设计目的。人们比较的时候往往不从这些设计目的出发随意评判,新掱很容易被搞晕

所以我也不建议你接触太多门语言,因为你在短时间内是很难知道别人说的是不是真的也许连他们自己都不知道。选┅个容易入门的先知道什么是编程语言也许是***的选择,千万不要一门语言学了几天又盯着另一门语言那样你会很尴尬。


我要回帖

更多关于 python 自动化测试 的文章

 

随机推荐