2023年最新版【接口自动化测试,web自动化测试,app自动化测试】全套自动化测试面试题

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

前言

自动化测试是软件测试中的一个重要领域它可以帮助企业提高软件开发质量、缩短测试周期和降低测试成本。随着信息技术的不断发展自动化测试也在不断地创新和发展。本篇文章收集了2023年最新版的接口自动化测试、Web自动化测试和App自动化测试的面试题旨在为从事或准备从事自动化测试工作的人员提供参考和帮助。这些面试题涵盖了自动化测试中的各个方面包括基础知识、工具使用、技能要求等读者可根据自身情况进行针对性学习和准备以应对未来的自动化测试岗位面试。 

【接口自动化测试面试题】

1.接口自动化框架搭建
Python+pytest+requests+openpyxl+pymysql+logure+allure+jenkins
分为common层 testcases层 testdatas层 conf层 outPuts层
common层工具类读取Excel存放文件的路径连接数据库并进行查询接口请求存放数据数据替换结果断言装饰器
testcases层测试案例conftest.py中夹具共享
testdatas层管理测试用例数据
conf层配置文件存放全局数据和一些容易变动的数据
outPuts层 日志输出
main.py:案例执行入口收集用例执行用例生成报告

2.常用的库
requests、pytest、openpyxl、pymysql、logger、jsonpath、re、allure

3.接口关联的处理
   接口中的返回值利用jsonpath提取动态存储到类属性中当其他接口需要用到时再提取出放到请求参数中
1
4.数据驱动
相同的测试脚本使用不同的测试数据来执行测试数据和测试行为完全分离利用第三方库pytest的装饰器实现数据驱动@pytest.mark.parametrize(“case”, cases)

5.数据的存放
对于账号密码系统url,数据库信息这种管全局的参数单独抽出来写的配置文件里如ini
对于一些一次性消耗的数据比如注册或新增文章标题每次注册或新增都是不一样的数可以用随机函数生成比如python的一个第三方模块faker创建一些测试用的随机数据
对于一个接口经常更改的数据可以参数化数据放yaml
对于不经常改的的数据。 可以用数据驱动方式用excel管理测试的接口数据
对于需要依赖于上个接口的数据存放在动态属性中
6.json和字典dict的区别
字典是python语言的一种数据类型 json是一种轻量级的数据交换格式在网络中传输的通用数据。json本质上还是字符串只是按key:value这种键值对的格式来的字符串

7.并发测试
一般是利用第三方插件pytest-xdist前提是用例之间没有依赖关系且执行是没有顺序的所以不适合接口自动化

8.失败重试
有利于提高自动化用例的稳定性可以通过pytest的pytest-rerunfailures插件来实现用例重跑具体有两种形式一种是全局通过命令行 Pytest --reruns 2 --reruns-delay 5一种是局部在案例方法上打标记@pytest.mark.flaky(reruns=2, reruns_delay=1)

9.遇到的问题
1 用例的入参过多时不小心有了空格会报参数错误 解决case_str=case_str.replace(“\n”, “”).replace(“\r”, “”)#Enter = 回车+换行(\r\n)
2读取excel案例时excel中整个空行有的也被读取了导致读取执行时多执行了一条案例且这条案例报错.
解决根据行获取列循环列获取单元格中的值如果有一个单元格有值就代表这一行可取如果都是空则不可取

3删除刚刚新增的数据时发现新增的接口返回值没有特定的标记导致删除接口时入参不能确定就是刚新增的数据
解决
获取数据库表中最新的一条数据进行删除弊端有可能把别人的数据删掉
找开发把新增接口返回值标记加下

*10.提高案例执行的稳定性
执行时间半夜定时执行
增加重试机制排除环境干扰因素
11.做接口测试过程中发现过哪些bug
短信群发功能新建群发-短信类型选择直播短信时直播时间前端合代码覆盖了所以点击确定没有请求接口无反应

