00:00
嗯,好嘞,呃,今天是我们潘森学习小组的最后一讲,就带着大家一起聊一下是真的。那再问一下大家,就是我们用Python技术站去实现自动化测试的时候呢,那大家用到过的那个单元测试的框架是什么?你听说过哪些,或是自己用到过哪些啊?我这里写的有几个你没你不知道的。写四个。那排太。啊,PY那个。有吗?这个也没有用过是吧,那算了。
01:01
长的啊。啊,三个都完了。嗯,这游戏总结过他们的区别吗?没有,如果做过自动化测试,我就喜欢问他们,那test的这个框架的缺点是什么?可以考虑,可以想一下或者总结一下对吧,那我们呢,那毛毛那大家应该知道,我们最初的用的也是unit test,到最后呢改成了no test,然后后面呢,又选择了这个py test。为什么这么做啊?其实是在使用过程当中遇到了一些问题。那他们的区别给大家看一下,其实网上都有,你们只要认真一点的话,都可以去找到的。这是它这个作者的一些对比test的,嗯,它的执行器啊,用力发现的原理呀,呃,用力是不是自动发现啊,是这里写的是是不是是不是支持,那其实呢。
02:12
我会问大家,就是它自动发现的原理是什么,用力发现的,还有就是哦。比如说我们有500个测试用例,对吧,那但是呢,我不想让他全部执行完,我想让他执行一部分,该怎么去做?这时候呢,就需要大家去认真的研究一下。一般是用到就是用力的这个标签或者是其他方式。还有什么参数化呀,报告呀,日志呀,对吧。啊,这些框架这个链接呢,我就不一一细读了,大家反正呃,聊完之后我会把这个xman整个文件发给大家,大家到时候自己去看一下就好了。
03:02
呃,我们现在在用的框架呢,是py test的这样这样一个框架,至少执行的时候是它,那当然写用令的时候呢,因为py test它是兼容UN test那种方式的,所以我也没有去刻意的写成p test这种格式,直接执行的时候用的是p test。说到接考呢,肯定会用到问大家一些就是协议啊,相信。今年新来同学在做现场面试题的时候都会有印象,Osi的七层七层协议模型,如果说是计算机专业的,肯定或多或少都有些了解,可能自己会记不清楚,或者说记不全。那这里会问到大家,就是应应用层的协议,大家见到的都有哪些呢?梦瑶,你说一下。对。
04:04
没事随便说一下,你觉得你见过的,你用到过的应用层的协议都有哪些?嗯,啊,这一不是应用层的呀,你看。这些才是应用层的,TCP是传输层的。嗯。至少电话面试的时候呢,我会稍微的问一下这些。生的那个PPT和什么区别?
05:07
嗯,那我们经常在做接口测试的过程当中呢,经常遇到协议的就是HTTP或者是TTPS,大家去了解这两者的区别是什么?呃,有些同学在面试过程当中呢,会回答我说HTPS比HTP协议安全,我就会问为什么安全?那当然有了解过的,可能会回答一下,说HTTPS是加密了,用了安全证书,如果这样回答呢,我会紧接着再问,再问一些问题,那HTTS它的那个证书的方式有哪些?另么就是它的加密方式有哪些,那很多同学可能对他的加密方式就回答出来一个MD5,如果说回答MD5呢,会有新的问法,M第五是对称加密呢,还是非对称加密呢?那除了MD5这种加密方式,还有其他的加密方式?
06:01
这点大家自己去了解啊啊,当然这里也给大家推荐一本书,一本日本人写的叫图解HTTP协议,他的是那种插画的方式,然后要清晰易懂。呃,这里呢,是他的别人总结的一个图解APP协议,这本书呢,他的读书笔记做的总结非常不错。我可以推荐给大家去看一下,这篇文章很长。当然有同学呢,也就是买了有这本书啊,可以去看一下,刘英那边应该就有这本书。啊,我们再看一下,那其实。嗯,除了Python自带的这种单元测试框架之外呢,我们呢,有时候会用到就是呃,就是现成的一些框架,比如说robot framework,当然我们这里呢,是自己就是用的一些开源库,自己去封装那些,那现在问大家一个问题那。
07:14
Robot framework这个框架,它是关键词驱动呢,还是数据驱动呢?有用到过吗?娜娜,有用到,你再想想你陈家公司用的是什么?我们都是自己开的平台来,不用外。难道也是和我们一样关键?我们不是关键,我们是数据驱动。对。今天有用到过,都没有毛游戏。是一个关键字驱动的框架。
08:21
他有一个中文的网址的是那个叫一个叫花名是道长啊,真名叫齐涛的那哥们,然后去维护哥们在深圳啊,当然很多,就是四五年前嘛,也出了一本书,写的是Robert。有兴趣的话大家可以去看一下啊,Robot for这个框架它是典型的关键字驱动,我们在使使用这个robot去写那个测试用例的时候呢,非常简单,因为它本身都封装好了一些关键字,然后我们用那些关键字给它参参数就好。
09:03
当然,荣格风暴格,它有自身的限制的啊。嗯。有些同学就是在讲义上写的那个Robert自己使用过,那我就会问他,Robert for Robert这框架的缺点是什么?其实他的缺点我个人认为有几点啊。第一个就是。他对那个自定义的那个内库啊,P定义的支持的不太好,因为我们用了只能就是用他自己封装好了,第二个就是他自己本身呢,这个框架默认的是单线程去执行的。并不能很好的去支持,就是并发执行,当然它我们可以借助第三方的插件去。对他做那个就是B行执行啊。来看一下啊。风博入命令行的话呢,叫p a Bo,应该是他啊。
10:03
哦,这个是并行的,直接就记错了。还有一个叫什么BAT。忘记了啊,好久没碰这个东西。它默认的调研方式是PYBOT这个命令这关键字,然后去调用它,如果说我们想并行执行用这个。PABOT。这个是支持,就是并行执行的,它是多进程。那我们再继续往下了啊。啊,问大家一下,就是呃,自己在设计那个自动化测试用例的时候,和我们手工测试用例,那大家觉得有什么区别呢?先问问娜娜吧,娜娜你觉得有什么区别?
11:08
嗯,我们想一下,嗯。是机动。我们手手工设计。自己做好总间哦,之前我记得和万成你们一起聊过这个问题,时间太久了,你就会忘记了。像我们今天已经很不一样了。
12:00
有哪些不一样对吧,他他在我这里面贴了几篇文章,然后大家可以去看,我总结的都挺不错的。国际呀什么的。对,他会分就是不同的维度,然后去说。那最常见的原则呢,就是嗯,自动化测试用例呢,因为它是要循环多轮去执行的,所以自动化的用例它执行前后,执行后系统当中的数据不会有任何变动。另外就是我们在设计自动化测试用例的时候啊,尽量。让每一条用力都是自己独立的,不要依赖于其他的用力,这样子的话,他跑起来,执行起来,就不会受其他用力的干扰。如果说其他用力失败了,OK,那他这个如果说有依赖的话,他当前这套用力也是失败。或者说他就没有没有办法去执行下去了。
13:00
就是说用力之间不要有关联性啊,另外呢,就是自动化测试用例呢,它没有必要每个步骤都去添加那个检查点。那这一句呢,刚开始我也不理解,我就想为什么呢,然后来想想啊,好像稍微有这么点意思,比如说我们是业务流的,对吧,一整串业务流啊,我现在新增客户,新建合同,新建回款单,其实我只想验证的,只要用力的,只想验证一个场景,我就验证那个添加回款单的时候,他回款单的金额和合同的金额是不是能超过合同的金额,对吧。那这时候呢,我就只需要验证最后一步的话,回款单,回款单的金额大于合同金额的时候,他添加不成功,其实新建客户那步是没有太多的必要去添加这个断言。对,那这点呢,大家自己去总结,边做边去总结,然后就不扯太多。
14:02
今天呢,我们就尽量简单一点啊,想跟大家就是多闲聊一会儿。我记得超超之前在看那个。OS。要搞懂那个是什么吗?就这。忘记了,好像是本来就是一种流程嘛,那个就是一个从开发到那个测试么,一个。行,这样去弄完了,我就跟跟大家说一下,我设计我们现场面试题的时候的思路,最中有一道题呢,是让大家写一下,就是请写出你熟悉的软件的研发模型,对吧。一般呢,大家都会写什么瀑布啊,螺旋呀。对吧,或者是其他的这种,那如果大家写这种传统的,或者说我们课本上的,我都会问大家,那你觉得你们之前的之前的那个研发模型是属于哪种。
15:07
那有些同学就会告诉我说是敏捷,那我就会跟他介绍一下他们的交付流程是什么样子的,然后呢,抛出问题问他说。那你觉得敏捷,你们这里的敏捷和那个传统意义上的瀑布模型,它到底敏捷在哪里了?就这么一个问题。啊,很多人都答不上来,或者是答的并不怎么好。大家也可以去思考一下,或者说看这上面的文章,他介绍的比较全,什么是敏捷开发,什么是。还有develop operations。除了持续集成,持续交付之外呢,还有不同的概念叫什么持续部署。
16:03
Development and operations。开发的认为。每种理念的背后呢,其实他大家相信他,呃,有那么一句话,叫什么存在即合理是吧。其实我觉得有时候这个理念可能有点不对,但是我相信是出现结合那一个理念,或者说一种方式,或者叫一种。最佳实践出来之后,那肯定就是他背后有一定的问题,那这个东西是为了应对或者说解决这个问题才才发现的,或者说才提出来的。嗯。那这是它的一些对比,我也不念了,因为我自己答呢,可能也要想好,就才能总结出来他们的区别或者是什么。
17:01
这里。推荐给大家一本书。是阿里巴巴在今年。也就是,也就是六月份刚出来的一个阿里巴巴的development and operation的实践手册。跟大家分享一下。比较大,它是有许多就是不同的那个文章,然后。集成在一起的,不过写的呢也是相当不错,至少它是成系统的。分类做的不错。好,回到我们就是。现在的运动好,那我们当我们真正的去就是去做我们的这个接口自动化测试用力的时候呢,那其实上节课呢,跟大家已经说过了,就是讲那个UI,或者是讲那个UI自动化测试的时候,是吧,我真正执行的时候呢,其实它执行文件就是这样子的。
18:13
那抛抛除注释和空格,其实大家可以看一下,其实它并没有多少行代码,那我们这里用的就是数据驱动。这是什么意思呢?就是我们。把那个测试数据呢,集中管理,然后呢,把那个测试测试用例作为它的参数,然后分分别去执行,那当然它是支持还是支持并行执行的,对吧,这样子的话就能大大减少我们的。接口的用力的耗时,当然UI的也一样。啊,大家看到这里呢,可能会一脸懵逼,也不知道这里是什么对吧,那其实我是从那个这个模块里面调了一个。这么一个方法。叫用力执行kiss,那用力执行那肯定我里面封装了很多很多东西。
19:07
那这个之前陈振给大家有做过分享,然后大家可以去。呃,科学院上面去看一下,我就不细说了。给大家说一下这边的结构就好了,那基本的操作呢,我们我这里呢,是分到了这个包里面,Package里面叫basic frame,然后呢,这边是。用一层。其他文件大家可以忽略啊。这两层,那我们的测试数据呢,是用mango DB这种数据库来管理的。嗯,之前阿正在直接答辩的时候呢,有被大家问到过,就是为什么选择mango DB,其实当时呢,我是出于两方面的原因,第一个是因为mango DB这种他对就是杰森格式的数据支持比较好,虽然说马赛克也支持,但是操作起来个人觉得还是有点麻烦的,另外就是不想为什么不想用马L,就是自己也存在一点私心,因为不想大家是就是。
20:00
在那些成就啊,或者说非常熟悉的那个技术上面去,所以当时就选择了曼TVB这么一种数据库。不熟悉芒GODB的可以去自己学习一下,其实它操作起来还是比较简单的。那这里先看一下。呃,我这里写的接口呢,接口用例呢比较简单,只是说进入不同的列表页,然后呢,去判断它的返回的结果是不是包含操作成功。而且他执行起来呢比较快。而这个里面呢,它有非常非常多的东西,因为我们的现在的框架呢,这之前也就是改造过一版我们的这个接口自动化框架,它支持就是呃,随意的自动录制,然后呢,测试用例的自动生成,就三个接口了啊。
21:13
并不支持那种业务流弹。目前。嗯,支持这种移动端和外部后台两方面的接口用力。呃,大家去写这个接口测试用例的时候呢,要注意一点,就是移动端的和外部后台的写法它有些是不一样的。大家注意一下就好,当然如果想要那个完整版的,我们现在在用的这个东西呢,就去找他去要一下好了。我这里的是我自己当时在pro完成之后,然后自己有有改的一个东西啊,这个并不是我们现在在用的,但是大概原理上都是差不多的。
22:07
那关于我们的这个框架呢,我不不讲太多了。啊,今天给大家探探讨一下,就是我非常想探讨一下大家就是对测试基础这块。发展的一些认知。视频我先停掉。
我来说两句