软件测试(吾之所学)
测试用例:
硬件测试用例点:界面、可用、易用、安全、破坏、恢复、兼容、性能、功能操作
软件测试用例点:由上至下,使用等价类、边界值、因果法、场景法、错误分析法
Linux:
连接linux的客户端xshell,需要的条件:ip 端口账号密码
主要作用查看日志辅助开发定位问题,查看ip、端口、进程,编辑文件
常用的命令:cat、more、tail、less查看日志 , netstat 查看端口号 , ps -ef查看进程
| grep 过滤 , chmod -R 权限 文件名 (赋权) , head -n 行数 查看前多少行
Tail 文件名| grep error 过滤出指定的文件报错 , kill -9 进程号 杀死进程
Ifconfig 查看ip,find 指定目录-name 关键字 模糊查询
数据库:
Mysql:关系型数据库
连接的客户端Navicat,需要条件:ip 端口账号密码 端口号:3306
主要作用在测试的时候通过增删改来造一些测试数据,查询一些接口的落库情况
特点:开源 不收费 运行速度快 稳定性差
Oracle:关系型数据库
连接的客户端pl sql ,需要条件:ip 端口账号密码 端口号:1521
主要作用在测试的时候通过增删改来造一些测试数据,查询一些接口的落库情况
特点:收费 不开源 运行速度慢 稳定性好
Redis:非关系型数据库
不了解
关系型数据库的优缺点:
优点:易于维护、使用方便、复杂操作
缺点:读写性能比较差、灵活度稍欠
非关系型数据库的优缺点:
优点:格式灵活、扩展性高、成本低
缺点:数据结构复杂、不提供sql支持、学习和使用的成本较高
数据库与功能测试是怎么结合的:
在功能测试的同时经常会直接用sql操作数据中的表,达到为测试提供数据
要做界面中的某些数据统计测试,由于需求说明书中不能明确的说明这些数据
预期结果就是通过sql语句统计到的数据
实际结果就是界面显示的数据
有些bug可以明确的测试到,但不能定位具体的模块,可以通过sql语句查询表中的数据具体的值,通过表中的数据就可以明确的定位bug所属模块
建库,删库sql
create database 库名
drop database 库名
建表,删表sql
create table 表名(列名 列属性 字节)
drop Table 表名
修改表名sql
rename table 旧表名 to 新表名
查看表结构sql
desc 表名
查看建表语句sql
show create table 表名
对行进行增删改的sql格式
insert into 表名(列名)values(值)
delete from 表名 where 条件
update 表名 set 改后内容 where 条件
对列进行增删改的sql格式
alter table 表名 Add 列名 列属性 字节
alter table 表名 drop 列名
alter table 表名 change 原列名 新列名 列属性 字节
查询的语句格式
select * from 表名 where 条件
聚合函数有哪些
max最大 min最小 count求个数 AVG平均 sum求和
分组
group by 列名
排序
order by 列名 默认正序 (asc 正序 desc倒序)
求多少行 eg:2-10行
select * from 表名 limit 1,9
多表连接方式有哪些
左连接 left join on 右连接right join on 内连接 inter join on 全连接 full join on
a,b表通过id 关联,查询全部的内连接语句
select * from a inner join b on where a.id =b.id
左连接右链接有什么区别
左连接以左边表为主 右边表没有的数据展示为null 右连接刚好相反
嵌套查询了解吗
子查询 有where 嵌套 把查询语句当做条件来用 from 嵌套 把查询语句形成一个表
视图的语句 以及有什么用
create view 视图名 AS 查询sql语句
简化操作,可以把经常使用的数据定义为视图
提高了安全性,用户只能对看得到数据进行操作
逻辑上的独立性,屏蔽了真实表的结构带来的影响
索引的语句 以及有什么用
create index 索引名 on 表名(列名)
加快查询的速度
去重语句
select distinct name from 表名
协议+接口:
1.说一下你知道的几个协议
tcp udp ip http/https dns
2.tcp协议是干嘛的
文本传输协议 规定数据在传输的过程中,存在缺失 服务器会要求重新发送
3.ip协议是干嘛的
标识一台机器对应的网络位置,把数据分割成一个一个的ip包进行传输,增加访问速度
4.http协议是干嘛的
超文本传输协议 规定可以传输什么类型的数据
5.udp协议是干嘛的
文本传输协议,数据在传输过程中,存在缺失 服务求不做判断
6.dns协议是干嘛的
域名解析协议 可以把一个完整的域名解析为ip地址
7.osi7层模型都有哪些
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
8.ip,tcp,http,dns都分别位于哪一层
ip位于网络层,tcp位于传输层,http和dns位于应用层
9.tcp和udp协议区别
udp是tcp的前身,数据在传输过程中,如果有缺失,tcp协议 会要求客户端重新发送 udp不能
10.介绍tcp协议3次握手,4次挥手
三次握手:客户端向服务器发送请求,进入代发状态,服务器做出响应,进入待接收状态,客户端和服务器双向进入确认状态,建立连接
四次挥手:客户端向服务器发送中断链接的请求,服务器发送ack确认包,客户端发送syn确认包,客户端和服务器双向确认断开链接
11.三次握手意义
保证数据传输的完整性
12.四次挥手意义
防止数据库服务器过载
13.http协议工作原理
客户端和服务器建立链接的时候,由客户端建立链接和发送http请求,然后服务器针对客户端的请求,对客户端做出响应,服务器不会主动与客户端建立链接,客户端和服务器随时可以中断链接
14.http协议特点
支持bs/cs模式 简单 快速 灵活 无状态 无连接
15.http和https协议区别
https比http更安全,https是加密型超文本传输协议
16.http和https协议端口号
http是8080 https是443
17.常见的http 的请求方法
post delete put get
18.get和post区别
get传输数据较小,受限制。post传输数据大,不受限制。post比get更安全,post把参数放在body体里面,get把参数放在url后面
19一个http请求包含的内容
请求头
请求方法
请求参数
20一个http响应包含的内容
响应状态码
响应头
响应报文
http版本号
21请求头有哪些
content-type cookie token
22响应头有哪些
content-type date
23响应报文正确的返回字段
正确的:success(死磕塞斯) true done 中文的成功字段
错误的:false error deny 中文的失败字段
24响应状态码举例,以及经验定位问题
200 接口是通的 400 客户端请求语法有问题 404 请求资源不存在
500服务器端无法正常接收请求 503 服务器当前不能处理该请求
4系列的一般是客户端问题是前端问题 5系列的一般是服务器问题是后端问题
25http版本号
1.0、1.1、2.0
26.一个url包含哪些
协议+域名+路径
协议+IP+端口号+路径
27.切环境
web我在上家公司测试环境和线上环境,url域名不一样,不同的域名进入到不同的环境
说法一:app,点击聊天快速点击10下,出来个弹窗,根据弹窗的环境选项,切不同的环境
说法二:app,手机上需要在安装一个切环境的软件 ,来实现切环境的操作
28.你用谷歌浏览器的f12干什么的,看哪些内容
一个看接口返回的状态码和返回报文来定位前后端问题
第二个看前端HTML代码用来书写xpth
29.你是怎么(用postman)做接口测试的
拿到接口文档后我会把参数组合成不同的情况来填写,之前做的主要是http协议,平常基本都是get和post的方法,当为get方法时 我会把参数放到url后面,发送请求 查看响应情况,有时需要一些响应头。
在post请求的测试时,操作思路也是一样的,只是参数放在了body体中,一般post类型的接口基本是一些提交,登录类型的。在填写完成后,关注的无非也是一些报文和状态,因为涉及到数据的存储,所以也会关注数据存储的信息是否正确
30.你是怎么(用jmeter)做接口测试的
拿到接口文档,看一下请求的路径和参数,在jmeter里面设置一个线程组,然后添加http请求,选择好对应的请求方法,填入正确的请求地址,如果有参数的话,也填在下面。填好后,添加一个监听器里的察看结果树,在里面可以看到
服务器返回的结果
31jmeter用到过哪些组件
http信息头管理器 断言 察看结果树 线程组 用户自定义变量 断言结果 http请求 json提取器
32.接口测试你主要关注哪些东西
首先关注接口文档是否完善,填入接口文档中提供的参数后进行测试时会关注一下是否有相应的返回报文以及对应的状态码,保证接口是通的,只有有相应的返回报文后,我才会关注报文格式的正确性,字段的正确性,以及字段位置是否错乱、缺失,当然也会关注一下后台数据库存储
33.后置脚本test有了解吗,主要是干啥的,会断言哪些东西,断言结果在哪看
涉及到关联接口,需要在上游接口后置脚本test里面写个脚本提取环境变量,用于下个接口的调用
后置脚本一般是用来写一些断言,会对响应的状态码、响应时间、返回的某一个字段、返回的格式 在test result里面看结果
jmeter添加一个组件看断言结果
34.涉及到关联接口(上下游接口依赖)你是怎么做的
在上游接口的后置脚本里将需要的数据提取出来设为变量,在下游接口需要用的时候直接调用变量就行了,在jmeter中添加一个json提取器把需要的数据提取出来,在下个接口调用就可以了
35.参数化类型接口(参数的值有多组数据要做)你是怎么做的
提前准备好文本数据,在runner中设置对应的运行次数,选择好脚本类型,就可以了,也可以配合一些返回断言一起用
36.环境变量是干什么的,怎么设置的
在遇到上下游接口的时候设置
环境变量方便以后在调取数据的直接使用
在environment中设置环境变量
在globals中设置全局变量
设置的时候一般是以键值对的形式来设置
37.对一个接口,不同组的数据做接口测试怎么做
提前准备好文本数据,在runner中设置对应的运行次数,选择好脚本类型,就可以了,也可以配合一些返回断言一起用
38.对多个接口,设置参数好之后,同时验证怎么执行
把多个接口放到同一个目录下,去批跑就可以了
39.接口测试主要关注什么格式的报文
一般我关注的格式是看接口文档的要求 一般是json格式的
40.什么是接口测试
模块之间数据能否正常交互正常传递的测试
41.为什么要做接口测试
现在版本更新越来越快,有很多功能测试无法覆盖的地方,接口测试可以覆盖功能测试无法测试的内容,接口测试关注代码的运行,而功能测试只关注页面元素的操作逻辑,接口测试可以使测试更全面
42.接口测试和功能测试时怎么结合的
接口测试可以保证数据的准确性,ui测试需要考虑界面展示以及相关操作逻辑正确性,接口测试可以测试到功能之外的一些内容,使测试更加的全面
44.定位前后端问题
1.页面展示,前端问题
2.状态码 4系列 5系列
3.状态码200看报文,报文为空,前端未传输,后端未响应
4.报文错误,缺失结合前端请求数量和响应返回判断
45.前端页面点击某个按钮没反应,如怎么样位问题
直接f12 看状态码报文
45charles用到过里面的哪些功能
抓取电脑和手机上的包,弱网、断点 filter过滤
46.弱网怎么做的
在charles里的proxy里的节流设置里面可以设置url和选择不同的网络运行速度,设置好之后,打开小乌龟的开关,就可以进行弱网测试了
47.断点怎么做的
选择好接口右键选择breakpoints,这样接口就被打上了断,再次请求的时候charles会把请求部分拦截,修改好或者不修改 点击发送 也可以把响应部分也拦截
48.设置断点有什么作用
修改前端请求部分或者后端响应部分,来查看相应的反应
49.怎么抓电脑上的包
打开Windows proxy就可以抓浏览器的包了,还可以设置域名和端口号来选择针对哪个域名进行抓包
50.怎么抓手机上的包
手机和电脑在同一个网络下,找到charles的ip和端口,在手机WiFi里设置好代理,一些加密的网站,需要下载证书 。设置好之后再去请求手机某个app上的请求时charles就会抓取到
51.怎么对url过滤
charles左下角有个filter,在里面输入url后就可以过滤出来
52.fidder和wireshark有了解吗
往charles上编
Fiddler是在windows上运行的程序,专门用来捕获HTTP,HTTPS的。
wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS
53.点击一个按钮没有反应怎么办
直接f12,点击按钮看状态码报文,及查看前后端哪几条
Python+html:
1.为什么要用python
python易学可靠且高效,拥有成熟的库与框架,跨平台且开源
2.python掌握到什么程度
python的数据类型 容器类型 条件判断 循环 定义函数 类的封装 异常的捕捉都是掌握的
3.python你怎么学的
在之前公司每周每月都有技术分享,我们老大有时也会给我讲,我自己也会在网上看资料、视频
4.前端语言,后端语言知道的有哪些
前端语言:(写页面展示和效果 你)
Html css js
后端语言: (写逻辑(对数据库的增删改查))
C C++ JAVA Python
5.注释是干嘛的,python有哪些注释方式
注释的代码是不会运行的 单行注释在每行的最前面加个#号就可以 多行注释 用6个引号注释 在代码上一行和最后下一行分别用3个引号
6.赋值
把一行代码赋值给一个变量
7.数据类型有哪些
int整数型 float小数型 str字符串型 bool型
8.布尔型有哪两种
正确的表示ture 和错误的表示 false
9.容器类型有哪些 ,以及每个之间的区别
容器类型:列表,元组,集合,字典
列表(list)
1.列表使用[]定义
2.列表是有序的,元素有下标
3.列表是可变的,可以进行增删改查的操作
集合(set)
1.集合使用{}定义,由于字典也是{},为了区分空集合和空字典,定义空集合时用set()函数
2.集合是无序的,没有下标,不能查指定元素
3.集合可变,可以增,删
4.集合中元素是不会重复的,自动去重
元组 (tuple)
1.元组用小括号()定义
2.元组是有序的,有下标,可以查
3.元组是不可变的,不能增 删 改
4.定义一个只有一个元素的元组,元素后面要加上逗号
字典 (dict)
1.字典是用{}定义
2、字典是可变的
3.字典是由键值对来组成
4.字典的键是唯一的(字典的键名不能重复)
10.哪个容器最安全,哪个容器是无序的
元组比较安全,它是只读的
集合是无序的
11.条件判断,格式,怎么写的
if 条件1:
代码块1
elif 条件2:
代码块2
。。。
else:
代码块
一个if 代表一个条件判断的结构,如果条件1满足,就会运行代码块1
如果条件1不满足,就会继续运行第二个elif 里面的条件,满足 运行代码2,不满足,继续往下走
如果所有的条件都不满足,走else 里面的代码块内容
一个条件判断里面,必须有一个if elif 和else 都可以没有,如果有的话,elif可以有多个,但是else只能有一个
12.缩进
一个tab键 四个空格
13.循环类型有哪些
while循环 和for循环
while 条件 :
循环体
代码块
满足条件,条件的值为true 就会运行循环体中的代码
直到条件为false 不会再运行循环体中的代码
14.死循环怎么定义的
使用while循环来定义 只要条件一直满足就会一直循环
15.for循环格式是什么,写法说出来
for i in 可迭代对象:
循环体
可迭代对象:可以用for循环可迭代对象 包括字符串 容器(列表)range()函数
16.可迭代对象有哪些
字符串、列表、字典、集合 range
17.continue和break都是什么意思
continue是条件达成会跳过当前这次的循环继续循环下次
break是条件达成会直接跳出循环 结束这个循环
18.列表生成式
list_1 = [i for i in range(1,100)]
19.定义函数的格式是什么,怎么写的
使用def来定义函数的
def 函数名()
函数体
return返回值
20.形参和实参有什么区别
形参是定义函数的时候所定义的参数,用来接收调用函数时所传的参数
实参是调用函数的时候所传的参数
21.return是干什么的,没有return会怎么样
return 后的内容,就是这个函数的返回值
讲调用的函数的操作赋值给一个变量,这个变量的值,就是函数的返回值
定义函数时,如果没有写return 相当于返回为None
22.定义函数有什么好处
减少代码的重复率,提高了代码的复用性
23.python中你常用到的内置函数有哪些
print int list str type def class if
24.类是用什么关键字进行封装的
class来封装一个类
25.怎么样封装一个类的
class 类名()
类属性
类方法
26.一个类包含哪些东西
类名、类属性、类方法
27.什么是继承
继承 :子类和父类,子类会拥有父类全部的类属性和类方法
28.什么是多态
多态:不同的对象调用相同的方法,得到的结果不同
29.什么是派生
派生,子类定义了一个父类里面没有的类方法
30.什么是重写
重写,子类重新定义了父类里面的方法
31.python中你知道的模块有哪些
os time datetime random math
32.怎么导入模块的
import 模块名
33.在写python代码时候,遇到过哪些异常
常见的错误类型
SyntaxError:语法错误
IndentationError:缩进错误
NameError:名字错误
IndexError:索引错误
KeyError:键错误
34.怎么对这些异常进行分析的,异常分析代码格式怎么写的
try:
错误代码块(有问题的代码)
except 错误类型1 :
代码块
except 错误类型2 :
代码块
else :
代码块
finally:
代码块
try 后面一般为错误代码块
如果try后无错误,运行else下面的代码块
无论有无报错,finally最后都会输出
try和except必须有,else和finally可有可无
35.前端的编程语言了解的有哪些
HTMl
36.html了解的有哪些
html的基本结构 常见的标签
37.单边标签和双边标签分别举点例子
单标签 :<标签名称 属性1="属性值" 属性X="属性值"> 单边标记只有开始标记,没有结束,单边标记通常没有内容,只是代表某个功能 br input
双标签:<标签名称 属性X="属性值" 属性XX="属性值">内容标签> div a head iframe
38.你知道的标签属性有哪些
标签 input div a br head
属性 id name class
39.selenium怎么设置断言?
try
assert 要进行断言的字段什么的
代码块
expect exception
代码块
40.测试了解html主要是为了做什么的
用来做自动化时定位元素
41.自动化的定位方式知道的有 哪些
ID name class link xpth 定位元素基本上这几种方法都可以定位的到
自动化:”
python中的框架说法
selenium框架和unitest框架
导入import time 时间模块
导入from selenium import webdriver方法库
导入from selenium.webdriver.common.by import By 方法
导入from selenium.webdriver.common.action(阿克申)_chains(才因斯) import ActionChains(阿克申才因斯)悬浮库
导入from selenium.webdriver.support(斯破儿特).ui import Select 下拉框方法
通过关键字驱动选择下拉框的内容
Select(web.find_element(By.定位方式))).select_by_visible(位死bou)_text("未缴全")
调用浏览器驱动并赋值给一个变量 下面的是谷歌的驱动Chrome
web = webdriver.Chrome()
使用webdriver里面的get方法加载一个网页
web.get(url)
进入嵌套页面
web.switch_to.frame(web.find_element(By.定位方式))
退出嵌套页面
web.switch_to.default_content()
鼠标悬停
Actionchains(web).move_to_element(web.find_element(By.定位方式)).perform()
切换窗口 获取当前窗口的索引
web.switch_to.window(web.window_handles[页面的索引从0开始的 -1是最新打开的])
当前页面截图
web.get_screenshot(斯k润稍特)_as_file(截图存放的地址路径和格式)
输入框输入
web.find_element(By.定位方式).send_keys(输入的内容)
按钮点击
web.find_element(By.定位方式).click()
清空输入框里的内容
web.find_element(By.定位方式).clear()
页面滑动 x,y页面的坐标
web.execute_script(window.scrollTo(x,y))
弹窗处理 switch_to.alert 这个是获取弹窗,accept() 为点击确定
web.switch_to.alert.accept()
获取页面的url
web.current_url
获取标题
web.title
获取页面上的某一段文字
web.find_element(By.定位方式).text
查看当前所在的路径需要用到os模块
导入os模块
import os
查看当前所在的路径
os.getcwd()
关闭当前的页面
web.close()
退出驱动关闭所有的窗口
web.quit()
robotframework框架的说法
先导入selenium2library方法库
打开一个浏览器
open browser url chrome(这里代表用的哪个浏览器)
窗口最大化
maximize browser window
进入嵌套
select frame 嵌套页面定位的元素如 id=xxxxxxx
退出嵌套
unselect frame
输入内容
input text 定位的元素 输入的内容
点击
click element 定位的元素
获取标题 在这个里面获取的标题需要定义为变量
${变量名} get title
切换窗口 先获取当前所有的窗口会形成一串下标在通过下标来切换
${获取的下标名字} get window handles
switch window ${获取的下标名字}
直接切换到最新的窗口
switch window new
滑动页面
Execute Javascript document.documentElement.scrollTop=2000
性能:
性能测试---> 后端性能(接口工具--jmeter)
1.压力测试 -----> 一般指大量用户在某一刻访问服务器。服务器是否可以正常使用,从体现对应压力情况,此时通过工具来做的测试叫做压力测试。
2.稳定性测试 ----> 一般指用户在某一段时间内访问服务器。服务器是否可以正常使用,从而体现出对应的稳定性情况,此时通过工具来做的测试叫做稳定性测试。
3.负载测试--->一般是指在超高压(一般把并发数往上增高20-30左右)下,大量用户访问服务器,服务器是否可以正常使用。
性能测试聚合报告关注指标:
1.平均响应时间(average) 5秒
2.90%响应时间 5秒
3.95%响应时间
4.error%(接口的错误率) 不超1%
5.throughput(吞吐量) 吞吐量 = 并发数(一般是一个定量的值)/平均响应时间
6.cpu使用率(top) 80%一下
7.mem使用率(top) 80%一下
8.带宽(一般是固定的)
9.磁盘i/o
Qps: 每秒钟能承担的请求数量
TPS: 每秒钟能处理的事务数量
一般来说一个事务是包含多个请求的
如果是对一个查询接口(单场景)压测,且这个接口内部不会再去请求其它接口,那么tps=qps,否则,tps≠qps
如果是容量场景,假设n个接口都是查询接口,且这个接口内部不会再去请求其它接口,qps=n*tps
jmeter聚合报告中,Throughput是用来衡量请求的吞吐量,也就是tps,tps=样本数/运行时间
性能测试五部分:
1.性能测试计划规划(性能测试参与人员,个人员事务规划,性能测试需求收集,测试执行,报告收集,性能调优时间的规划)
2.性能测试需求收集
(
1.性能测试的并发数(压力测试的并发数,稳定性测试的并发数)
2.收集需要被测试的常规功能以及重要功能对应的业务接口
3.一般客户要求的平均响应时间,90%的响应时间是多少
4.客户要求的接口业务的错误是最大不能超过多少
5.客户要求的接口业务吞吐量(QPS)是多少(一般如果是专业客户可以提,不是专业客户可以忽略,因为有响应时间和并发数就可以算出来)
6.客户要求的cpu的使用率不能超过多少
7.客户要求的mem的使用率不能超过多少
)
3.性能测试执行
一般是先做性能测试,然后做稳定性测试;
以中小型公司举例子(并发数要求到最高达到250/s),在做压力测试时,一般在150/s以内的性能测试,可以进行逐步施压,可以在100,然后加压20-30之间,达到150/s以后,我再进行逐步施压,进行每次加压10-15之间,直到达到250/s的标准,然后收集每个阶段的性能测试聚合报告中的数据;(一般每一种并发的数据收集,都会对每种并发,做三次左右求对应数据的平均数。)(一般压力测试会测试几种类型的时间段,10s,30s,60s,10min,30min,60min,12小时。)
以中小型公司举例子(并发数要求到最高达到250/s*0.8),在做稳定性测试时,一般在150/s以内的性能测试,可以进行逐步施压,可以在100,然后加压20-30之间,达到150/s以后,我再进行逐步施压,进行每次加压10-15之间,直到达到250/s*0.8的标准,然后收集每个阶段的性能测试聚合报告中的数据;(一般每一种并发的数据收集,都会对每种并发,做三次左右求对应数据的平均数。)(一般稳定性测试会测试几种类型的时间段,60s,30min,12小时,24小时,1周。)
就拿我上家公司来说吧(并发数要求到最高达到25000/s的请求数量),在做压力测试时,我会在15000/s开始性能测试,可以进行逐步施压,然后加压400-500之间,达到20000/s以后,我再进行逐步施压,进行每次加压100-200之间,直到达到25000/s的标准,然后收集每个阶段的性能测试聚合报告中的数据;((逐步往上加的原因是因为防止服务器挂掉)一般每一种并发的数据收集,都会对每种并发,做三次左右求对应数据的平均数。)(一般压力测试会测试几种类型的时间段,10s,30s,60s,10min,30min,60min,12小时。)
以中小型公司举例子(并发数要求到最高达到25000/s*0.8),在做稳定性测试时,一般在15000/s以内的性能测试,可以进行逐步施压,可以在10000,然后加压2000-3000之间,达到15000/s以后,我再进行逐步施压,进行每次加压1000-1500之间,直到达到250/s*0.8的标准,然后收集每个阶段的性能测试聚合报告中的数据;(一般每一种并发的数据收集,都会对每种并发,做三次左右求对应数据的平均数。)(一般稳定性测试会测试几种类型的时间段,60s,30min,12小时,24小时,1周。)
以大型公司举例子(并发数要求到最高达到300/s-500/s(400/s)),在做压力测试时,一般在300/s以内的性能测试,可以进行逐步施压,可以在200,然后加压20-30之间,达到300/s以后,我再进行逐步施压,进行每次加压10-15之间,直到达到400/s的标准,然后收集每个阶段的性能测试聚合报告中的数据;(一般每一种并发的数据收集,都会对每种并发,做三次左右求对应数据的平均数。)(一般压力测试会测试几种类型的时间段,10s,30s,60s,10min,30min,60min,12小时,24小时。)
以大型公司举例子(并发数要求到最高达到400/s*0.8),在做稳定性测试时,一般在240/s以内的性能测试,可以进行逐步施压,可以在160,然后加压20-30之间,达到240/s以后,我再进行逐步施压,进行每次加压10-15之间,直到达到400/s*0.8的标准,然后收集每个阶段的性能测试聚合报告中的数据;(一般每一种并发的数据收集,都会对每种并发,做三次左右求对应数据的平均数。)(一稳定性测试会测试几种类型的时间段,60s,30min,12小时,24小时,1周,30天。)
以大型公司举例子(并发数要求到最高达到400/s*1.2),在做负载测试时,一般可以在压力测试的顶峰并发数据进行逐步加压,一般会逐步加压,10/s,然后到最后20个最有会逐步加压5/s一直到负载的顶峰。(一般每一种并发的数据收集,都会对每种并发,做三次左右求对应数据的平均数。)(一般压力测试会测试几种类型的时间段,10s,30s,60s,10min,30min。)
4.性能测试数据收集和性能测试报告编写
一般每一种并发的数据收集,都会对每种并发,做三次左右求对应数据的平均数
5.性能测试调优
硬件调优 (cpu 内存 带宽)
软件调优 1.优化后端代码 2.优化数据库的sql(尽可能使用单表进行查询,少使用嵌套和关联) 3.(尽量保持表的专一性) 4.(对安全性要求不太高的表少使用同步锁机制)
架构调优
服务器架构:
C/s b/s架构
linux+mysql/oracle+jdk
Linux+mysql/oracle +jdk+应用服务器(tomcat)/web服务器(tomcat)
Linux+mysql/oracle +jdk+应用服务器(tomcat)/web服务器(tomcat)+缓存服务器(redis)
(1)、Lable:Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值;
(2)、#Samples:表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100;【我的是用户有100,只迭代一次,因此也是100】
(3)、Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间;
(4)、Median:中位数,也就是 50% 用户的响应时间;
(5)、90% Line ~ 99% Line:90% ~99%用户的响应时间;
(6)、Min:最小响应时间;
(7)、Maximum:最大响应时间;
(8)、Error%:本次测试中出现的错误率,即 错误的请求的数量/请求的总数;
(9)、Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction ;
(10)、Received KB/src:每秒从服务器端接收到的数据量;
(1)1、Sent KB/src:每秒从客户端发送的请求的数量。
兼容:
App应用软件包可以理解为一个容器,原生的容器,H5镶嵌在原生容器里面
原生Android 和 iOS 都要各自开发,同样的逻辑、界面要写两套所以需要两个原生开发,分别独立完成对应的,测试需要安装包(每次更改都要开发打新的包,下载校验),开发周期长,更新迭代缓慢,上架时需要等待官方审核通过,上线后需要通知用户升级,更新(强更,更新每个版本要验证)
H5的话Android 和 iOS一套代码可实现,想要新增功能测试完毕后可直接上线,不需要通知用户升级
app开发价格:针对安卓(Android)、苹果(IOS)等移动端操作系统,原生app需要全部独立的开发,所以开发速度慢。
维护更新:app原生开发后期有相应的改动,如果需要用户体验新的功能,那么用户必须得升级app才行;
而非原生的H5则只用更新服务器上的代码即可。
原生前端独立的开发平台
Android 系统上的应用是利用 Java、Android studio 来进行开发
iOS 系统是上的应用则是利用 Objective-C 和 Xcode 来进行开发的。
H5 开发就是值是利用 Web 技术(HTML5、JavaScript、CSS)进行的 App 开发
一个需求设计开发配置情况:
原生前端2个(分别做Android+ios)
H5前端1个(独自Android+ios)
后端1个或者多个
测试1个或者多个
需求埋点
记录用户行为数据,方便产品结合bi报表分析用户行为
如果有问题,可以通过埋点初步判断问题
收集用户数据,为了后面新上功做收集铺垫
原生需求埋点和H5需求埋点区别
原生的埋点需要charles分别连接Android+ios依次看,两个开发分别埋的
H5埋点因为是同一开发,同一套代码,仅看其一即可
发版和上线情况
app发版每2周(合并需求),或者1周(小版本)周四一个版本,发的就是原生合的总包,到app市场,周4测试回归--->周5合包审核(1-2天)--->上线各大手机应用市场(市场包)
H5的发版灵活,不需要容器审核限制,发到线上即可实时同步生效
会开灰度(后端控制灰度,线上白名单等)
0% 1% 5% 10 20 50 100
兼容和每周回归发版前相关
iOS和Android系统
iOS的话考虑不同系统的版本 高版本iOS10,低版本5.0
Android的考虑不同类型的手机(小米,oppo, vivo,华为(鸿蒙))
不同类型手机的版本号高低版本,高本版安卓8.0以上,低版本安卓5.0
b端 c端
b端指的是企业或商家Business;顾名思义就是面向商家、企业级、业务部门提供的服务产品,是间接服务于用户的。
c端指的是消费者、个人用户Consumer;顾名思义就是面向个人用户提供服务的产品,是直接服务于用户的。
B/s c/s架构
CS = Client - Server = 客户端 - 服务器。
要求有特定的客户端。比如QQ就是c/s模式,电脑桌面上的qq,手机上的QQ。
BS = Browser - Server = 浏览器 - 服务器。
Web浏览器
一、C/S
1.优点:
(1)安全性:需要其特定的客户端,所以面向对象比较确定,将所进行的信息安全处于一个可控的范围
(2)个性化:有特定的客户端,所以可以在较大程度上满足客户的个性化要求
(3)稳定性:结构比较稳定,有较强的事务处理能力,可以实现较复杂的业务逻辑
2.缺点:
(1)特定的客户端:对pc机有一定的要求,如:操作系统,并且它就像订在墙上的石头桌子,不可再利用
(2)迭代时间限制:固定的迭代时间,每次迭代需要用户升级
二、B/S
1.优点:
(1)范围:面向的范围更广
(2)维护性:维护简单,更新页面,即可实现面向所有用户的更新,迭代方便
(3)共享性:通过浏览器访问,共享性强
2.缺点:
(1)安全性:面向的范围广,所以安全性比较低
(2)个性化:因为面型的范围广,所以它是一种公共审美,无法满足个性化的需求
http协议特点,支持B/s c/s模式
兼容测试win,web端和app端(原生+H5)
Win端我会考虑电脑不同的系统比如:window7,8,10,11
X86 ,和X64 32位和64位的系统兼容
web端不同浏览器比如说:谷歌,360,火狐等
同时谷歌浏览器的版本谷歌104.多的版本,低版本50多的
app的话我会考虑iOS和Android系统
iOS的话考虑不同系统的版本 高版本iOS10,低版本5.0
Android的考虑不同类型的手机(小米,oppo, vivo,华为(鸿蒙))
不同类型手机的版本号高低版本,高本版安卓8.0以上,低版本安卓5.0
chrome低版本下载,针对b/s架构的web浏览器兼容
下载低版本,卸载高版本,安装低版本
https://mydown.yesky.com/pcsoft/416318/versions/
win系统兼容 主要是c/s架构的客户端兼容
1.先下载vmware
http://www.uzzf.com/soft/701902.html
官方镜像系统iso下载(迅雷)
https://msdn.itellyou.cn/
3.安装注意细节,配置VMware和装镜像系统
https://blog.csdn.net/weixin_43465312/article/details/92662519
非技术题:
app和web测试的区别
功能上差不多,app考虑的测试点比web多一些,像安装、中断、覆盖、弱网、卸载、兼容等,主要是兼容方面的,因为不同的手机品牌、不同的手机系统、全面屏、曲面屏等 web端我会考虑不同浏览器不同版本比如说:谷歌,360,百度,火狐等
app和H5区别
app占用本地内存、需要手动升级 h5不占用本地内存 便于推广分享
Android和iOS区别
运行机制不同Android是虚拟机运行机制、ios是沙盒运行机制
后台制度也不同ios是任何程序都不能才后台运行、Android是任何程序都能在后台运行,直到没有内存
Ios的ui指令权限最高 Android数据处理指令权限最高
win和web区别
win需要下载安装 web不用
b/s,c/s区别
b/s是基于浏览器来实现的,便于分享,不需要手动更新,不占用本地内存
c/s是手机或者电脑端的软件,占用本地内存、需要手动更新
b端,c端区别
C端通常为消费者、个人终端用户使用的客户端。
B端通常为企业内部或商家使用的系统或平台。
怎么定位问题的
查看页面的展示、看返回的状态码是4系列的还是5系列的,4系列一般是前端问题,5系列一般是服务器问题,查看报文,看是前端未传输还是后端未响应,查看日志发给对应的开发
偶现的bug 怎么处理 怎么复现
先记录下来,配合开发找复现路径,实在复现不了,就先放在一边。看两个版本内还会不会出现
怎么测试的接口
拿到接口文档后,看下文档是否完善,在之前公司是用的postman做的接口,之前公司主要做的http协议,常用的请求方法get和post,根据接口文档正常的填写url地址,选择好请求方法,get方法把参数放在url地址后,post把参数放在body体里,在后置脚本添加上断言,填写好后发送
用的什么框架做自动化的流程
我用的是selenium和unitest框架 用的python语言 pycharm编辑器 在pycharm里面导入 time模块 和webdriver方法 By方法 select下拉框选择 和ActionChains悬浮方法 之后初始化一个浏览器 对页面上的元素从上至下来操作
项目组有多少人
我们项目组有3个测试 13个开发 还有2个ui 一个运维 一个产品经理 差不多20来个人
让你自己独立负责项目可以吗
这个可以的,我会先对以往的需求、用例进行仔细的分析很快就能上手
评审需求你是做什么事的规则不合理怎么办
站在用户的角度来分析需求规则、有不合理的规则及时提出协商
和开发有分歧的话你会怎么办
跟开发讲解根据需求文档规则来协商解决,找产品交流
期望薪资是多少
期望比之前公司高些,之前公司是税后12k
项目组有多少人
我们项目组有3个测试 13个开发 还有2个ui 一个运维 一个产品经理 差不多20来个人
印象最深刻的项目
之前的一个项目,有很多的嵌套中的嵌套页面,在定位元素的时候不好定位,让我记忆深刻
对测试行业的理解
使每个软件产品更加的完善,增加用户使用产品时的信心
做测试需要那些技能
学习能力要强、沟通能力要好、有团队精神、风险防范意识,过硬的技术知识
你们公司加班多不多
我们上线的时候会加班,项目比较急的时候也会加班
项目组有多少人测试组有多少人有没有测试组长测试计划内容
项目组有20来个人、测试组加上我一共3个人、一个测试组长
测试计划一般都是我们组长来写的,也就是给我们分配下模块、测试的时间、用例的编写、需求的分析等
熟悉测试管理吗
熟悉,之前公司来新人的时候,不会的都是我带的,也会给新人讲解自动化方面的知识
测试用例最关键的地方
整理出测试点、转化用例时全面覆盖
需求文档不完善你会怎么办
立即找相关人员协商解决
说一下测试用例的方法说一下场景法是什么等价类和边界值你明白什么意思吗
场景法、等价类、边界值、错误分析法、因果图
场景法就是站在用户的角度模拟不同的场景来设计测试用例,
等价类分为有效等价类和无效等价类,比如一个输入框只可以输入数字、有效等价类就输入数字看是否可以正常输入,无效等价类就是输入字符、英文看是否可以输入
边界值的话比如一个手机号输入框只能输入11位数字 我会测试10位11位12位来编写用例
在测试中有没有自己总结了一些方法这方面的自己的经验
要细心认真,做事有耐心。对业务要有足够的了解
描述一下你工作的经历和工作的成果
在之前的做的项目中还是不可以的,在工作中提交过很多bug,预防了很多风险
你是毕业就开始做的软件测试工作的吗
刚毕业的时候自己和朋友开了个小店后来不景气倒闭了,自己学的也是计算机专业的就回来做测试了
挑战性最大的项目是怎么去克服的
合理安排自己的时间,有耐心的去测试
会写自动化简单的脚本吗 就比如自动化登录注册这方面的
首先import time 导入时间模块
From selenium import webdriver导入webdriver方法
From selenium.webdriver.common.by import By 方法
把webdriver.Chrome()赋值一个变量web
初始化一个浏览器 web.get(url)
等待几秒time.sleep()
在把窗口最大化web.maximize_window
等待几秒time.sleep()
在输入账号web.find_element(By.定位方式).send_keys(输入的内容)
等待几秒time.sleep()
在输入密码web.find_element(By.定位方式).send_keys(输入的内容)
等待几秒time.sleep()
之后点击登录按钮web.find_element(By.定位方式).click()
等待几秒time.sleep()
最后关闭浏览器web.close()
你平时的工作是比较主动还是被动的
这个还是比较主动的,自己也想多学些技术想在技术方面有更大的提升
你们的测试团队有多少人
算上我就3个人
你们平时是怎么做测试工作的就是你们测试的流程
我们老大把任务分下来后,我会先对需求进行一个分析,之后编写用例,用例写完后会申请评审,通过后执行测试,遇到问题了就提bug,之前公司的bug管理工具用的是禅道,把bug所属的模块名称,处理人,抄送人,bug的描述,操作步骤等填写提交,直到用例全部执行完,bug全部解决,最后写一份测试报告。
你们项目的发布是局部提交的还是全部发版的
关联性不强的是局部提交的,关联性强的都是等全部开发完后一起提交的
你们回归测试都是做什么的
把以前的老功能用自动化跑一下
你们测试用例的内容都要写什么呢
模块名称、用例编号、用例标题、前置条件、操作步骤、预期结果等
你们团队做的主要测试是黑盒测试还是接口测试
功能、接口我们都做的
测试的主要时期 是bs架构还是cs架构
我之前的项目是web端的是bs架构 app端的是cs架构
如果做bs架构是怎么开始进行测试的
先分析需求,之后编写用例并进行评审,在执行用例,查看页面的展示,基础功能是否可以正常操作,主功能主流程的可操作性,以及弱网、中断、兼容方面的
那如果app测试的话你觉得应该怎么测试呢
通过adb shell monkey这个命令来模拟用户点击随机的操作来测试、用真机来测试弱网、中断、兼容
性能测试你有做过吗
之前公司用的jmeter做的性能,通过添加多个线程组数量、设置循环时间、循环次数,来做的 在聚合报告里查看结果,通过率在百分之90以上,错误率在百分之1,qps吞吐量,响应时间5秒,cpu、io读写率在百分之80以下
你有带测试团队的经验吗
有带过的,之前带过2.3个测试
你对未来的职业规划是什么
在自己做好本职的工作的前提下,在技术这方面有更大的提升
你还有什么问题要问我吗
之前对咱们公司只是简单的了解了下,方便说下咱们公司现在具体做什么业务的吗?如果我能来贵公司会负责哪方面的业务,咱们公司的上下班时间,加班的话有没有调休
自我介绍
面试官你好,我叫张艳伟,我已经从事软件测试工作5年了,像测试的基本功测试用例的编写,是经常编写的,我都是通过等价类、边界值、场景法、错误分析法、因果图来编写的测试用例,在测试中遇到bug后会提交到bug管理系统,之前公司用的bug管理系统是禅道,我会把bug单详细的填写提交,后续也会对bug跟踪和复盘,对于linux是经常用的,像cat、more、tail、less来查看日志辅助开发定位问题,还有数据库,之前公司用的是mysql这个数据库,在做接口测试的时候通过增删改来造一些测试数据、或者通过查询来查看一些接口的落库情况,对于接口测试,在之前公司是用的postman和jmeter来做的,拿到接口文档后,根据文档填写,然后发送请求。有时候也会用charles和Chrome的f12来抓取一些请求,也会用到charles的弱网和断点功能来测试,之前公司项目有大量的回归,对于自动化方面也是了解的,我用的是python语言,pycharm编辑器,selenium和unitest框架。对于python中数据类型、容器类型、条件判断、循环、类的封装、异常分析都是很熟悉,robotframework框架我也是了解的用的ride编辑器,通过selenium2library中的关键字编写的脚本。还有app自动化方面的也是了解的,我用的是appium框架,ride编辑器,来编写脚本的,像常用的adb logcat查看日志 和adb shell monkey 来模拟用户随机操作都是了解的,以上就是我的自我介绍。
自动化到什么程度
我掌握的有selenium和unitest框架和robotframework框架以及appium框架
自动化的话你是怎么定位元素的
通过ID、name、class、link、xpth来定位元素的
你使用的什么框架
Selenium和unitest框架 app使用的appium框架
你设计自动化的模式
Po模式,我会把原生的方法放到一个页面、元素以及操作放在一个页面,用列放在一个页面
如果给你登录接口的话你怎么测试的
我会先查看接口文档,把文档url参数组合成不同的情况,比如一项或多项不填或者填写错误,这样来测试
登录界面你是怎么测试的
先查看页面的展示,页面输入框、按钮是否可以正常输入点击、账号输入框输入不同字符、汉字、数字是否可以输入,密码输入框是否是密文显示、是否限制位数、输入正确的账号密码点击登录是否可以登录、账号密码一项或多项填写错误或不填写点击登录是否可以登录,未注册的账号点击登录是否会提示、注销的账号是否还可以登录
等这样测试的
app测试的话如果崩溃你怎么测试的
首先我会查看是不是开的app过多,或者直接通过adb命令来查看
你认为是bug开发不认为是bug怎么处理
我会跟他讲解协商,确定是bug的话 我会让他修改,他不认我会找产品交流
Session
一个聊天对话的内容一般session都是出现在聊天上面的
自动化你用的什么字符类型
str字符串 小数型
你之前的测试方法都接触过那些
Get、post、put、delete
作为一个测试主要测试软件的哪个方面
主功能以及主流程
测试的主要目标是什么
尽可能的找出bug,保证产品的质量
软件为什么会有bug
需求不明确,测试不细心,开发水平低
一个模块昨天还是好的今天就不能使用了
线下的话我会进行复测,多测试几遍看是不是偶然的,不是偶然的话就找到复现路径发给开发解决
你已经测试过了 已经保证没有bug了 但是过了一段时间他出现了bug你怎么避免
先记录,找它的复现路径,能复现的话就发给开发解决,不能复现的话做好跟踪,看是不是偶然出现的
测试中一般会有两种常用的方法 是哪两种黑盒测试和白盒测试的区别
Get和post 黑盒测试只关注输出和输入关系 白盒测试要关注内部代码的运行
一个软件已经开发完了 达到什么标准才能交付给客户
用例执行完毕、bug全部修复、完成验收
一个模块已经开发好了 你怎么去评估一个模块的工作量
用例的条数、bug的数量
接口一般都有哪几种类型的 针对使用场景的
Get查 post改put增delete删
理论上解释一下接口
每个url都是一个接口
接口是用来干什么的 为什么要进行测试
接口是用来连接数据的,接口测试可以使测试更全面,功能测试有地方覆盖不了。有的时候前端还没开发好,而后端已经开发完成了就需要先做接口测试
常用的软件 阿帕奇jmeter
Jmeter在上家公司用来做些接口和性能的
从你的角度去理解开发和测试
开发是生产一个软件、测试是使这个软件更加的完善,保证软件的质量
web测试一般会怎么做兼容测试呢
使用不同的系统、不同的浏览器、不同的浏览器版本
数据库查询最近刚刚生成的订单 排序
Select 查询内容from 表名order by 列名
查某个用户的订单 where限制条件
Select 查询内容 from 表名where 限制条件
postman关联性接口怎么做的
上下游接口的话,我会在上游接口的后置脚本里写一个tests脚本将需要的数据提取出来,设为变量。在下游接口需要的时候直接调用就可以了
测试出bug提交到禅道的内容
所属的模块,bug的级别、处理人、抄送人、详细描述、操作步骤等
订单管理的模块
有全部的订单信息,已支付的,未支付的,已发货的,未发货的,退款的等
你拿到一个网站你是应该怎么去测试呢
正常的填写url地址参数选择好请求方法 添加上断言 发送即可
当一个web端白屏你会怎么考虑
web: 1.先再次复现,看看是偶现还是稳定复现
2.偶现:换个浏览器再看下还有没有问题
必现:F12查看接口返回报文状态码,一般为后端问题
app: 1.先再次复现,看看是偶现还是稳定复现
2.偶现:换个手机再看下还有没有问题
必现:adb logcat看下报错日志,或者charles抓包看下
jmeter你是用来做什么的
做接口和性能的
linux怎么查看日志
tail 来查看动态日志 less来查看静态日志
python怎么发送请求
request.get或者reqyest.Request来发送一个请求
对测试开发的理解
测试为了减轻工作量自己开发出来的测试工具或者测试平台
自己如何准备测试数据的
自己在数据库里通过增删改来造一些数据
单元测试有没有参与过(白盒测试)
在之前公司都是开发自己测试的
需求评审的时候,你主要负责什么
分析需求有没有不合理的情况,站在用户的角度去考虑,如果存在歧义及时的协商解决
为什么选择一个非学信网的学校(民教网学历)
当时没想那么多,看分数够了就选了个
你选择公司的标准是什么
是不是能够长期稳定,环境舒适
之前负责项目或者产品的日活跃量是多少
具体的没统计过,这是产品的事情,大概知道些有20.30万的活跃吧
平时都有什么爱好
打打游戏、看一些技术方面的视频,逛下论坛
之前的五险一金是怎么缴纳的
在之前公司是按当地的最低标准来缴纳的有5.600块钱吧
薪资达不到你的预期怎么考虑的
薪资只是一方面,我会考虑公司待遇福利方面的
在上一家公司学到了什么
技术方面有了很大的提升,沟通方面也有很大的提高
你在上家公司自己的技术是如何提升的,怎么计划提高自己的技术
之前公司每周每月都有技术分享,我们老大有时间也会给我讲解,自己平时也看些视频和博客。计划多学习和参与分享来提高自己的技术方面
如何和开发,产品处理好关系
工作中对事不对人吧以工作为主
在测试过程中比较耗费的最大精力是什么
这个每个阶段都不一样,需求评审时,对需求的分析,之后用例的编写,bug的跟踪
目前是离职状态还是在职状态
目前是离职的状态
你自己负责的模块出现了问题时怎么解决的
先配合开发解决问题,之后自己做好总结和反思
预发环境和线上环境有什么区别(数据库,同库不同代码)
没有太大的区别,只是代码不同
验收环节有吗,怎么做的
我们是有验收的,由我来配合产品进行的验收,把产品的主功能,主流程给他演示一遍
目前有在学哪些技能提高自己吗,以及自己未来3年的规划
目前在学自动化方面的技能,期望这3年能稳定的发展在技术方面有更大的提升
说一下你自己应聘这个职位的优势/我为什么要录用你?
我个人在工作中还是比较细心认真的,平时也挺爱学习的,也有良好的团队合作精神,抗压力也比较强
能接受出差吗
这个是可以的,咱们公司出差的待遇怎么样
自己有写过什么脚本吗,结合上家公司说
有写过,web端的功能自动化脚本
postman用的多吗,结合上家公司说
也是经常用的,之前公司每个版本有新增的接口和老功能有大的变动的时候会使用postman来做接口测试
平时抓包用的多吗,结合上家公司说
也是经常用的之前公司用的是charles和Chrome的f12来抓取一些请求,也会用到charles的弱网和断点功能,在proxy里的节流设置填写好url 选择不同的网络情况,之后打开小乌龟就可以弱网测试了,选定好接口右键选择breakpoints就给这个接口打上断点了,之后发送请求charles会帮我们拦截,可以修改前端请求和后端的响应,来查看前端页面的展示和后端的响应情况。
部署环境是谁弄的,结合上家公司说
这个是开发和运维弄的,我自己电脑上的测试环境是我自己安装的
开发的周期会有多长
这个看项目的大小了
如果让你自己独立负责一个项目,你从哪里开始入手
我会先分析以往的需求和用例,熟悉了以前的业务后入手
客户在使用过程中遇到一个问题,反馈到群里
根据需求文档确认客户的问题是不是bug,看是不是客户的误操作导致的,如果确定是bug的话,找到复现路径,发给开发让开发解决
我们公司是你面试的第几家
这是我面试的第二家公司
拿到offer后,多久能入职
可以尽快的入职的,一周内,咱们公司附近有租房的吗或者中介的电话
九九六,大小周休可以接受吗
咱们加班的加班费是怎么算的
性能测试主要关注哪些东西
响应时间、错误率、qps吞吐量、内存使用率、磁盘读写率
app出现闪退,你会怎么考虑,怎么排查问题
首先会看是不是开的app过多,通过adb命令来排查问题
功能测试用例需要详细到什么程度才算合格的
用例全方面的覆盖、关注有关联的测试点
有没有写过用户操作手册
配合过产品写过、写一些软件怎么操作使用的
兼容性测试你是怎么测的
Web端的话就使用不同的浏览器、不同的电脑、同浏览器的不同版本、
App端的话使用不同品牌的手机、同品牌的手机不同的系统、和云测平台
你还有什么想问我的嘛
公司的福利待遇怎么样,上下班的时间,加班有没有调休
自动化的定位方式有哪些,你自己更倾向于用哪一种,怎么定位
ID、name、class、link、xpth 我倾向于有id就用id 没id就xpth
Bug的修改时间是谁来定的
开发自己来安排的时间,如果长时间没改的话我会发邮件去催他
42.做接口测试时候遇到过哪些问题
请求格式填写错误
43.如果你有一个 5L 的水桶和一个 3L 的水桶,请问您应该如何得到一个 4L 的水
先把3l的桶装满在倒入5l的桶中,在把3l的桶装满倒入5l的桶中,这样3l的桶里会有1l的水,把5l的桶倒掉,把3l桶中的水倒入5l桶中,在把3l的桶装满倒入5l的桶中
3倒5或者5倒3
复现时候是怎么定位问题的?
查看页面展示,查看返回的状态码看是4系列的还是5系列的,4系列一般是前端问题5系列一般是后端问题,状态码是200的话,看返回的报文,是前端未传输还是后端未响应,找对应的报错日志
你们上家公司都有什么评审,都是怎么评审的?
之前公司的需求评审是测试开发产品一起来评审的,有歧义的地方及时提出协商解决
用例的话我们分组外和组内的,组外就喊上开发、产品一起来评审,看有没有遗漏的测试点,组内的话就是我们几个测试的互评查漏补缺吗
验收是谁来验收的,怎么验收的,在哪个环境验收的,怎么样的结果为验收完毕?
之前公司是产品来验收的,我把产品的主功能、主流程给产品演示一遍,是在预发布环境进行验收的,没有bug,在规定时间内
你们上线的流程是怎么样的?
产品会定一个方向整理出需求文档,我们会对需求进行评审,在评审中存在歧义的话就提出来协商解决,之后开发进行开发,我会分析需求编写测试用例并进行用例评审,评审通过后,开始执行用例,遇到问题就提bug,开发修改问题,我进行复测,直到所有的用例执行完毕,bug全部修复,进行验收测试,验收完成后我会编写份测试报告提交,之后版本发布
5.上线以后测试还需要做什么?
做线上的测试,看下有没有bug
1.为什么要进行抓包测试
定位前后端问题,把问题指派给对应开发
没有接口文档,自己抓
做一些功能页面无法实现的case
埋点
2.之前有测过登录页面吗,
常见的bug 登录页面ui配图和需求不一致
账号位数限制密码没密文显示
登录超时,后端服务器问题
3.测试过程中遇到了困难怎么办
分问题情况
需求不理解,刚开始介入
测试数据难造
需求逻辑复杂,测试点多
沟通问题
4.印象比较深的用例
参考难忘的bug
单用户触发
两个以上多用户同时触发
5.高质量bug
发现了隐藏的,产品未考虑到的逻辑点问题
提的bug操作步骤描述等,开发看了立马就能懂
线上问题时如何处理的
之前公司都是跟我们老大协商,我们老大一般都是看bug的严重程度,严重的bug就加班紧急修改,不影响主功能主流程的小bug会下版本修复,修复不了的bug就先把这个功能拉下来
接口测试的业务逻辑
拿到需求文档后会先对需求进行分析,之后编写测试用例,并进行评审,评审通过后开始执行用例,存在问题提交bug单,直到所有的用例执行完毕,bug全部解决,编写测试报告
发现bug会和产品交流吗
在和开发发生歧义的时候会找产品交流
4.你能接受的加班强度是怎么样的
加班的话我希望是有弹性的,对于项目紧急,或者版本发布加班也是无可厚非的
5.ui自动化在测试中实现的比例有多少
百分之60左右
6.之前的五险一金是怎么缴纳的
在之前公司的时候是按当地的最低标准缴纳的,差不多5.600块钱吧
7.性能测试,和自动化测试,工作中的占比情况
在之前公司项目后期稳定以后会做些性能和自动化的测试
mock操作实现
1.说法一
我们mock的数据是通过rtd工具来实现的,我自己会通过airbus接口写一些参数导入执行,然后通过rdt-后面跟一些参数,来实现mock数据的返回
说法2
我们mock的操作都是让开发帮我们mock,我直接去提交支付触发,然后开发那边帮我mock一下,就可以支付成功
说法3
我们有自己的数据配置平台,我在测试环境提交支付订单后,我在配置平台能根据订单号搜到这个支付中的订单,然后在配置平台直接通过这个订单,对应的测试环境的订单就支付成功了
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