12.pytest的优势
直接使用assert进行断言
失败用例提供非常详细的错误信息
自动发现和收集测试模块和用例
灵活的fixture管理
mark用例标记
丰富的插件系统
支持失败重试
兼容了unittest
13.get和post的区别
作用get 获取资源 post 创建资源
请求主体 get 无请求主体 post 有请求主体
幂等性get 幂等 post 非幂等
缓存 get可以缓存 post 一般不缓存
历史记录和书签 get 可存放 post 不可
安全性 get 低 post 高
14.三次握手
第一次握手时客户端向服务端发送网络包服务端收到后确认收到信息主要目的确认客户端发送功能、服务端接收功能是正常的
第二次握手时服务端向客户端发送网络确认收到报文客户端接收主要目的是确认服务端发送功能、接收功能正常、客户端接收功能、发送功能正常但此时服务端是不知道客户端的接收功能是否是正常的因为没有返回信息来告诉它
第三次握手时客户端发包服务端接收主要目的是确认客户端的接收、发送功能正常服务器自己的发送、接收功能正常
15.http状态码
2XX表示请求被正确处理
200请求被正确处理
204请求被受理但无资源返回
206客户端只请求资源的一部分
3XX表示需要进一步操作重定向
301永久性重定向
302临时重定向
303与302类似只希望客户端在请求一个URI时能通过GET方法重定向到另一个URI上
304发送附带条件的请求时条件不满足时返回与重定向无关
307临时重定向与302类似只是强制要求使用POST方法
4XX一般都是客户端相关问题
400请求报文语法有误服务器无法识别
401请求需要认证
403请求的对应资源禁止访问
404服务器找不到对应资源
5XX一般是服务器端相关问题
500服务器内部错误
503服务器正忙
16.接口自动产生的垃圾数据
1.数据库断言会把一条案例断言结果Ture或False放在一个字典里为了不影响下条案例的断言结果每条用例执行完后需要清空对比结果这时需要利用pytest的confest.py中装饰器@pytest.fixture的后置函数yield把字典置空
2.数据库脏数据一般都是新增接口导致的所以新增成功后可以执行删除接口把新增的数据删除注意如果新增接口返回值没有具体的内容这时要利用数据库获取最新的一条数据有个弊端就是有可能把别人的数据删掉所以尽量跟开发沟通新增接口返回值里有个标记
3.专门有一个自动化数据库定期清除数据

如果对你有帮助的话点个赞收个藏给作者一个鼓励也方便你下次能够快速查找感谢。

如果你想获取该文章配套的视频视频教程以及练手的接口。请狠狠点击文章末尾推广小卡片

并把所需的资料的文章链接发给我即可领取

如果你想获取简历模板+面试技术宝典+求职视频+上千份测试真题

请狠狠点击文章末尾推广小卡片

并把所需的资料的文章链接发给我即可领取

 

17.unittest和pytest的区别
1.用例设计规则
unittest
1试类必须继承unittest.TestCase
2测试函数必须以”test_”开头
pytest:
1测试文件的文件名必须以”test_”开头或者以”_test”结尾
2测试类命名必须以”Test”开头
3测试函数名必须以”test”开头
2.断言
unittest
assertXXX
pytest:
直接使用assert进行断言
3.用例前置和后置
unittest
1通过setup每个用例执行前执行teardown每个用例执行后执行
2通过setupclass类里面所有用例执行前执行teardownclass类里面所有用例执行后执行
每个测试文件必须单独设置前后置
pytest
通过fixture夹具可以自定义pytest的前置和后置yield之前是为前置yield之后为后置格式@pytest.fixture(scope=“XXX”)scope:有四个级别function默认,class,module,session
创建conftest.py文件当前目录下所有的测试文件都能自动调用该夹具
4.参数化
unittest参数化需要依赖第三方库使用ddt去做参数化
pytest:通过装饰器@pytest.mark.parametrize来实现
5.报告展示
unittest通过HTMLTestRunner生成
pytest可以集成allure插件生成
6.失败重运行
unittest不支持
pytestpytest --reruns=22表示重运行2次
7.挑选用例执行
unittest不支持
pytest
1创建一个pytest.ini文件
[pytest]
markers = demo标记名 : just for display(备注名如果不写 可以不加冒号)
2 在要执行的测试用例/测试类前面加上 @pytest.mark.标记名
3main.py文件中添加[-m ,‘要执行用例的标签名’] 根据标签名筛选用例并执行
8.安装需求不同
pytest为第三方单元测试库需额外安装unittest为标准库无需额外安装

