1、自动化测试类型
主要分为单元自动化测试、接口自动化测试、UI自动化测试
2、web自动化中常见定位方式
ID、name、tagName、className、linkText、partialLinkText、css、xpath
????????????????? ? ? ? 标签名、? ? ? ? ? ? ? ? ? ? 、超链接文本、部分超链接文本
3、selenium中等待方式
强制等待:让线程休眠一定时间
import time
time.sleep(3)
隐式等待:默认0.5秒,轮询查找,全局配置,如果元素在三秒内没有出现就抛异常
self.driver.implicitly_wait(3)
显式等待:在等待中自定义等待条件,举例:做xx操作直到xx元素出现
4、模拟浏览器前进、后退、刷新
from selenium import webdriver
driver = webdriver.Chrome()
driver.back()
driver.forward()
driver.refresh()
5、selenium文件上传
input标签可以直接使用send_keys(文件地址)上传文件
语法:
el=driver.find_element_by_id('上传按钮id')
el.send_keys('文件路径+文件名')
6、怎么设计UI自动化测试用例
选取产品核心功能
流程简单
可重复执行
基本流测试用例(正向)
7、po设计模式
问题:页面元素的定位、操作,断言等会混合在一起,造成维护成本高,不适应变化
解决:
? ? ? ?PO设计思想,将操作细节封装,只暴露接口调用,减少代码维护更新
8、PO设计模式的六大原则
使用公共方法取代页面的功能
不暴露页面细节
不使用断言
方法结束,return到新的页面
只为页面的重要元素进行建模
不同的结果,返回不同的方法
10、软件六大质量特性
测试任何软件都应考虑软件的六大质量特性
功能、可靠性、易用性、效率性、可移植、可维护
也可以理解为功能、界面、性能、易用、兼容、安全6个角度对软件进行测试
可靠:在一定条件下,软件是否拥有正常的性能
效率:软件在一定条件下,使用了合适的时间与资源
可维护:软件是容易分析、更改、稳定、测试的
可移植:不同环境下,容易安装、替换、适应,不同环境都可以正常运行
11、如何测试一个水杯
需求和设计:查看使用说明书
功能:装水
界面:查看水杯外观
安全性:杯子本身是否有细菌或病毒,是否干净,是否有潜在安全隐患
可靠性:杯子从不同高度落下的损坏程度,能否复原
可移植性:杯子放在不同温度、环境、地理位置是否能正常使用
兼容性:杯子是否可以容纳其他液体
易用性:杯子有没有把手,符不符合用户习惯
12、测试一部电梯
功能:电梯内外按键是否正常运行,显示屏,电梯门感应功能
电梯在上下行过程中,其他楼层按键是否会停止
电梯满载场景,功能是否执行正确
界面:电梯外观,按键显示,显示屏显示,电梯内的报警装置的提示是否友好
性能:电梯的负载单人场景(基准)、多人场景(负载)一定人数长时间(稳定性)、
不断增加人数出现性能拐点(压力)
易用:电梯按键高度是否考虑老人、小孩,是否有垫子防滑、夏天空调、照明、通风、
是否照顾特殊人群
兼容性:不同的楼栋,电梯是否正常,不同的电压是否兼容
安全性:下坠时的紧急装置、挡门是否有警报、停电是否有应急电源
13、BS CS架构
BS:浏览器--服务器架构
CS:客户端--服务器架构
14、软件测试的含义
使用人工或者自动化的方式去测定软件的过程,验证软件是否符合需求
15、cookie和session的区别
存储位置:
????????cookie是浏览器来标识用户身份的,session是服务器来标识用户身份的
安全性:
????????cookie的安全程度不高,session安全程度高
性能影响:
????????session会在服务器上存放一定的时间,当访问增多,大量的session会影响服务器的性能
数据大小:
????????cookie保存的数据不能超过4k,浏览器限制一个站点最多保存20个cookie
????????session无限制
16、输出1-100的素数
list1 = []
for i in range(2, 100):
for j in range(2, i):
if (i % j == 0):
break
else:
list1.append(i)
print(list1)
17、数据库中表的连接方式
左连接:左表为主表,匹配表的不匹配部分不显示
有链接:右表为主表,匹配表的不匹配部分不显示
内连接:两个表都匹配的结果显示
外连接:连接中的不匹配数据显示
笛卡尔积:显示表的乘积
18、业务服务器CPU高怎么分析
主要查看tps和响应时间,tps高那么CPU高是正常,如果tps低可以是某些代码消耗了CPU
19、数据库服务器CPU高怎么分析
一般可能是SQL语句执行效率低有关,对数据库的慢查询进行监控(设置0.1s时间限制)
结合SQL语句的执行计划进行分析,可能是相关表没有索引,或者索引未生效
20、单元测试的覆盖
语句覆盖、判断覆盖、分支覆盖、条件覆盖、路径覆盖
21、自我评价在测试工作中的优势
沟通能力、文档编写、理解能力、学习能力、业务能力、知识储备
22、http中get和post的区别
get一般是从服务器获取数据,参数以查询字符串的形式写在URL地址?key1=value1&
长度短
post是提交数据给服务器,参数是放在请求body中,长度长
安全:post比get安全,基于传参方式对比
23、自动化测试如何准备测试数据依赖
采用接口去构造数据
初始化SQL
提前准备一套测试基础数据,进行备份,每次执行完之后把数据还原初始化
24、pytest框架中的钩子函数hook
有些功能,你想在之前或者之后做一些事,通常就会用钩子函数,通过回调函数
对想要的消息进行处理
pytest.configure(config):添加自定义标签
pytest.collection.modifyitems(items):在case后调用,对项目的顺序或者功能进行自定义
pytest.addoption(parser):为命令行添加自定义参数
25、pytest中的case如何收集、或者组装成测试用例集或者测试套件
默认使用test_.py、**test.py命令的文件,在文件内部查找test开头的类函数方法
使用自定义标签,pytest.marker
在命令行指定文件
参数-k? args? 模糊匹配case
26、什么是CI/CD
CI持续集成:多人协作,多个开发人员在同一项目中负责不同的模块和功能
为了让开发人员可以频繁的合并自己的代码到主干,系统会自动测试检查代码合并
是否会造成整个系统的影响,如果发现代码之间有冲突,CI可以更快的修复这些错误
CD持续交付:开发、测试、运维
持续交付中,每个代码合并的阶段,到生产就绪型构建版本的交付
都涉及测试自动化和代码发布自动化,流程结束运维团队可以快读的部署到生产环境
|