一、自动化测试中,元素定位有哪几种?常用的是哪些?
1、通过id定位:find_element_by_id()
2、通过name定位:find_element_by_name()
3、通过class定位:find_element_by_class_name()
4、通过tag定位:find_element_by_tag_name()
5、通过link定位:find_element_by_link_text()
6、通过partial_link定位:find_element_by_partial_link_text()
7、通过xpath定位:find_element_by_xpath()
8、通过css定位:find_element_by_css_selector()
id、name、class最常用。xpath和css用得最多。
二、列表推导式是什么?
推导式是Python中用来生成数据的一种高级用法,Python不仅有列表推导式,还有字典推导式、集合推导式、生成器表达式。
它们的语法都是一样的,都是通过for循环来创建数据的一种简写的方式。
# for循环
list_a = list()
for a in range(5):
list_a.append(a)
print(list_a)
# 列表推导式
list_b = [b for b in range(5)]
print(list_b)
三、Python中的装饰器是什么?
装饰器是Python中的高阶语法,装饰器可以通过类或者函数来实现,通常使用@符号来表示一个装饰器。作用:用来扩展某个函数或者类的功能。
四、Python中常见的可变参数类型和不可变参数类型都有哪些?
不可变数据类型:数字、字符串、元组
可变数据类型:字典、列表、集合
五、序列化和反序列化的区别?
序列化,将对象转化成一个字节流的过程;反序列化,就是把字节流转化成一个对象的过程。
在接口自动化测试当中,我们经常需要把编程语言的对象转换成json格式,这就是一个序列化的过程;如果我们需要把json转化成编程语言对象,这就是反序列的过程。
六、UI自动化下的断言如何开展?
基于UI层完成的自动化测试的流程怎么来评判是成功的?
做UI 自动化断言时是基于返回的结果来断言的,一般来说一个流程有一个断言,在最后的结果呈现上面做一个断言以确保整个测试流程运行完之后它运行是成功的还是失败的。
七、如何让自动化测试框架满足多环境的测试执行?
1、分析多环境
在执行测试的过程中,可能因为工作需求需要在开发环境下执行我们的测试工作,也可能在独立的测试环境下进行测试工作,甚至要在客户现场来做一个测试工作,不同的环境使得它的IP不一样,调用的端口也不一样,相关联的一些中间件的一些数据内容可能会发生变化,比如数据库。
2、结合配置项的功能设定满足多环境应用
可以通过配置好不同的环境,然后基于配置项的读取,通过参数的改变,就可以直接实现到环境的切换。
八、日志模块在自动化测试中的用途是什么?
1、行为记录
可以将自动化测试每一个执行的环节每一个展示的环节都有清晰的记录,我们可以通过日志文件快速地看到我们当前所运行的自动化测试执行了哪些内容。
2、异常记录
可以将异常信息全部显示出来,通过异常信息我们可以了解到在运行过程中代码是否出现了报错、error、exception等。
3、分析与调优
分析测试框架没有按照预期执行的原因是什么,分析是代码本身的逻辑设计有问题还是因为被测试的系统出现了功能的异常导致出现了BUG,将这些通过日志整理分析出来之后就可以结合这些进行测试框架的调优。
九、如何优化现有的自动化测试框架?
1、功能方面
考虑功能设计是否合理,应用方面是否方便,在一些代码逻辑的封装上面,在一些类的调用上面,在一些逻辑代码的运行上面,是否可以将代码更加优化将功能更加直接,在操作的时候可以不用过多的调用过多的类和函数,可以在代码层级方面做一个基本的精简和优化。
2、使用方面
主要在数据的管理上,在自动化测试框架的启动和运行上,在数据的前期准备上,在测试框架的基本应用,环境部署等方面来做的。可以考虑数据驱动上数据文件的管理,数据格式的要求以及数据内容的生成可不可以更加简化。
3、效率方面
考虑对于测试用例本身是不是可以做一些优化,或者可以考虑运用一些更为优越的有效率的模式,比如运用selenium的分布式来做UI自动化测试的执行,把所有子结点部署起来然后同步去开启到多个用例让他们并发去执行。
十、APP自动化测试该如何实现?
1、主流APP自动化测试技术应用
Appium、Airtest
2、APP自动化测试缺点
自动化测试效率不高,稳定性较差
APP自动化测试和Web自动化测试大同小异,Appium是基于Selenium作为对象进行实现的。