18.pytest跳过测试用例
1.无条件跳过------@pytest.mark.skip()
在测试方法或类前面加上装饰器@pytest.mark.skip(reason=None)表示该条测试用例不执行参数reason代表跳过的原因reason可省略
2.有条件跳过------@pytest.mark.skipif()
@pytest.mark.skipif(condition, reason=“xxx”)
说明condition—跳过的条件如果为True则跳过该函数如果为False则不跳过

19.测试用例执行流程
全局测试报告清除处理测试账号准备-》打开Excel读取对应的接口测试数据 -》 定义一个测试类写接口的测试用例使用pytest的数据驱动 -》 处理请求数据若有替换就替换 -》发起请求有token就传token -》得到响应结果 -》如果有提取字段那么需要从响应结果当中提取对应的数据 -》响应结果断言 -》数据库断言
 

【Web自动化测试面试题】
1.Selenium中hidden或者是display none的元素是否可以定位到

不能,可以写JavaScript将标签中的hidden先改为0再定位元素

2.Selenium中如何保证操作元素的成功率也就是说如何保证我点击的元素一定是可以点击的

1.添加元素智能等待时间 driver.implicitly_wait(30)

2.添加强制等待时间(比如python中写 sleep)

3.try 方式进行 id,name,clas,x path, css selector 不同方式进行定位如果第一种失败可以自动尝试第二种

3.如何提高Selenium脚本的执行速度

代码优化多任务分布式部署都是可以提升脚本执行速度的。

4.用例在运行过程中经常会出现不稳定的情况也就是说这次可以通过下次就没办法通过了如何去提升用例的稳定性

1.time.sleep( )

2.driver.implicitly_wait(30)

3.多用 try 捕捉处理异常

5.你的自动化用例的执行策略是什么

自动化测试与软件开发本质上是一样的利用自动化测试工具经过测试需求分析设计出自动化测试用例从而搭建自动化测试的框架设计与编写自动化脚本验证测试脚本的正确性最终完成自动化测试测试脚本即主要功能为测试的应用软件并输出测试结果

6.自动化测试的时候是不是需要连接数据库做数据校验

从数据库层面来进行数据校验可以更方便验证系统的数据处理方面是否正确数据处理逻辑正常后UI层面上的校验也是需要做的。

7.id,name,class,xpath, css selector这些属性你最偏爱哪一种为什么

css 、xpath 几乎所有的元素都可以定位到,但是它们的短处在于页面上更改了元素后位置很容易改变所以首先使用的还是id或者name等。

8.如何去定位页面上动态加载的元素

触发动态加载元素的事件直至动态元素出现进行定位

9.如何去定位属性动态变化的元素

xpath或者css通过同级、父级、子级进行定位

点击链接以后Selenium是否会自动等待该页面加载完毕

会的

10.什么是page object设计模式

简单来说就是把页面作为对象在使用中传递页面对象来使用页面对象中相应的成员或者方法能更好地体现面向对象语言比如java或者python的面向对象和封装特性。

11.如何在定位元素后高亮元素以调试为目的

用JavaScript等脚本来重置元素属性给定位的元素加背景、边框

12.什么是断言

断言的英文是assertion断言检查的英文是assertion checking。

断言是指定一个程序必须已经存在的状态的一个逻辑表达式或者一组程序变量在程序执行期间的某个点上必须满足的条件。

13.你觉得自动化测试最大的缺陷是什么

1.不稳定

2.可靠性

3.不易维护

4.成本与收益

14.Webdriver可以用来做接口测试吗

接口测试有现成的模块来处理WebDriver是用于做WebUI自动化测试的。如果要实现接口测试可以使用Requests模块来实现

二、APPUI自动化测试
1.Android APP 内存不足时 系统如何结束进程获得内存

系统优先结束被挂起暂停的进程释放内存

2.APP 测试常见的严重问题有哪些分别引起的原因有哪些

常见的有 crash、ANR应用无响应、卡死一般由设备碎片化、网络波动大、内存泄漏、代码编写错误

3.请简单介绍你曾使用过的一款 APP 自动化测试工具

开放性问题带点主观意见

1.对比其他熟悉的自动化工具的优缺点

2.自动化的简要方案简要的同时关键内容请具体。提示appnium 等

4.Android 测试与 web 测试有什么区别

相同点

1.设计测试用例均依据等价类、边界值等方法测试原理相同

2.大多数都采用黑盒测试方法来验证业务功能

