一、web测试
给你一个web项目,如何进行测试?
思路:可以从软件质量模型的角度出发,考虑从功能测试,UI测试,易用性测试,兼容性测试,性能测试,安全性测试等几个方面来进行测试。主要着重从功能测试(70%以上),其他的UI、易用性,兼容性等顺带说一下就可以了,性能和安全不建议说。可以以自己的一个项目为例来具体说明。
比如某一个电商项目,我主要负责用户端系统的测试,用户端主要用于实现用户的线上购买商品,主要功能包括首页,购物车,订单,支付,我的等模块,以购物车模块为例,购物车模块主要包括加入购物车,查看购物车,删除购物车,修改购物车,结算功能,
以加入购物车为例,我主要设计了以下测试点:
1.正常环境下是否可以成功加入购物车
2.如果商品没存货了是否会有信息提示
3.当库存数量小于加入购物车的数量,是否会有信息提示
4.当商品有不同的款式可以选择时,加入购物车时是否会有对应的款式弹框显示出来提供给用户选择
5.当有的款式没有存货了,对应的款式图标是否有颜色的变化,不能对该款式进行加入购物车操作
老师:
正常测试点:
首先登录,然后检索商品,添加购物车,检查是否添加成功,从前端和后端都检查,从前端来说,是否有添加成功提示,进入购物车查看是否有添加的商品,检查商品的名称,数量,价格,规格等信息是否正确;从后端来说,检查数据库响应的表中是否有该条记录并且字段信息都正确
异常测试点:
1.未登录状态下,添加购物车是否成功
2.账号异常状态下,添加购物车是否成功
3.商品是下架状态,添加购物车是否成功,界面如何提示
4.商品库存不足时,添加购物车是否成功
5.超过购买上限时,是否能够添加成功
6.商品数量输入框输入小数,0,负数,字母,空格等非法输入时,是否能够添加成功,是否有提示
7.商品的规格与数量之间是否有联动(比如买衣服,选的红色,中码规格有多少条)
8.同一商品同种规格,添加购物车是否在数量上叠加
9.同一商品不同规格,添加购物车是否在购物车新增一条记录;
10.考虑购物车是否有容量限制,比如9999+
UI:主要考虑是否与UI设计图一致,排版是否整齐,页面风格是否好看合适
兼容:考虑不同浏览器不同版本,不同操作系统,不同分辨率的情况
易用性:页面是否有操作提示,提示是否友好,操作是否便利
微信的转账功能如何测试?
正常点:
1.登录成功状态下,微信零钱和绑定的银行卡都有充足余额的情况下是否可以转账成功
2.转账成功后是否有信息提醒,对应支付方式的银行卡或者微信零钱的余额是否有减少,后端还要看数据库对应的表数据是否正确
3.转账成功后对方界面信息提示显示是否完整
4.当账号异常的情况下,是否可以进行转账
5.当微信零钱和绑定的银行卡都有余额时,是否可以自由选择支付方式
6.当微信零钱余额为0时,是否置灰不能选择该支付方式
7.当转账金额超过单日最高转账金额时,是否会有提示
8.当转账金额过大时,是否会有转账提醒再次核对收款人与转账金额
9.当转账金额超过微信零钱时,是否置灰不能选择该支付方式
10.当转账金额超过绑定的银行卡余额时,选择该支付方式是否余额不足的信息提示
11.当转账支付密码输入错误时,是否会有错误提示
12.如果忘记了支付密码,是否有忘记密码功能重新改密码
13.转账说明输入框内如果输入超过60字是否会有提示
14.转账金额为0时是否转账成功
15.转账金额为空时是否能转账成功
16.当转账到一半手机没电关机,重新开机后是否能继续转账
17.当收款人超过24小时候不收取的情况下,是否会全额返回
18.当和收款人在进行语音通话或者视频通话时,是否可以进行转账
19.不选择收款对象是否可以进行转账
20.当被收款对象删除微信后,是否还可以进行转账
二、三种网络体系架构
B/S:浏览器/服务器 web项目都是这种架构
C/S:客户端/服务端 移动端的APP都是这种架构
P2P:p2p是指位于同一网络中的每台甲酸剂都彼此对等,各个节点共同提供网络服务,不存在任何“特殊”节点。每个网络节点与“扁平”的拓扑结构相互连通。在P2P中不存在任何服务端、中央化的服务、以及层级结构。
三、web系统工作原理
1.浏览器将用户的操作封装成一个HTTP格式请求发给服务器;
2.服务器收到请求后,解析请求,处理,生成一个HTTP格式的响应发给客户端
3.客户端收到响应后,解析渲染到浏览器页面上
面试:浏览器将用户的操作请求发送给服务器,服务器收到后经过解析处理把响应发给客户端,客户端收到响应后解析到浏览器页面上
四、HTTP和HTTPS协议的区别
HTTP协议:超文本传输协议,用于浏览器和服务器之间进行通信,传输超文本(网页,js,css,图片)
HTTPS协议:在HTTP协议的基础上加了一层ssl(安全套接层),可以用于加密传输加密和身份认证,从而保证传输过程的安全性
1.HTTP协议传输的是明文,相对来说不安全,不适合传输私密信息
2.HTTPS协议可以传输密文,相对安全,适合传输私密信息
3.HTTP协议默认端口时80,HTTPS协议默认端口是443
4.HTTPS协议需要申请一个证书,跟专门机构CA申请,需要一定的费用
5.HTTPS协议不仅可以进行传输加密,还可以用来验证服务器身份,从而保证安全性
面试:HTTP是一种超文本传输协议,用于浏览器和服务器之间进行通信的,HTTPS是在HTTP协议的基础上加了一层ssl,可以用于加密传输和身份认证,保证传输过程的安全性
五、七层模型和四层模型
osi七层模型:
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
TCP/IP四层模型:
应用层
传输层==管理端到端的连接,用到两个协议:TCP和UDP协议
网络层==路由,寻址,IP协议
网络接口层
六、TCP协议和UDP协议的区别
1.TCP协议是面向连接的,在通信前需要三次握手建立连接,在结束时需要四次挥手才结束连接;UDP是非连接的,在通信时不建立连接,直接通信
2.TCP是安全的,同时会有差错校验,错误重发等;UDP是不安全的,但UDP实时性更好
3.TCP是一对一的,UDP可以一对多
面试:TCP建立连接需要三次握手,结束连接需要四次挥手,会比较安全可靠
UDP传输不需要建立连接,所以传输速度会比较快
另外TCP是一对一连接的,UDP是可以一对多连接的
TCP主要是应用在网页和APP应用上,UDP主要是应用在游戏上
七、cookie和session的区别
由于HTTP协议的短连接和无状态的特点,所以引入cookie和session来解决保留登录态的问题、
cookie:在服务端认证客户端身份后,由服务端发给客户端,客户端存储在自己本地,在之后与服务端通信过程中需要携带cookie,从而让服务端认证客户端的身份以及登录状态
session:存储在服务端,每一个可以可以存储一个session(会话),用来识别不同的客户端的身份以及登录信息等
token:token和cookie的作用差不多,都是为了解决用户登录状态(用户鉴权)。token和cookie的区别是,cookie是在登录认证通过后,在响应头中返回给客户端,token是在登录认证通过后,在响应体中返回给客户端。需要客户端自己存储,并且在后面的请求参数中携带token。在接口测试中很喜欢问。对于接口测试中,token通过接口关联的方式处理
面试:因为HTTP协议是短连接和无状态的一个特点,所以需要引用cookie和session来解决这个问题,cookie是让服务端认证客户端的身份和登录状态,session是用来识别不同的客户端的身份和登录信息
八、APP测试
给你一个APP项目,如何测试
思路:对于一个APP项目,主要从业务功能和非业务功能两个方面进行测试
对于业务功能层面,跟web项目测试的方法一样,都是根据需求,提取相关的测试点,编写测试用例进行测试;
对于非业务功能,根据系统的C/S架构,需要测试安装/卸载/升级测试,消息推送,权限,中断,易用性,兼容性,弱网等方面进行测试
安装测试:
不同安装方式进行安装,不同的手机是否都能安装,安装过程中出现中断,安装过程中出现意外情况,覆盖安装等
卸载测试:
不同卸载方式卸载,卸载后是否清除残留文件,卸载过程中出现意外情况,卸载后能够再次安装;
升级测试:
不同方式升级,是强制升级还是选择升级,是否有升级提示,升级后功能是否正确,跨版本升级;升级过程中出现意外情况,升级后能够再次安装
push测试:
客户端是否能收到推送的消息,推送的消息内容,推送的消息显示的位置(通知栏,APP弹框提示),推送的时间,推送的设置,推送的用户等
权限测试:
测试APP中依赖手机危险权限在不同授权操作下是否都能正常运行,不会闪退,崩溃等
中断测试
测试APP在运行过程中出现中断事件,是否还能正常运行。
兼容性测试
1.不同品牌和型号的手机,一般是测目前市场上热门的机型
通过真机测试,一定数量真机,还可以 通过一些云测的手段来提高覆盖率
2.不同的操作系统及版本:Android11/10/9;ios14/13等,鸿蒙
3.不同的屏幕和分辨率
4.不同的网络:wifi,4G,网络切换,弱网
性能测试:
有用过一些小工具(GT,性能狗perfDog)来测试客户端的性能,监控APP运行过程中,手机资源的消耗,cpu,内存,电量,流量,帧数,启动时间等
九、APP抓包
1.首先将手机和电脑连接同一个局域网
2.将手机的网络设置为代理,设置电脑的ip和fiddler监听端口
3.在fiddler上设置允许远程连接
如果要抓包HTTPS,需要在手机上安装fiddler证书
十、APP弱网测试
首先设置fiddler为代理
1.首先将手机和电脑连接同一个局域网
2.将手机的网络设置为代理,设置电脑的ip和fiddler监听端口
3.在fiddler上设置允许远程连接
4.在fiddler网络延时,也就是发送的速率(自己计算)
5.打开网络模拟开关
十一、adb命令
1.查看当前连接设备
adb devices
2.安装APP
adb install apk文件
-s 指定安装设备 adb -s ip:端口 install apk文件
-r 指定覆盖安装 adb install -r apk文件
3.卸载APP
adb uninstall APP的包名
4.获取APP包名
aapt dump badging apk文件
adb shell pm list packages
adb shell dumpsys window|findstr mCurrentFocus
5.从设备传输文件到电脑
adb pull 设备上文件的路径 存储到电脑上路径
6.从电脑传输文件到设备
adb push 电脑上文件的路径 存储到手机上的路径
7.查看日志
查看服务器日志,使用xshell、secureCRT连接服务器,找到日志的目录
查看客户端日志
adb logcat -v time *:W|findstr 关键字>存储日志的文件
crash 崩溃
ANR 应用程序无响应 (application not response)
Exception 异常
业务关键字 包名 模块关键字 order
十二、自动化测试
1.你们公司自动化的工作是怎么进行开展的?==自动化测试流程
(1)分析需求,制定自动化测试的计划,包括测试范围,测试的工具,测试的编码语言,测试框架,人员和时间的安排等
(2)获取手工测试对应的测试用例;
(3)搭建自动化测试的环境和框架
(4)按照分工来编写自动化测试用例脚本
(5)将所有的测试脚本上传到代码服务器上,批量执行,生成测试报告
(6)可以集成Jenkins,实现持续集成,完成无人值守
2.自动化的框架是什么
web UI自动化:
python+selenium+unittest+HTMLTestRunner+PO+Jenkins
APP UI自动化框架:
python+Appium+PO+Jenkins
接口自动化框架:
jmeter(模拟发送请求和接受响应,只能跑一个脚本)+ant(批量跑多个jmeter脚本,同时把跑的脚本生成html的报告)+Jenkins
python+request+unittest+HTMLTestRunner+Jenkins
PO模式:
po模式是UI自动化的一种设计模式,将UI自动化中对于页面元素的定位和操作进行封装,在用例中调用封装的方法。
好处:统一管理页面元素,易于代码维护。同时在po模式中将代码进行分层管理:
base:放公共方法公共类
page:放封装的页面元素定位和操作类
case:放使用unittest/pytest编写的测试用例
report:放html测试报告
data:放测试数据文件,将测试数据单独与代码分离,方便维护和统一管理
3.自动化的覆盖率有多少
UI的自动化覆盖率30%左右,接口自动化覆盖率可以90%以上。
4.unittest和pytest的区别
unittest编写规则更加复杂,pytest的规则更加简洁
unittest的前置和后置没有pytest的前置和后置灵活,分为方法级,用例级,测试类级,模块级等
pytest的插件丰富,可以生成html报告,失败重跑插件等,pytest可以兼容unittest的脚本
unittest中没有参数化(数据驱动),需要安装第三方ddt库来实现,在pytest有对应装饰器来直接实现参数化