软件测试面试题
一、怎么样才能做好测试工作
软件测试这个职位重点是保障软件质量,但是软件质量的提升呢,并不能仅仅依赖测试,而是靠整个团队来完成的,整个团队需要有规范的
项目流程,并且产品、开发、测试、运维都需要做好自己的工作,才能把控软件的整体质量,单纯从测试这个岗位来说的话,我感觉做好测试工作需要做好
以下这些事情:
第一 良好的业务能力,可以快速熟悉业务系统,并找到对应的测试点
第二 良好的技术能力,测试基础、用例设计、数据库、linux、自动化、性能、代码等
第三 良好的沟通协调能力,在测试过程中需要和产品 开发 运维保持沟通,推动项目进展及时暴露风险
第四 保持耐心、细心、责任心
二、给你一个杯子,你怎么测试呢?
1、功能测试
主要关注水杯的基础功能
1.1 水杯是否可以正常装水
1.2 水杯是否正常喝水
1.3 水杯是否有盖子,盖子是否可以正常盖住
1.4 水杯是否有保温功能,保温功能是否正常保温
1.5 水杯是否会漏水,盖住杯子拧紧后是否会漏水
2、界面测试:
主要关注水杯外观、颜色、设计等方面
2.1 外观是否完整
2.2 外观是否舒适
2.3 颜色搭配及使用是否让人感到舒适
2.4 杯子外观大小是否适中
2.5 杯子是否有图案,图案是否易磨损
3、易用性测试:
主要关注杯子使用是否方便:
3.1 水杯喝水是否方便
3.2 水杯拿起放下是否方便,这里会衍生到水杯形状的测试
3.3 水杯装水是否方便
3.4 水杯携带是否方便
3.5 水杯是否有防滑功能
3.6 水杯装有低温或者高温水时,是否会让手感到不适
4、性能测试:
4.1 水杯装满水时,是否会漏出来
4.2 水杯最大使用次数
4.3 水杯的保温性是否达到要求
4.4 水杯的耐寒性是否达到要求
4.5 水杯的耐热性是否达到要求
4.6 水杯掉落后,是否可以正常使用
4.7 水杯长时间放置时,是否会发生泄漏
5、兼容性测试:
主要关注水杯是否可以装其他液体,如 果汁、汽油、酒精等
6、可移植性测试:
主要关注水杯放置环境等
6.1 将水杯放在常温环境下,使用是否正常
6.2 将水杯放在零下的环境中,使用是否正常
6.3 将水杯放在高于正常温度的环境下,使用是否正常
7、安全性测试
主要关注水杯外观和各种异常条件下是否释放有毒物质等
7.1 当水杯装满热水时,水杯是否会烫手
7.2 当水杯装上水后,是否会产生有毒物质
7.3 把水杯放在零下环境时,是否会产生有毒物质
7.4 把水杯放在高温环境时,是否会产生有毒物质
三、ios系统和android系统的区别?
第一、ios的稳定性会高一些,android相对会差一些,看厂商的优化了
第二、Android是因为开源而导致碎片化比较严重,每个厂商都定制了自己的ROM
第三、Android更容易出现信息的泄漏、权限问题、安全泄漏等问题
第四、IOS开发语言是swift和Objective-C,运行效率会高一些,Android的开发语言为java,运行效率低
第五、做兼容性测试的时候,Android要做的设备比较多,ios相对会少一些
四、如何保证自动化测试的稳定性?
主要表现在这几个方面:
一、元素定位的问题
二、用例之间的依赖问题
三、数据问题
元素定位问题可以采用智能等待的方式,尽可能避免用例依赖,可以解耦用例之间的关系,让每条用例都从一个共同的页面开始执行,比如首页,
这就需要在框架中采用后置处理的方式,使每条用例执行完成之后都回到首页,测试数据尽可能的现用现造,尽量避免使用假数据和死数据
五,网络协议的请求方式有哪些?
常用:post、get
不常用的:delete、put、head、option
get 和 post的区别?
1、长度 get请求参数是长度限制的 post无长度限制
2、格式 get只接受ascall码 post无格式限制
3、参数位置 get参数写在URL post参数写在请求正文中
4、请求次数 get只发送一次 post发送两次(1、请求头等相关信息 2、发送请求正文)(部分浏览器2次请求)
5、安全性,post比get传输更加安全
http协议包含哪些内容?
1、请求信息
1)请求行-请求方式、请求地址、Http版本
2)请求头
host:主机
server:服务器版本信息
connect-encoding:实体报头的编码格式
3)请求正文:data
2、返回信息:
1)状态行:HTTP版本、状态码、状态信息
2)响应头和请求头一样
3)响应正文:data
HTTP常见状态码
1XX 需要继续发送请求
2XX 成功
3XX 需要重定向
4XX 客户端请求数据有误
5XX 服务器响应错误
6XX 服务器响应错误
常见的状态码:
200(成功)服务器已成功处理请求
302(临时移动)服务器目前从不同位置响应请求,但是请求者应继续使用原有位置来进行以后的判断
400(错误请求)服务器不理解请求的语法
404(未找到)服务器找不到请求的网页
500(服务器内部错误)内部错误,无法完成请求
501(尚未实施)服务器不被完成请求的功能
504(网关超时)服务器作为网关或者代理,没有及时从上游服务器接收到请求
抓包工具怎么用/什么情况会用到抓包?
S-
1、测试执行后,检查传输的数据是否正确
2、出现bug,定位是前端还是后端问题
3、弱网测试
4、安全测试-传输过程中,数据是否有加密,数据篡改问题
1、找到请求数据,检查是否正确
2、定位出是前端还是后端的问题
3、模拟手机弱网进行测试
4、检查数据是否有加密传输、数据篡改是否成功
web-浏览器自带F12
App项目-fiddler,charles(青花瓷),wireshark(抓取tcp协议的包)
1、web-F12即可抓包获取数据
fiddler抓包
1)、web
Http协议抓包
如果抓取不到-》将浏览器设置代理
Https协议抓包
勾选可以抓取Https协议
2)、App
1、手机设置代理
手机要与fiddler安装电脑处于同一局域网下
选择网络,手动输入代理-IP地址(PC端IP),端口(fiddler默认8888)
2、手机抓取HTTPS包-需要安装证书
2种方式
1)生成的证书直接导入到手机安装即可
2)手机浏览器里输入http://pc机器的IP地址:8888/ ->下载证书安装到手机上
3)、微信小程序
微信开发者工具,抓包及抓包信息
2、定位前端还是后端bug
1、看状态码,仅仅是服务器级别的错误
4开头是请求错误,5开头是服务器问题
2、精准定位 1、前端问题-请求链接,请求方式,cookie,请求数据是否正确
request问题,则是前端问题
2、前端无问题,则是后端问题,查看服务器日志,也可以查看返回结果response
3、测试弱网
修改网络文件对应参数
4、安全测试
1、请求数据是否加密
抓包去获取,看看关键信息是否有加密
2、篡改数据
设置断点-篡改是否成功
1、检查数据,判断传输的数据是否正确
2、根据判断,将bug提交到对应的开发手中
3、用fiddler模拟弱网,执行弱网测试
4、 安全测试,提高产品的安全性
六、接口测试怎么测的?
S-后端开发与数据层开发完成以后,可以开始接口测试
T-测试逻辑层与数据层,确认业务是否能够正常使用
A-具体怎么做
1、接口文档-开发提供
接口文档:接口URL地址,请求参数,请求方式,返回结果
接口文档格式:HTML或Word
2、接口分析-不同公司要求不同
1、只测试接口是否能够跑通
只需要考虑正常场景
2、接口场景需要全面覆盖
正常场景:
申请借款模块:
不同的申请方式,还款方式,期数。。。
条件组合,测试不同组合下结果是否正确
判定表的方法-每个条件组合,测试结构是否正确
参数格式的校验、等价类、边界值等等
参数定义的是string类型,传输数据,正常得是String, 输入int类型,也会被强行转成string类型
整合一下:
参数的约束:长度、必选项、数据类型
业务场景:正确/错误业务场景,异常场景
组合场景:相互依赖,相互排斥
对于不理解的参数/返回值不理解,问开发
异常场景:
少一个必填参数
多一个参数
3、接口用例
4、执行
选择工具执行:
1、jmeter
1)打开jmeter
2)新建线程组
3)新建Http请求
请求方式-get、post
请求参数-表单格式,json格式,xml格式
2、requests
3、postman
4、swagger
5、soupui
6、在线测试工具
5、检查对应的结果
Jmeter-建立监听器,查看结果树
requests print出来,打印结果
1、检查返回结果是否正确
2、检查逻辑结果,保存的数据是否正确
完成逻辑层和数据层的检查测试
异常场景