3.需要检查界面布局、风格和按钮是否美观、统一等UI测试

4.测试页面载入和翻页的速度、登录时长是否溢出等问题性能测试

5.测试应用系统的稳定性

不同点

1.手机作为通信工具通信等一些行为会对APP产生(中断测试)

2.手机用户对app 产品的安装卸载操作从上一版本/上两个版本直接升级到最新版本安装卸载测试

3.web自动化测试使用的工具较常用的是selenium,而android手机自动化测试比较常用的自动化工具是monkey、monkeyrunner、Appium测试工具不一样

5.app 测试有哪几种环境

本地环境app 安装的手机环境和电脑搭建的自动化测试环境比如安卓 SDK 等等。

服务器环境war 包部署的服务器 服务器可以通过浏览器访问 也可以通过 app 去访问。访问的是 web 程序的接口

6.简单介绍一下 Android SDK 的安装步骤

下载 jdk 和安卓 sdk

安装 jdk 配置环境变量java_home、 classpath、 path

7.请简要介绍一下移动应用及其服务端的测试点

移动应用主要有权限、安装运行卸载、UI、功能、性能、中断、兼容性、安全性、回归、升级更新、用户体验。app的11 大测试点

服务端有接口测试、性能测试、安全测试。

8.如何判断 app 的 bug 是客户端问题还是后台问题

这个要根据业务来一般数据的问题前端的问题多些一般做法是有问题提给前端开发 他们知道是他们自己的问题还是后台返回的数据问题。

9.安卓中如何取出日志信息

把安卓系统日志信息实时导入到本地adb logcat -v time > d:\mylog.log

运行使用某个 app实时获取该 app 的日志信息cmd 里面的返回信息

adb shell monkey -p com.android.calendar -v 1000 > d:\mylog2.log

10.常见的 adb 命令

查看当前连接的设备adb devices

安装软件adb install 路径\xx.apk

卸载软件adb uninstall <包名>

从电脑上发送文件到设备adb push <本地路径> <远程路径>

adb push C:\test1.txt /sdcard/

从设备上下载文件到电脑adb pull <远程路径> <本地路径>

adb pull /sdcard/test1.txt D:

实时获取日志adb logcat -v time > D:\mylog.log

登录终端设备 shelladb shell

查找包名/活动名adb logcat | findstr START

脚本中 cmp= 后面的值就是 包名/activity 名称

启动 APP 启动

adb shell am start -n packageName/activity

关闭 app

语法adb shell am force-stop 包名

监控 APP 启动时间

adb shell am start -W packageName/activity

Monkey 命令

adb shell monkey -v -p mypackage 50

11.APP 这么多主流机型如何测试

我们公司就买了 魅族 华为 小米 iphone7、 iphone8 、 iphone8plus 、 iphone x 测试兼容性有些没有的机型先借用同事的手机进行测试同时申请公司购买或者采用云真机。

12.App 崩溃闪退可能是什么原因导致的

缓存垃圾过多由于安卓系统的特性,如果长时间不清理垃圾文件.会导致越来越卡.也会出现闪退情况.

运行的程序过多,导致内存不足

应用版本兼容问题如果应用版本太低会导致不兼容造成闪退。此外有些新版本在调试中也会造成应用闪退。解决方法如果是版本太旧更新为新版本即可如果是新版本闪退可能是应用在改版调试可卸载后安装旧版。

检查 APP 中访问网络的地方组件中的 ImageView 是否可以正常的下载并显示到 app 页面上。

检查 APP 的 sdk 和手机的系统是否兼容。

在一些特定情况下的闪退,比如播放视频,在 Android5.0 升级到 Android6.0 的时候,有些系统 API 老版本有,新版本没有,到时回去对象的时候失败,报空,系统就会出现闪退

13.Appium 都有哪些启动方式

1.客户端启动

2.命令行启动

14.请简单介绍一下使用过的安卓UI自动化测试工具

参考答案appium是一个移动端的自动化框架可用于测试原生应用移动网页应用和混合型应用且是跨平台的。robotium是一款国外的Android自动化测试框架主要针对Android平台的应用进行黑盒自动化测试它提供了模拟各种手势操作点击、长按、滑动等、查找和断言机制的API能够对各种控件进行操作。

15.请说明Android手机和IOS手机系统有什么区别

