(一)面试真题回答参考:自动化测试怎么测?

之前我们公司是通过python+selenium+unittest框架编写脚本来实现自动化。我们也会用selenium2Library + RF框架来实现自动化的。

我觉得unittest和RF(RobotFramework)框架都差不多一样,都是用来组织用例的。【相同点】

不同的是unittest框架是用webbdriver作为驱动,并且要考虑驱动的传递。而RF框架是用关键字keyword_driven来驱动。Unittest框架是通过调用自己封装的方法来实现自动化测试,而RF框架是通过调用自带的第三方库或者扩展库里的关键字来实现自动化测试。RF框架平时调用比较多的就是selenium2Library,excellibrary,mysqllibrary测试库。【不同点】

用unittest框架编写脚本时,我们需要对元素进行定位,我们用得比较多的元素定位方法有:css,id,xpath,class,link。我们也会考虑下拉框、windows的弹出框以及滚动条的跳转,还有进入内嵌和退出内嵌界面的操作【元素定位】。我们也会对模块进行封装,把公共的方法和共同的操作步骤封装在一起【模块封装】。还会编写代码对元素进行参数化【一句话带过】。也会用assert进行判断检查,看看结果跟预期结果是否一致【断言】。

使用RF(RobotFramework)框架先是建立测试项目,再建测试套件,最后建测试用例。元素定位方法跟unittest一样,还有需要建立公共的关键字以及套件的公共资源。我们也会把公共的方法和共同的操作步骤封装在一起。配置参数用得比较多的是数据库连接,excel表格以及py文件,前两种情况我们需要先导入DatabaseLibrary和excellibrary测试库。我们也会用:Should Be Empty 添加断言来判断检查结果是否跟预期结果一致。同时我们也会考虑新界面和新元素的出现,所以我一般会用到只能等待时间和强制等待时间。

当然python+selenium+unittest框架也需要导入unittest模块,继承unittest里面的一些方法。以及我们需要注意的执行顺序,首先是setup(),接着是执行testcase(),最后执行 teardown() 如果是多个用例的话,每执行一个testcase()就要先执行setup(),最后执行teardown()

总的来说RF(RobotFramework)比较简单方便上手比较快,如果公司对自动化要求不高的话可以选择RF框架来做,如果比较高的话就选用unittest框架来做。

例如我们用python+selenium+unittest来执行一个审请提现的模块;首先我们先进行自动化框架分类,分成测试数据、需要定位的元素、公共方法(比如说,一些数据的操作、excel操作,我们会封装成一个公共方法)。先采用css定位,把审请提现所对应的元素定位出来,然后编写测试用例,我们都会建立一个文件夹存放这些测试用例,用例里包含了到用户登陆后,用户登陆前,当提现金额和支付密码正确的情况下,当提现金额为空和支付密码正确的情况下,当提现金额正确和支付密码为空或错误的情况下,不选择银行卡的情况下,重新选择了银卡的情况下,多次重新选择银银行卡的情况下,异常情况下审请提现,同时我们也需要用等价类边界值对参数的长度、特殊符号的输入和类型进行考虑,我们再加assert来断言判断,再把它们封装成一个公共方法。然后我们是用unittest脚本,去执行所有测试用例的,再通过调用HTMLTestRunner模块生成html格式的报告。再分析报告,总结报告。

在做自动化测试的过程中我们会遇到一些比较麻烦的事情就是元素定位:

(1)比如说在申请贷款中选择还款方式有个下拉框,我们定位很久都没定位到,后来才了解到下拉框有好几种定位方法,有class还有css中的父子元素定位;

(2)在描述信息中,内嵌元素没有id和name值,这我们就需要用到标签来定位;

(3)还有一些元素是变动的,比如之前在审核订单号时,订单号是变动的,我们就通过连接数据库查询出订单号,再去拼接元素属性来定位。

在自动化测试中我们也会发现bug。

(1)我们在自动化测试中报错,之后我们去定位问题,发现多了一个弹出框,这是开发编写代码调试用的,没有删除调试代码,导致脚本运行不成功;

(2)还有就是在充值过程中,开发添加了一个新的支付宝支付功能,编写代码是把原有的快捷支付代码做了覆盖,导致原来的支付功能支付不成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值