1、http和https的区别
http是超文本传输协议,端口是80
https是由SSL+http协议构成(https多了个加密协议,比http更安全),端口是443
2、TCP和UDP的区别
两者都属于传输层协议
TCP是面向连接的,建立TCP需要三次握手,断开需要四次挥手
UDP是面向非连接的协议,不需要与对方建立连接,而是直接发送数据包给对方,比较适合一次传输少量数据,属于不可靠连接,优点:传输速度快
3、打开一个网站经过哪些步骤,才可以让人看见
在浏览器输入网址(www.baidu.com)点击搜索→由本机电脑经过DNS进行域名解析成服务ip→再向目标地址发送请求过去并建立三次握手的连接→再将服务器发送过来的数据呈现在自己的浏览器上
4、你使用fiddler用来做什么
a、抓包,辅助测试,看请求入参和出参,判断前后端bug
b、改数据,断点
c、网络测试,目的:验证网络比较差的情况下能不能运行
判断前后端bug
我们一般是通过抓包工具fiddler来抓取数据包来定位问题到底是前端还是后端的,
如果请求没有发出去或者传入的参数有问题,就是前端的问题;
如果前端传入参数和请求都没问题,后端返回的响应数据有问题,那就是后端的问题;
如果前端传入参数和请求是正确的,后端返回的响应数据也是正确的,那么可能就是前端处理返回数据的问题。抓包后看响应码,1,2,3开头,请求错误是前端问题,响应错误是后端问题,请求响应正确,可能就是前端显示问题,4开头,前端问题,5开头,服务器,运维错误
5、fiddler怎么抓https的包
a、fiddler设置代理
b、web端、App端连接使用fiddler代理
c、下载安装fiddler证书
6、web测试和APP测试有什么区别
a、性能方面:
web页面可能只关注响应时间,而app还需要关心流量、电量、CPU、GPU等
b、兼容性方面:
web是基于浏览器的,而浏览器的兼容一般是选择不同的浏览器内核进行测试(IE、Chrome、火狐);APP测试则必须要依赖手机或者平板,要看分辨率、屏幕尺寸、还要看设备系统(Android、iOS)
c、APP还需要考虑异常情景(中断、来电、短信、关机、重启等)
d、APP测试还要测安装、卸载、更新,web测试就不需要考虑这些
e、APP产品都是触摸屏手机,所以测试的时候还要注意手势,横竖屏切换,多点触控等
7、cookie和session的区别
cookie和session都是用来跟踪浏览器用户身份的会话方式
cookie数据保存在客户端,大小受限制,最大4kb
session数据保存在服务器端,更加安全;session会比较占用服务器性能,当访问增多时应该用cookie
8、get和post区别
get是用来查询的,get的参数跟在URL后面,get传送的数据量较小,不能大于2kb
post是用来新增的,post的是在请求体里面,比较安全,post传送的数据量较大,一般不受限制
9、fiddler工作原理
fiddler是个抓包工具,当浏览器访问服务器会形成一个请求,此时,fiddler在浏览器和服务器中间,当浏览器发送请求会先经过fiddler,然后再到服务器,服务器返回数据给浏览器也要经过fiddler,然后才会在浏览器中显示。这样一个过程,fiddler就抓到了请求和响应数据的整个过程。
10、什么时候做接口测试
在开发过程中,前后端完成的进度不一样,后端接口文档写好了,前端还没有写好页面时,我们就可以先做接口测试了。
11、你是怎么做接口测试的
1、问开发要接口文档
2、分析接口文档,不懂的与开发进行沟通
3、讲自己需要测的接口录入postman中,分模块录入,进行冒烟测试
4、提取公共变量,比如:ip
5、编写用例
6、生产测试脚本,做好上下游关系,做好断言
7、处理好第三方挡板接口
8、运动所有接口,有bug发bug(bug用断言来判断)
9、生成接口测试报告
12、分模块录入和提取公共变量的目的是什么
方便后期管理
13、接口测试的用例怎么设计,需要注意些什么
接口测试用例的设计,主要从输入和接口出发:
(1)针对输入,可以按照参数类型进行设计
(2)针对接口处理,可以按照逻辑进行用例设计
(3)针对输出,可根据结果进行分析设计
14、怎么做断言
断言响应状态码
断言响应正文:断言响应中是否有指定的字符串
断言响应时间:断言响应结果返回的时间是否在指定范围
15、接口上下游关系怎么做
我们之前做过关联接口的测试,比如我们的加入购物车需要传入session id,而这个session id值时动态的,是需要登入接口请求成功后,在响应文本中才能获取的,那么我们在jmeter中就需要先运行登录接口请求,然后通过jmeter的后置处理器,比如正则表达式提取器或者JSON提取器来获取 登录接口响应结果中的session id值,将它存入一个变量中传给购物车的接口,这样添加购物车接口就可以请求成功
16、接口测试需要注意些什么
17、性能指标
18、性能测试有哪些测试
19、数据库性能测试怎么做
创建一个测试计划→添加一个线程,并在线程下面,创建一个JDBC Connection,设置相关信息(如数据库地址、驱动程序,数据库用户名和密码)→在线程组下面,再创建一个JDBC Request,我们需要对数据库做插入操作→添加监听器→查看结果树
20、压力测试和负载测试的区别
压力测试:在一定得负载下系统长时间时间运行的稳定性
举例:登录接口,我们先10个用户访问,然后100个用户访问,然后1000个用户访问,关注程序的响应时间,所耗资源或者关键资源消耗
负载测试:对程序不断增加压力,每个增加后,程序的性能情况
举例:运行一天,1个月,一年,关注他们各项指标是否都在正常指标内,是否会内存溢出,是否出现功能性故障等
21、列表、元组、字典的区别
a、列表[ ]、元组()、字典{ }
b、列表和元组是有序的,字典是无序的
c、字典是键值对的形式,且字典中不要出现两个相同的键
d、元组的值时不能被修改的,相当于不可改变的列表
22、占位符:
字符串:%s
整型:%d
浮点型:%f (%.2f表示两位小数)
所有类型:%r
23、for循环与while的区别
for循环适合用在已知循环次数的循环,while适合用在未知循环次数的循环
for循环知道循环次数,先判断后执行;while不知道循环次数,先判断后循环
24、break和continue的区别
break用于终止整个循环,不再执行下面的循环语句,
continue用于终止本次条件的循环,回到下一个条件继续执行,只会跳过本次循环
25、访问列表的值:特别注意切片的处理
a=[1,2,3,4,5,6,7,8,9]
a[2:8:2]
结果是3,5,7
第一个2是指从下标为2的开始取,8是指在前八个里取要的值,第二个2是指每个两个取一次(包括上一个取的值)
a[开始:结束:间隔]
26、列表的方法
添加:append()
删除:del,pop
获取长度:len()
去重:set()
合并两个列表(最简单的是直接用+):extend()
27、selenium(一个自动化测试组件)unittest(Python自带的一个单元测试框架)
问题一:有哪些元素定位方式?(8种)
id、class_name、name、xpath、tag_name等
问题二:你觉得什么样的项目适合做自动化测试?
1、项目周期长且相对稳定
2、需要经常做回归测试和冒烟测试
3、需要在多平台上重复运行相同测试的场景
问题三:你们公司怎么做自动化测试?
我们的自动化测试主要是web UI的测试,主要用于冒烟测试和主要功能的回归测试,或者主流浏览器的兼容性测试
1、编写自动化测试用例,我们根据功能测试用例编写自动化测试用例(主要是加入元素的定位说明),然后依据自动化测试用例,使用Python语言转化成自动化测试脚本,驱动谷歌浏览器,用selenium提供的API进行页面元素的定位,并对元素进行操作(比如点击、输入内容、下拉框选择等)
2、搭建框架,使用Python+selenium+unittest来搭建自动化测试框架,unittest主要是方便管理并执行多个测试用例,获取最终的测试结果报告
3、自动化脚本用来做冒烟和回归测试,脚本编写完之后,我们在每次开发提交测试版本后,用这个脚本来进行冒烟测试,也会用它来做主要功能的回归测试
4、维护测试脚本
问题四:自动化测试用在什么时候
每次版本提交后,用自动化脚本跑一下主要功能,看是否跑得通
问题五:元素定位不到要哪些原因?
1、frame下拉框的原因定位不到元素,要先跳转到frame下,才能定位到元素
2、如果元素是动态的就定位不到
3、页面还没完全加载出来,就对页面上的元素进行操作
4、有些元素需要二次定位(如弹出框登录)
5、元素不可见
28、元素操作方法
输入:.send_keys()
点击:.click()
清空:.clear()
29、浏览器操作方法
尺寸大小:size
后退:back
前进:forward
刷新:refrensh
关闭当前主窗口:close
关闭全部页面:quit
获取当前页面的地址:current_url
获取当前页面的标题:browser_title
30、鼠标操作方法(ActionChains)
右击:context_click()
双击:double_click()
拖动:drag_and_drop()
鼠标悬停:move_to_element()
一直按着一个元素:click_and_hold()
31、键盘操作方法(Keys)
删除键:(Keys.BACK_SPACE)
空格键:(Keys.SPACE)
回退键:(Keys.ESAPE)
回车键:(Keys.ENTER)
全选:(Keys.CONTROL,“a”)
复制:(Keys.CONTROL,“c”)
粘贴:(Keys.CONTROL,“v”)
保存:(Keys.CONTROL,“s”)
剪切:(Keys.CONTROL,“x”)
撤回:(Keys.CONTROL,“z”)
32、frame(下拉框)
切到frame下:switch_to.frame(frame的标记)
返回原有的页面:switch_to.default——content()
33、元素等待有哪几种方式,有什么区别
强制等待:sleep()
隐式等待:implicitly_wait() 一般一个页面用一次就好,如果找不到元素会报错
显示等待:WebDriverWait(实例,等待时长,每隔几秒扫描一次).until(lambda x:x.元素定位)
34、unittest
组成:测试套件、测试用例、测试执行器、测试固件
断言:
35、窗口句柄(window_handle)
获取当前页面的窗口句柄:current_window_handle
获取所有窗口句柄,返回的是一个数组:window_handles
窗口编号:switch_to.window