两者运行机制不同IOS采用的是沙盒运行机制安卓采用的是虚拟机运行机制。

两者后台制度不同IOS中任何第三方程序都不能在后台运行安卓中任何程序都能在后台运行直到没有内存才会关闭。

IOS中用于UI指令权限最高安卓中数据处理指令权限最高。

接口自动化测试

16.按你的理解软件接口是什么

就是指程序中具体负责在不同模块之间传输或接受数据的并做处理的类或者函数。

17.HTTP和HTTPS协议区别

https协议需要到CACertificate Authority证书颁发机构申请证书一般免费证书较少因而需要一定费用

http是超文本传输协议信息是明文传输Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议比http协议安全

http和https使用的是完全不同的连接方式用的端口也不一样前者是80后者是443

18.HTTPS在哪一层

以前我面试很喜欢提网络协议的问题有朋友说我装X不实用。稍有点研究网络知识实际就不难回答

答HTTPS在应用层。

19.get和post区别是什么

答POST和GET都是向服务器提交数据并且都会从服务器获取数据。

区别

1传送方式get通过地址栏传输post通过报文传输

2传送长度get参数有长度限制受限于url长度而post无限制

3GET产生一个TCP数据包对于GET方式的请求浏览器会把http header和data一并发送出去服务器响应200返回数据POST产生两个TCP数据包对于POST浏览器先发送header服务器响应100 continue浏览器再发送data服务器响应200 ok返回数据

4get请求参数会被完整保留在浏览历史记录里而post中的参数不会被保留

5在做数据查询时建议用GET方式而在做数据添加、修改或删除时建议用post方式

20.常见的POST提交数据方式

主要有四种方式application/x-www-form-urlencoded、multipart/form-data、application/json、text/xML等。

21.什么是Http协议无状态协议?怎么解决HTTP协议无状态协议

无状态是指协议对于事务处理没有记忆能力服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后服务器根据请求会给我们发送数据过来但是发送完不会记录任何信息。HTTP 是一个无状态协议这意味着每个请求都是独立的Keep-Alive 没能改变这个结果。缺少状态意味着如果后续处理需要前面的信息则它必须重传这样可能导致每次连接传送的数据量增大。另一方面在服务器不需要先前信息时它的应答就较快。HTTP 协议这种特性有优点也有缺点优点在于解放了服务器每一次请求“点到为止”不会造成不必要连接占用缺点在于每次请求会传输大量重复的内容信息。客户端与服务器进行动态交互的 Web 应用程序出现之后HTTP 无状态的特性严重阻碍了这些应用程序的实现毕竟交互是需要承前启后的简单的购物车程序也要知道用户到底在之前选择了什么商品。于是两种用于保持 HTTP 连接状态的技术就应运而生了一个是 Cookie而另一个则是 Session。

22.cookie和session的区别

cookie数据存放在客户的浏览器上session数据放在服务器上

cookie不是很安全别人可以分析存放在本地的cookie并进行cookie欺骗考虑到安全应当使用session

session会在一定时间内保存在服务器上。当访问增多会比较占用你服务器的性能考虑到减轻服务器性能方面应当使用cookie

单个cookie保存的数据不能超过4K很多浏览器都限制一个站点最多保存20个cookie

可以将登陆信息等重要信息存放为session其他信息需要保存可以放在cookie

23.什么是DNS

答DNS 是域名系统 (Domain Name System)DNS是用来做域名解析的,它会在你上网输入网址后把它转换成IP然后去访问对方服务器没有它你想上百度就要记住百度的IP但有了DNS的处理你只需要记住对应网站的域名即网址就可以了。

24.请问你们公司是如何做接口测试的

接口测试实际跟一般测试不同就是测试用例的设计部分。

①获取接口规范。

②设计接口测试功能用例主要从用户角度出发看接口能否实现业务需求用例设计就是黑盒用例那一套。

③各种入参验证正常情况异常情况包括输入参数个数不对类型不对可选/必选还有考虑参数有互斥或关联的情况。

④接口返回值各种验证符合接口文档需求

⑤了解接口实现逻辑实现逻辑覆盖语句/条件/分支/判定/…

⑥接口能并发执行吗、安全吗性能满足要求吗?

⑦采用工具或者自写代码来验证。

