软件测试技术面试题(面试软件测试工程师成功上岸)
软件测试技术面试题(面试软件测试工程师成功上岸)4、在进行测试工作时,有没有和开发之间出现过什么问题,怎么解决的答:基础面试题,自行百度等价类划分的准确性:指的是对于每个等价类都能保证只要其中一个输入测试通过,其他输入也一定测试通过。等价类集合的完备性:需要保证所有可能的边界值和边界条件都已经正确识别。3、测试计划编写了哪些内容?是根据什么原则进行分配的人员,以及一个时间安排
1、说一下你们公司的测试流程
答:基础面试题,培训班都教过。
2、怎么检查一个用例是一个合格的用例,有没有一个checklist
答:整体完备性:“好的”测试用例一定是一个完备的整体,是有效测试用例组成的集合,能够完全覆盖测试需求。
等价类划分的准确性:指的是对于每个等价类都能保证只要其中一个输入测试通过,其他输入也一定测试通过。
等价类集合的完备性:需要保证所有可能的边界值和边界条件都已经正确识别。
3、测试计划编写了哪些内容?是根据什么原则进行分配的人员,以及一个时间安排
答:基础面试题,自行百度
4、在进行测试工作时,有没有和开发之间出现过什么问题,怎么解决的
项目出现延期风险,怎么办?
答:公众号面试帖子说了很多次,可去回顾。
5、如果你现在需要你测试一个全新的业务,你会从哪些方面来尽快熟悉新业务
答:首先会去和对应的产品或开发沟通,寻要响应的文档,比如需求文档、接口文档等,并大致浏览一遍
其次,可以拿着测试环境的账号,在测试环境走一遍主流程,顺便看看后台项目日志打印的情况,先熟悉整个流程,再对每个细节去深挖。
如果对开发语言比较了解,建议拉取代码,进行代码走读。
6、你们项目的迭代频率大概多久一个版本?
答:每个公司频率不一样,创业公司,恨不得一周2、3个版本,传统业务公司,可能2周一个版本,或者一个月一个版本。
7、每个迭代版本你们会测试哪些内容(方面)?
答:看项目情况,一般功能测试是最基本的,其中包括ui、接口测试等
App端、web端的项目可能会有兼容性测试。并发比较大 有性能测试。
对于一些安全性较高的软件,譬如党政军使用的软件,可能会有安全性测试。
8、你在部署测试环境的时候,有遇到过什么问题吗?怎么解决的
答:服务器之间ip不通,可能是防火墙限制或不在一个机房,找运维或其他人,开通防火墙和网段即可。
软件或基础工具版本不兼容,如jdk版本、mysql版本等等问题。
9、你们组长负责什么,是怎么给你们分工的
答:看项目情况,大部分情况下,组长分配任务,有些组长可能自己也参与测试,分配任务主要对测试者的水平和需求的难易程度进行匹配。
10、有没有自己开发过一些能够提升测试效率的工具
答:只要用代码开发的工具提高了测试效率的工具都可以说,哪怕是简单的造数据工具都行
11、说一说你们接口测试的流程
答:和基本的功能测试流程一样
12、app测试和web测试的区别
答:架构不同:web端是b/s架构的,app端是c/s架构的,版本发布的方式和流程不同:web发版本,开发部署新的代码到对应服务器地址,就可统一实现web端的更新app发版本,开发需要打包(apk包和ipa包),打包之后需要发布到对应的渠道。兼容性:web,测试不同浏览器的兼容性(ie、chrome、firefox、360、QQ),app测试不同的分辨率、屏幕尺寸、手机品牌、系统版本,
性能方面:web,测试响应的时间,app,测试响应时间、流量、耗电量、CPU、GPU、memory
安全性:web,sql注入。xss攻击等。app,https加密、签名、加固、密码加密等
13、怎么复制一个表内容到另一个表,写一个sql语句
答:INSERT INTO 新表 SELECT * FROM 旧表
14、有一个成绩表,分别有学生,科目,分数字段,查询不同分数下面的总人数大于80人,按总人数倒序展示,取前10条(还有其它的,大概都是类型的,会考察连表查询,group by having,聚合函数,limit这些)
答:select 分数字段,count(*) as c from 成绩表 group by 分数字段 having c > 8 order by c desc limit 10;
15、truncate和delete的区别,drop呢
drop(丢弃数据): drop table 表名 ,直接将表都删除掉,在删除表的时候使用。
truncate (清空数据) : truncate table 表名 ,只删除表中的数据,在插入数据的时候自增长id又从1开始,在清空表中数据的时候使用。
delete(删除数据) : delete from 表名 where 列名=值,删除某一列的数据,如果不加 where 子句和truncate table 表名作用类似。
16、mysql插入用什么语句,具体一点(回答insert into 表名 (列名) values (字段值)),什么情况下可以不写列名?
答:values后面跟全部字段、某些自增字段是不用写列名。
17、vim查看文件后,按哪个键进行输入,怎么查找某个字符串,怎么保存,怎么放弃修改(类似问题:我想修改某个文件的内容,怎么修改)
答:vim 某个文件,按“i” 进行输入,输入或修改完成,点击esc退出插入模式,点击shift : w是保存文件,点击shift : q是直接退出文件。
18、linux下的权限命令,21代表什么,777代表什么
答:r(读):4、w(写):2、x(可执行):1,21就是 可写可执行,777就是可读可写可执行,具体linux 相关基础执行 可点击以下链接查看:
http://c.biancheng.net/view/753.html
19、统计nginx日志里面http状态码为200的请求数量有多少个
答:
awk '{if($12=="200")sum[$1 " "$12] }END{for(ip_num in sum)print ip_num sum[ip_num]}' access.log |sort -rn -k 2|head -10
20、awk命令了解吗,说说你的了解
答:如上,主要用于日常文件统计场景,
21、怎么查看某个端口被哪个进程占用
答:lsof -i:80或netstat -tunpl | grep 80
22、说一说你们自动化框架的层级,有参与你们自动化框架的搭建吗,为什么用这样的层级划分?
答:ui自动化,基本上都是po模式,主要分为分为四层:基础层、对象层、操作层、用例层 每一层负责各自的功能 这样有益于提高代码的可读性 复用性和扩展性。”
1)代码运行层:run_test.py作用:代码的入口,运行代码,收集测试用例,生成测试报告。
2)测试逻辑层:test_case包,各个模块的测试用例方法,便于管理,便于维护。
3)数据管理层:data,excel数据,csv数据,yaml数据、ini数据,数据列表的保存。
3)业务逻辑层:common 通用(request_handler excel_handler,yaml_handler logger_handler sql_handler) 通用的,*logger日志的操作封装,数据库操作的封装,yaml操作的封装,excel操作的封装。
4)配置文件:config 和项目相关联的,项目地址,数据库地址,logger级别。
5)测试报告(输出)report
23、多线程执行用例脚本怎么共享数据?
答:其实就是想考察保障线程安全的方式,java中可以加锁,或使用threadlocal 每个线程复制一份数据,各玩各的,互不干扰。
24、你的接口自动化怎么实现的,实现了哪些模块,解决了哪些问题?
答:老八股文了,具体可以参考接口自动化相关面试题
25、你的测试数据怎么管理的,有什么字段?
答:大部分都放在Excel里进行数据驱动,普通情况下有以下字段如截图,具体也要结合自己的项目去说。
26、你自动化过程中遇到的最大的问题是什么?
答:老八股文了,具体可以参考接口自动化相关面试题
27、requests调用https接口需要配置什么?
当我们访问 HTTPS 的网站时,需要进行证书验证,在浏览器中可以自动处理验证问题,在 Python 中有以下两种做法:
import requests //不进行证书验证,但这种方式会出现警告,如下图
req = requests.get("https://www.12306.cn/" verify=False) print(req.status_code)
import requests //直接指定证书进行验证
req = requests.get("https://www.12306.cn/" cert=('/path/server.crt' '/path/key'))
print(req.status_code)
28、为什么用yaml文件管理测试数据?
答:如果只是简单用例执行,数量较小,使用yaml,简单高效,对于大量的数据,建议使用excel。
29、你封装过哪些方法,举例说明,除了这些常用的,还有没有你们针对你们项目中特别进行封装的一些方法,举例说明
答:譬如接口请求接口方法封装,断言结果封装、接口header中获取token封装等等。
30、你的ui自动化实现了哪些模块?
答:一般都是实现项目主流程,
31、unittest你用过哪些东西?
答:TestFixture(脚手架,做一些启动关闭的清理程序)、TestCase(python中方法)、TestSuite(套件)、TestRunner
32、pytest里面你怎么实现数据驱动的?
答:我们以yaml为例
1)编写测试用例放入yaml中
#用例1
-
interfaceName: 首屏-考试数据接口
url: http://stupad-stre****
headers: {
'Content-Type': 'application/json'
'requestid': '021618985865'
'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiI4OTg2MyIsInN5c3RlbUlkIjoiODE5NTEwNTU3NDEiLCJvcmdJZCI6IjgwIiwidGltZXN0YW1wIjoiMTYxODk4NTcwODkyOCJ9.rTSoq0rwvCcHNLXiwKCa76_Vw_i926BuMoFrl1Tv0Q0'
}
data: {
"type": 1
}
2)创建工具类读取yaml
import yaml
class yamlUtil():
def __init__(self yaml_file):
'''
通过init把文件传入到这个类
:param yaml_file:
'''
self.yaml_file = yaml_file
#读取ymal文件
def read_yaml(self):
'''
读取yaml,将yaml反序列化,就是把我们yaml格式转换成dict格式
:return:
'''
with open(self.yaml_file encoding="utf-8") as f:
value = yaml.load(f Loader=yaml.FullLoader) #文件流,加载方式
print(value)
if __name__ == '__main__':
yamlUtil("./interface.yaml").read_yaml()
3)使用注解
#通过@pytest.mark.parametrize()实现yaml的数据驱动
import pytest
import os
from common.yaml_util import yamlUtil
class Test_yaml():
@pytest.mark.parametrize("args" yamlUtil(os.getcwd() "/testcase/test_yaml/interface.yaml").read_yaml())
def test_yaml(self args):
# print(args)
interfaceName = args['interfaceName']
url = args["url"]
headers = args["headers"]
assert 2 == args["data"]["type"]
33、会对哪些内容进行断言
答:接口出参code,msg或一些落库数据断言;
34、ui自动化中元素无法定位到是因为什么?
1). 代码写错
2). 元素未出现(需要元素等待)
3). 元素在iframe中
4). 多窗口
5). 出现弹窗(系统弹窗、JS弹窗)
6). 元素属性值是动态加载的
7). 元素无法确定唯一性
8). 只读属性(元素不可操作)
35、怎么解决接口之间的数据依赖?token这种呢?
答:对于单接口测试如果依赖接口只需要在测试开始执行一次,那么可以将依赖接口的请求放在类级前置方法中,然后通过全局变量或者当前用例类属性来传递依赖数据。
对于单接口测试如果依赖接口需要在每个用例前执行,那么可以将依赖接口的请求放在方法级前置方法中,然后通过用例对象属性来传递依赖数据对于多接口的业务流测试,可以将下一个接口需要依赖的数据通过当前用例类属性来传递依赖数据。
36、如果接口有重定向怎么处理的
答:一般重定向接口都有个location
代码示例:获取location 可以自己去重新请求获取的location。
# coding:utf-8
import requests
# 请求头
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
}
s = requests.session()
# 打开我的随笔
r = s.get('https://i.cnblogs.com/EditPosts.aspx?opt=1'
headers=headers
allow_redirects=False
verify=False)
# 打印状态码,自动处理重定向请求
print (r.status_code)
new_url = r.headers["Location"]
print (new_url)
希望本文对你有所帮助~~如果对软件测试、接口测试、自动化测试、面试经验交流感兴趣可以私聊我或关注公众号“特斯汀软件测试”。免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。