面试题

一、python编程

1.UI自动化的断言方式有:

1.assertTure()用于判断一个表达式的结果是否为真,元素是否存在
2.assertEqual()判断两个值是否相等
3.assertGreater() 和 assertLess():用于比较两个值的大小关系
4.assertIn() 和 assertNotIn():用于判断一个值是否在某个集合中
5.assertRaises():用于断言一个方法是否会抛出异常

2.python有哪些数据类型?

1.数字(number)、字符串(string)、元组(tuple)、列表(list)、集合(set)、字典(dict)

3.列表和元组区别?

1.不同点:a.列表是可变的,而元组不可变的。 b.与列表相比元组的内存更小
2.相同点:a.都是序列 b.都可以存储任何数据类型 c.可以通过索引访问

4.冒泡排序

public static int[] buddleSort(int[] arr){
    for(int i=1;i<arr.length;i++){
        for(int j=0; j<arr.length-i; j++){
            if(arr[j] < arr[j+1]){
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
    return arr;
}

5.python中的深拷贝和浅拷贝

浅拷贝(Shallow Copy): 拷贝父对象,不会拷贝父对象中的子对象。
深拷贝(Deep Copy): 拷贝父对象及其中的子对象。

6.什么是可变类型,什么是不可变类型

a.可变类型‌指的是数据值可以改变的数据类型列表(list)、字典(dict)、集合(set),b.不可变类型‌指的是数据值不可改变的数据类型数字(int、float、complex)、字符串(str)、元组(tuple)、布尔值(bool)。

7.验证码怎么处理的

1.让开发给web验证码留一个万用验证码,只要输入给定的验证码就可以登录
2.如果是滑动解锁验证码可以用selenium滑动实现解锁
3.使用cookie强行跳过验证码,使用抓包工具就可以实现
4.从库里取出验证码给传到登录接口

8.selenium如何处理多窗口

1.获取当前的windowhandle 
2.操作打开新界面后获取所有的windowhandles 
3.遍历windowhandles,判断当前windowhandle不一样则却换至该windowhandle
4.window太多则可以按照title、url等其他信息进行判断切换

9.自动化测试过程中,遇到问题及解决办法

1.频繁地变更页面,经常修改页面对象类的代码
2.自动化测试偶尔出现误报
3.自动化测试代码维护比较麻烦
4.自动化测试进行数据库校验,对数据库表和结构不是很清晰

10.接口自动化框架

commons封装公共方法
datas用于存放yaml数据驱动文件
logs存放日志
report存放报告
testcases存放测试用例
config全局配置文件
contest全局fixture固件
pytets.ini全局pytest配置文件

11.接口鉴权怎么做

我们接口中主要就两种鉴权,一个是cookie
鉴权,一个是token鉴权。
1.cookie鉴权我们是使用requests.session()对象来发送请求。而requests的session会话对象会将
cookies值自动传到下一个接口请求。
2.token鉴权我们是通过接口关联来实现的

12.接口自动化断言怎么做

1.状态码断言‌:检查接口返回的HTTP状态码是否符合预期,这是判断接口请求是否成功的基本方法。例如,一个成功的请求通常返回状态码200。
2.响应体断言‌:基于接口的响应数据进行校验。这可以包括检查响应中的特定字段值是否符合预期,或者使用正则表达式进行模式匹配。
3.响应时间断言‌:确保接口的响应时间在可接受的范围之内。这对于评估接口性能至关重要。
4.数据库断言‌:在接口调用后,检查数据库中的数据是否有相应的变化。这适用于需要验证数据库交互的接口测试。
5.相关接口辅助验证‌:例如,测试一个删除操作后,可以通过调用查询接口来验证被删除的记录是否真的不存在了,从而确认删除操作成功。

二、性能测试面试题

1.性能测试中一般关注哪些指标

1.业务性能指标:并发用户数、平均响应时间、TPS、吞吐量、事务成功率
2.系统资源性能指标
a.服务器‌:CPU利用率、内存利用率、磁盘IO状态、网卡带宽使用情况等。
b.数据库‌:数据库连接数、读写响应时长、读写吞吐量等。
c.网络‌:网络吞吐量、网络带宽、网络缓冲池大小。
d.缓存(如Redis)‌:静态资源缓存命中率、动态数据缓存命中率、缓存吞吐量等。
e.测试设备(压力发生器)‌:与服务器相关的硬件资源使用情况监测

2.做过的项目最大并发用户数是多少

用户1万时,接口平均响应时间要小于1.5秒,错误率低于0.1%,服务器的资源利用率都要低于70%,分布式控制多台压力机一起做的

3.HTTP和HTTPS协议区别?

https需要到CA申请证书,一般免费证书较少,因而需要一定费用
http是超文本传输协议,信息是明文传输,https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全;
连接方式不同,端口也不同,前者80后者443

4.post和get区别

1.传送方式:get通过地址栏传输,post通过报文传输
2.传送长度:get参数有长度限制(受限于url长度),而post无限制
3.GET产生一个TCP数据包(对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器返回200返回数据),POST产生两个TCP数据包(对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok返回数据)
4.get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留
5.在做数据查询时,建议用GET方式;而在做数据添加、修改或删除时,建议用post方式

5‌.pytest的底层原理主要包括以下几个方面‌:

‌测试发现机制‌:当运行pytest时,框架会自动查找当前目录下的所有测试文件。默认情况下,pytest会识别文件名以test_开头或以_test.py结尾的Python文件。这些文件中以test_开头的函数或方法被识别为测试用例。pytest还支持类的测试方法,但类必须以Test开头,类内的方法也要以test_开头‌12。

‌测试执行流程‌:pytest会收集所有符合规则的测试用例,然后逐一执行这些测试用例,并捕获测试执行结果。主要步骤包括:收集测试用例、执行测试、结果报告。pytest会根据测试用例的执行结果输出成功、失败或跳过的报告,并提供详细的测试日志和失败的堆栈跟踪信息,帮助定位问题‌14。

‌断言与异常处理‌:pytest通过Python的内置断言语句来检查测试结果是否符合预期。当断言失败时,pytest会捕获异常并报告测试失败。pytest提供了增强的断言机制,能够在断言失败时输出更详细、易读的错误信息‌14。

‌夹具机制‌:pytest提供了强大的夹具机制,用于在测试之前、之后进行设置和清理操作。夹具可以通过函数、类、模块或整个会话级别使用。使用@pytest.fixture装饰器定义夹具,夹具函数可以为多个测试用例提供共享的测试环境‌1。

‌插件机制‌:pytest支持自定义插件,通过插件可以扩展框架的功能,如自定义报告格式、自定义结果收集等。这使得pytest非常灵活,能够适应各种不同的测试需求‌24。

6.python列表和字典的区别

Python中的列表和字典是两种主要的数据类型,它们之间有以下区别:
定义方式不同:列表使用方括号[]定义,字典使用花括号{}定义。
存储内容不同:列表是序列存储,元素按照插入顺序保存;字典是映射类型,使用键值对存储,键必须可哈希。
查找速度不同:列表是顺序存储,可以通过索引直接访问元素;字典通过键直接访问值,查找速度快。
存储结构不同:列表是连续的内存空间;字典是哈希表实现,内存空间不一定连续。
元素是否有序:列表是有序的;字典的元素是无序的。
元素是否可变:列表的元素可变;字典的键是不可变的,但值是可变的。

posted @ 2024-09-04 20:14  韦大仙  阅读(2)  评论(0编辑  收藏  举报