⑧发现问题跟功能测试一样该报bug报bug该跟踪状态的跟踪状态。

25.怎么设计接口测试用例

通常设计接口测试用例需要考虑以下几个方面

①是否满足前提条件

有些接口需要满足前提才可成功获取数据。常见的需要登录Token

逆向用例针对是否满足前置条件假设为n个条件设计0~n条用例

②是否携带默认值参数

正向用例带默认值的参数都不填写、不传参必填参数都填写正确且存在的“常规”值其他不填写设计1条用例

③业务规则、功能需求

这里根据时间情况结合接口参数说明可能需要设计N条正向用例和逆向用例

④参数是否必填

逆向用例针对每个必填参数都设计1条参数值为空的逆向用例

⑤参数之间是否存在关联

有些参数彼此之间存在相互制约的关系

⑥参数数据类型限制

逆向用例针对每个参数都设计1条参数值类型不符的逆向用例

⑦参数数据类型自身的数据范围值限制

正向用例针对所有参数设计1条每个参数的参数值在数据范围内为最大值的正向用例

26.平常用什么工具测接口的

答常用http协议接口测试工具如postman、fiddler、jmeterwebService接口用SoapUI、jmeter等。

27.没有接口文档如果做接口测试

本题主要考情商通俗来说就是忽悠能力先唬住面试官了再说进去了也是瞎测测随时做好背锅的准备当然你肯定不能回答面试官不测(心理mmp脸上笑嘻嘻)接下来就是扯犊子时间

答用抓包工具把接口抓取处理然后针对性进行测试接口中字段信息不清楚的找时间集中寻求开发解答。常用抓包工具Fiddler、Charles等

28.在手工接口测试或者自动化接口测试的过程中上下游接口有数据依赖如何处理

答用一个全局变量来处理依赖的数据比如登录后返回token其它接口都需要这个token那就用全局变量来传token参数。

29.依赖于第三方数据的接口如何进行测试

答mock

接着面试官会问你如果mock的然后你就顺着坑继续挖搭建mock服务参考这篇http://www.51ste.com/share/det-485.htML

30.接口测试中依赖登录状态的接口如何测试

答依赖登录状态的接口的本质上是在每次发送请求时需要带上session或者cookie才能发送成功在构建POST请求时添加必要的session或者cookie

31.如何模拟弱网做测试

答Fiddler和charles都可以模拟弱网测试平常说的模拟丢包也是模拟弱网测试。具体可以看《几种弱网模拟方法总有一种适合你》

32.你平常做接口测试的过程中发现过哪些bug?

面试官出这个题主要是想知道你是不是真的做过接口测试毕竟现在很多小伙伴简历经过包装不包装连面试机会都没有没办法为了生存能理解

常规错误接口没实现没按约定返回结果边界值处理出错等。

输入异常值空值、特殊字符、超过约定长度等接口抛错没做封装处理

输入错误的参数、多输入、少输入参数接口可能出现的错误

安全性问题如明文传输、返回结果含有敏感信息没对用户身份信息做校验没做恶意请求拦截等

性能问题如接口并发插入多条相同操作响应时间过长接口压测出现瓶颈等

33.当一个接口出现异常时候你是如何分析异常的

先抓包用fiddlercharles工具抓包或者浏览器上F12调试工具APP上的话那就用Fiddler做代理通过手机设置代理去看请求和返回报文

查看后端日志如Linux系统通过xhell连上服务器查看接口日志查看是否有报错信息命令tail -f 日志文件

34.如何分析一个bug是前端还是后端的

平常提bug的时候前端开发和后端开发总是扯皮不承认是对方的bug。

这种情况很容易判断先抓包看请求报文对着接口文档看请求报文有没问题有问题就是前端发的数据不对

请求报文没问题那就看返回报文返回的数据不对那就是后端开发的问题咯。

35.你们做接口测试自动化吗

答现在针对大量应用普遍推崇做接口测试自动化维护成本低、收益高。常用的工具有许多如Jmeter、Robot Framework、pytest等。

36.列出几个JMeter监听器

一些JMeter监听器是

集合报告

汇总报告

查看结果树

用表格查看结果

图形结果

BeanShell Listener

摘要报告等

37.在python中进行数据驱动测试

在unittest中没有自带的数据驱动我们得借助ddt来实现首先我们得在python运行环境中安装ddt用下列命令安装

pip install ddt

另外一个测试框架pytest它自带数据驱动实现是通过@pytest.mark.parametrize(argnames,argvalues) 来实现参数化的。

也可以根据自己需求用python实现数据的读取和驱动。

38.接口自动化中的关联怎么处理

把上一个请求返回的结果传入到下一个请求的参数中将请求的结果反射到一个类属性使用setattr函数下一个请求去调用这个类属性

39.自动化测试怎么校验结果

断言 预期结果与实际结果对比

数据库校验根据测试场景来查询数据库里的数据和请求之前的数据进行比对

40.自动化使用的测试框架是什么简述自动化框架的设计、维护

测试框架python+unittest+requests+ddt+openpyxl+pymysql+logging

python入门简单语法简洁

unittest 定义一个测试用例类具体的方法来维护测试用例的生命周期测试场景行为测试用例 前置场景行为期望结果实际结果断言方法Setup teardown方法

requests接口调用 支持http请求的库API 简洁提供不同的http请求方法支持sessioncookies

ddt 数据驱动ddt 类装饰器data 测试方法装饰器 unpack解包可迭代的数据类型

普通用户数据库配置文件—基础数据

openpyxl数据管理 excel管理数据使用openpyxl模块来进行excel数据的读和写exclecsv, json, yaML, txt都可以管理测试数据

pymysql数据库交互数据校验

evaljson数据格式的转换 Eval将python支持的格式转换成对应的格式

logging日志处理 统一日志输出格式渠道级别执行结果的记录便于定位问题

jenkins持续集成

2/框架设计思路数据驱动+结构分层可读性可维护性可扩展性

数据驱动将维护数据与代码分离接口调用行为一致针对不同的参数组合驱动不同的测试场景减少代码冗余

结构分层数据层+用例层+逻辑层

数据层测试数据的支撑 data.xls

用例层用例的执行 test_register.py test_recharge.py

逻辑层公用的方法的封装与提取 doexcle.py do_mysql.py http_requests.py logger.py等模块

3/框架设计步骤

准备测试数据EXCEL表准备测试用例—excel数据的读取—参数值的替换

发起请求请求方法get/post方法进行封装—URL的拼接不同—参数转化为字典

拿到请求的返回值解析返回值codestatusmsg信息

断言

好处

1、自动化测试用例和手工测试用例的完美结合减少重复工作

2、配置灵活可以自主切换测试环境执行测试用例

3、常用功能进行封装逻辑清晰易于维护

4、统一执行入口管理测试用例集

run.py模块通过模糊查找来选择需要执行的测试用例

5、持续集成定时构建快速反馈

41.具体的在这个项目中自动化怎么应用到实际的您对自动化结果的分析

完成所有的自动化测试框架的设计和实现后进行接口测试然后集成到

jenkins配置定时执行生成htML报表查看测试通过率查看接口的功能

每次发版时进行回归测试新功能开发未提测前。


【app自动化测试面试题】

1.Android APP 内存不足时 系统如何结束进程获得内存
系统优先结束被挂起暂停的进程释放内存

2.APP 测试常见的严重问题有哪些 分别引起的原因有哪些
常见的有 crash、ANR应用无响应、卡死一般由设备碎片化、网络波动大、内存泄
漏、代码编写错误

3.请简单介绍你曾使用过的一款 APP 自动化测试工具
开放性问题带点主观意见
1.对比其他熟悉的自动化工具的优缺点
2.自动化的简要方案简要的同时关键内容请具体。提示 appnium 等

4.Android 测试与 web 测试有什么区别
相同点
1.设计测试用例均依据等价类、边界值等方法测试原理相同
2.大多数都采用黑盒测试方法来验证业务功能
3.需要检查界面布局、风格和按钮是否美观、统一等UI 测试
4.测试页面载入和翻页的速度、登录时长是否溢出等问题性能测试
5.测试应用系统的稳定性
不同点
1.手机作为通信工具通信等一些行为会对 APP 产生(中断测试)
2.手机用户对 app 产品的安装卸载操作从上一版本/上两个版本直接升级到最新
版本安装卸载测试
3.web 自动化测试使用的工具较常用的是 selenium,而 android 手机自动化测试比
较常用的自动化工具是 monkey、monkeyrunner、Appium测试工具不一样

5.app 测试有哪几种环境
本地环境 app 安装的手机环境和电脑搭建的自动化测试环境比如安卓 SDK 等
等 。
服务器环境war 包部署的服务器服务器可以通过浏览器访问也可以通过 app
测码学院
去访问。访问的是 web 程序的接口
6.简单介绍一下 Android SDK 的安装步骤
下载 jdk 和安卓 sdk
安装 jdk 配置环境变量java_home、 classpath、 path
7.请简要介绍一下移动应用及其服务端的测试点
移动应用主要有权限、安装运行卸载、UI、功能、性能、中断、兼容性、安全性、
回归、升级更新、用户体验。app 的 11 大测试点
服务端有接口测试、性能测试、安全测试。
8.如何判断 app 的 bug 是客户端问题还是后台问题
这个要根据业务来一般数据的问题前端的问题多些一般做法是有问题提给前端开发
他们知道是他们自己的问题还是后台返回的数据问题。

9.安卓中如何取出日志信息
把安卓系统日志信息实时导入到本地 adb logcat -v time > d:\mylog.log
运行使用某个 app实时获取该 app 的日志信息cmd 里面的返回信息
adb shell monkey -p com.android.calendar -v 1000 > d:\mylog2.log
10.常见的 adb 命令
查看当前连接的设备 adb devices
安装软件 adb install 路径\xx.apk
卸载软件 adb uninstall <包名>
从电脑上发送文件到设备 adb push <本地路径> <远程路径>
adb push C:\test1.txt /sdcard/
从设备上下载文件到电脑 adb pull <远程路径> <本地路径>
adb pull /sdcard/test1.txt D:
实时获取日志 adb logcat -v time > D:\mylog.log
登录终端设备 shell adb shell
查找包名/活动名 adb logcat | findstr START
脚本中 cmp= 后面的值就是 包名/activity 名称
启动 APP 启动
adb shell am start -n packageName/activity
关闭 app
语法 adb shell am force-stop 包名
监控 APP 启动时间
adb shell am start -W packageName/activity
Monkey 命令
adb shell monkey -v -p mypackage 50
11.APP 这么多主流机型如何测试
我们公司就买了魅族华为小米 iphone7、 iphone8 、 iphone8plus 、 iphone
x 测试兼容性有些没有的机型先借用同事的手机进行测试同时申请公司购买或者采
用云真机。

12.App 崩溃闪退可能是什么原因导致的
缓存垃圾过多由于安卓系统的特性,如果长时间不清理垃圾文件.会导致越来越卡.也
会出现闪退情况.
运行的程序过多,导致内存不足
应用版本兼容问题如果应用版本太低会导致不兼容造成闪退。此外有些新版本
在调试中也会
造成应用闪退。解决方法如果是版本太旧更新为新版本即可如果是新版本闪退
可能是应用在改版调
试可卸载后安装旧版。
检查 APP 中访问网络的地方组件中的 ImageView 是否可以正常的下载并显示到 app
页面上。
检查 APP 的 sdk 和手机的系统是否兼容。
在一些特定情况下的闪退,比如播放视频,在 Android5.0 升级到 Android6.0 的时候,
有些系统 API 老版本
有,新版本没有,到时回去对象的时候失败,报空,系统就会出现闪退

13.Appium 都有哪些启动方式
1.客户端启动
2.命令行启动

14.请简单介绍一下使用过的安卓 UI 自动化测试工具
参考答案appium是一个移动端的自动化框架可用于测试原生应用移动网页应用
和混合型应用且是跨平台的。robotium是一款国外的 Android 自动化测试框架主要针
对 Android 平台的应用进行黑盒自动化测试它提供了模拟各种手势操作点击、长按、滑
动等、查找和断言机制的 API能够对各种控件进行操作。

15.请说明 Android 手机和 IOS 手机系统有什么区别
两者运行机制不同IOS 采用的是沙盒运行机制安卓采用的是虚拟机运行机制。
两者后台制度不同IOS 中任何第三方程序都不能在后台运行安卓中任何程序都
能在后台运行直到没有内存才会关闭。
IOS 中用于 UI 指令权限最高安卓中数据处理指令权限最高。
 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“2023年最新版【接口自动化测试,web自动化测试,app自动化测试】全套自动化测试面试题” 的相关文章