理论
1.你们公司的测试流程?各个阶段有哪些产物【参考答案】
首先会召开需求分析会议,参加人员有产品、开发和测试,主要是探讨需求主要的一些功能点,完了之后,开发就排期进行开发,我们测试会按照测试主管写的测试计划进行任务分配。先会参考需求规格说明书及原型图提取出要测得功能点,然后写测试用例,写完之后会进行用例评审,用评审以后要修改的就修改整理形成最终的用例版本,之后开发人员版本编译完成后,我们会先进行冒烟测试,如果冒烟测试不通过,直接返回给开发进行修改。冒烟测通过,依据测试用例进行系统测试,测试过程中,提交bug,跟踪bug,进行回归测试直至不存在严重bug,满足用户需求,测试完后编写测试报告,发布上线后,关注web是否正常运行。
产出物包括:测试计划、测试用例、bug、测试报告
2.接口测试流程:
类似于功能测试流程,一个完整的接口测试流程如下:
1分析接口文档和需求文档
2.编写接口测试计划
3.编写接口测试用例
4.接口测试执行
5.输出接口测试报告
3.请描述一下自动化测试流程?参考答案:
1.编写自动化测试计划
2.设计自动化测试用例
3.编写自动化测试框架和脚本
4.调试并维护脚本
6.后期脚本维护(添加用例、开发更新版本)
4.如果没有需求文档的项目,该如何进行测试
答:1.可以参照以前做过的同类型项目的需求文档,如果没有以前的可以参考,就去网上去查找相识的产品的需求说明书
2.可以咨询有相关项目经验的人员
3.根据自己的项目或者行业经验总结
5.由于需求的变动有可能会导致项目延期,测试该如何反馈
答:确定需求变更后,要确定需求的变更会对测试计划有多大影响,新增测试用例需要多久
6.一个版本(迭代)一般多长时间?参与的开发和测试人员的数量
答:1个月,12个开发,3个测试 (开发测试比一般是3:1或者4:1)
7.解释测试计划的5W1H(或者是测试计划包含哪里内容 ,或者是测试计划里面写些什么?)
答:
测试的目的(why)
测试范围(what)
测试时间安排(when)
测试人员(who)
测试环境、文档及bug存放位置(where)
测试方法+测试工具(how)
8.什么是测试点?测试点的作用?
答:测试点是通需求分析后,对得出的需求进行测试的具体内容;作用是可以快速的设计测试用例,让测试用例更好的覆盖测试需求
9.设计登录/纸杯给你进行用例设计
答:纸杯
功能性:能装多少水
安全性:使用的材料是是否安全无毒
性能:不同人群是否能适合杯子的型状,包括握杯的感觉和喝水的感觉
易用性:喝水是否方便,拿起是否容易,会不会手滑
兼容性:能否装热水,能装多少度的热水、是否能装其他的饮料
UI(外观):检查外观是否符合审美
面试官问你的测试思路时都要从: 功能性 安全性 性能 易用性 兼容性方面去考虑回答
10.测试用例的设计方法有哪些?,是如何进行测试用例的编写和管理的?
答:有,测试用例的编写方式等价类、边界值、场景法、因果图、判定表、错误推测等方法,用例的管理工具是使用EXcel表格和禅道
11测试用例的内容有哪些?
答:用例编号、所属模块、标题、预置条件、操作步骤、输入数据、预期结果、优先级
12.如何保证测试用例的覆盖率?
1.参与需求评审,了解产品熟悉业务
2.做测试需求分析(测试点),将所有测试的想法全部在测试点中体现写到思维导图
3.使用黑盒用例设计方法:等价类,边界值,场景,错误推断法来进行所有功能的分析和设计
4.用例的评审,通过评审优化用例
13.一个bug单的内容有哪些?
bug标题、重现步骤、抄送人、测试环境、严重等级、版本、所属模块 附件(图片)。
14.测试的结束准则是怎样?/什么样的情况下,项目可以发布了
①软件需求分析说明书中定义的所有功能已实现,性能指标全部达到要求
②所有测试项没有残余一级、二级和三级错误
③验收测试工件齐全
④立项审批表、需求分析文档、设计文档和编码实现一致
15测试报告有没有写过?测试报告的内容有哪些?作用如何
(1)测试模块(每个模块里需要记录测试的开始时间、结束时间、设计多少用例、通过多少、失败多少、有多少BUG、遗留多少BUG、解决多少BUG、追后对这个模块总结一下)
(2)BUG的统计,根据时间轴来统计BUG的数量,例如:XXXX年X月X日,发现BUG多少,关闭BUG多少,剩余BUG多少,高级的BUG有多少,中级的BUG有多少,低级和建议的BUG有多少,一直罗列到项目完结
(3)项目总结,汇报一下测试的大致结果。
(4)遗留问题和风险,该软件还有什么遗留问题,还有什么风险,都要一一说明
(5)最后评判该软件是否符合上线标准等
16.测试在测试流程中什么时候会到数据库?用来做什么?
答:1.查询数据,用以和前端的操作进行比对
- 做接口测试使用MySQL数据库数据做参数化
17.如何分析一个 bug 是前端还是后端的?
先抓包看请求报文,对着接口文档,看请求报文有没问题, 有问题就是前端发的数据不对
请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题咯
Linux
- 用过linux的哪些命令,介绍一下(从重要到简单,最少二十个起步)
- ls 查看目录中的文件
- cd /home 进入 ‘/ home’ 目录;cd .. 返回上一级目录;cd ../.. 返回上两级目录
- mkdir dir1 创建一个叫做 ‘dir1’ 的目录
- rmdir dir1 删除一个叫做 ‘dir1’ 的目录 (只能删除空目录)
- rm -f file1 删除一个叫做 ‘file1’ 的文件’,-f 参数,忽略不存在的文件,从不给出提示。
- rm -rf 删除目录下面文件以及子目录下文件
- cp /test1/file1 /test3/file2 如将/test1 目录下的 file1 复制到
/test3 目录,并将文件名改为 file2
- mv /test1/file1 /test3/file2 如将/test1 目录下的 file1 移动到
/test3 目录,并将文件名改为 file2
- mv * ../ Linux 当前目录所有文件移动到上一级目录
- ps -ef|grep xxx 查询指定软件显示进程 pid
- kill 使用 kill 命令来终结进程。先使用 ps 命令找到进程 id,使用 kill
-9 命令,终止进程。
- tar –xvf file.tar 解压 tar 包
- unzip file.zip 解压 zip
- Tar -zxvf 解压gz文件
- free -m 查看服务器内存使用情况
2.如何查看最近 1000 行日志
tail -1000 xx.out
3.如何启动服务
以启动 Tomcat 为例,先 cd 到启动的.sh 文件目录
- cd /java/tomcat/bin
- ./startup.sh
停止 Tomcat 服务命令
./shutdown.sh
- LINUX 中如何查看某个端口是否被占用
netstat -anp | grep 端口号
5.linux查找文件命令
find / -name 文件名称
环境搭建
搭建过环境吗?是怎么搭建的?
搭建过,我们公司是使用的MySQL8.0+Nginx1.18+tomcat8.5.68环境
先安装jdk1.8
- 在安装MySQL和nginx 还有tomcat
- Nginx作为代理服务器在Nginx 配置文件 nginx.conf里面server模块配置反向代 理
- 把 架包文件使用 Xftp 工具传到 tomcat 的”/usr/share/tomcat/webapps”目录下
1.GET 和POST 的区别
1.GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递敏感信息。
2.GET 参数通过 URL 传递,POST 放在 Request body 中。
3.GET 产生一个 TCP 数据包;POST 产生两个 TCP 数据包,对于 GET 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应 200(返回数据);
而对于 POST,浏览器先发送 header,服务器响应 100 continue,浏览器再发送data,服务器响应 200 ok(返回数据)
2、请简述一下cookie、session以及token的区别
(1)cookie数据存放在客户的浏览器上,session数据放在服务器上。而token是接口测试时的鉴权码,一般情况下登陆后才可以获取到token,然后在每次请求接口时需要带上token参数。
(2)cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session,session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面应当使用cookie
(3)可以将登陆信息等重要信息存放为session;其他信息需要保存,可以放在cookie
3.ISO七层模型和TCP/IP四层模型
七层模型:
应用层 常见协议有:HTTP,HTTPS,FTP
表示层 用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一
会话层 就是负责建立、管理和终止表示层实体之间的通信会话
传输层 传输层建立了主机端到端的链接 常见协议有:TCP UDP
网络层 本层通过IP寻址来建立两个节点之间的连接 常见协议有: IP
数据链路层
物理层 实际最终信号的传输是通过物理层实现的
四层模型
应用层 传输层 网络层 数据链路层
4.HTTP 状态码 2xx,3xx,4xx,5xx 分别是什么意思?这个是最基本的了, 这个得熟练掌握,
- 200 请求已成功,请求所希望的响应头或数据体将随此响应返回。
- 201 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立, 且其 URI 已经随 Location 头信息返回
- 202 服务器已接受请求,但尚未处理
- 301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应
(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
- 302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
- 303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
- 304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
- 305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
- 307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
- 401 当前请求需要用户验证。如果当前请求已经包含了 Authorization 证书,那么 401 响应代表着服务器验证已经拒绝了那些证书
- 403 服务器已经理解请求,但是拒绝执行它。与 401 响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交
- 404 请求失败,请求所希望得到的资源未被在服务器上发现
- 500 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。
- 501 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
- 502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
- 503 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。
5.http 和 https 区别?
1、https 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。
2、http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl 加密传输协议。
3、http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80, 后者是 443。(这个只是默认端口不一样,实际上端口是可以改的)
4、http 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全。
6、谈谈你对HTTP协议的了解?
超文本传输协议,端口为80,特点(无记忆功能、快速)是由请求和响应两部分组成请求由请求头、请求行、请求正文组成;响应是由响应头、响应行、响应正文组成。
https http+ssl协议 端口443 面向安全的超文本传输协议
接口测试
1.为什么要做接口测试?
- 可以发现很多在页面上操作发现不了的 bug
- 检查系统的异常处理能力
- 检查系统的安全性、稳定性
- 前端随便变,接口测好了,后端不用变
- 可以测试并发情况,一个账号,同时(大于 2 个请求)对最后一个商品下单, 或不同账号,对最后一个商品下单
- 可以修改请求参数,突破前端页面输入限制(如金额)
- 接口测试怎么测?
问题一:平常你是怎么测试接口的?
- 通过性验证:首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。
- 参数组合:现在有一个操作商品的接口,有个字段 type,传 1 的时候代表修改商品,商品 id、商品名称、价格有一个是必传的,type 传 2 的时候是删除商品,
商品 id 是必传的,这样的,就要测参数组合了,type 传 1 的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。
- 接口安全:
- 绕过验证,比如说购买了一个商品,它的价格是 300 元,那我在提交
订单时候,我把这个商品的价格改成 3 元,后端有没有做验证,更狠点, 我把钱改成-3,是不是我的余额还要增加?
2、绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改, 那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功
3、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
4、密码安全规则,密码的复杂程度校验
- 异常验证:
所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是 10 的,传 11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传非必传、参数类型、入参长度。
性能测试
接口并发情况,如上面提到的:一个账号,同时(大于 2 个请求)对最后一个商品下单,或不同账号,对最后一个商品下单
接口响应时间,响应时间太长了,肯定需要优化,一般都是毫秒级别
没有接口文档,如果做接口测试?
没有接口文档,可以抓包看接口请求参数,然后不懂的跟开发沟通
在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?(串联接口)
1) 先通过正则表达式提取的方式或json取值的方式把下一个接口需要的信息从上一个接口提取出来
2) 在设置为全局变量,把取出来的值保存到全局变量
3) 在下一个接口中,使用{{全局变量}}代替要替换的静态值
比如登录后返回 token,其它接口都需要这个 token,那就用全局变量来传 token 参数
3、接口测试如何设计测试用例?
接口测试一般考虑入参形式的变化和接口的业务逻辑,一般设计接口测试用例采用等价类、边界值、场景法居多!
接口测试设计测试用例的思路如下:
1.接口业务逻辑测试?(正例)
接口逻辑测试是指根据业务逻辑、输入参数、输出值的描述,对正常输入情况下所得的输出值是否正确的测试,也就是测试对外提供的接口服务是否正常工作。
2.模块接口测试?(反例)
模块接口测试是为了保证数据的安全及程序在异常情况下的逻辑的正 确性而进行的测试。?
模块接口测试的主要包括以下几个方面:?
1)鉴权码token异常(鉴权码为空<没有鉴权码>,错误的鉴权码,过期的鉴权码)。
2)其他参数异常。
1、必填项检查
2、参数的长度、类型、格式异常:
常规参数:(数字、字符串、日期)
参数长度:6-18位。或身份证、电话的长度。
参数类型:数字(精度),字母,中文,带空格的参数,特殊字符。
日期格式:日期:年月日,年月日时分秒,日期格式(包括/,-,:等)。
3)错误码异常覆盖。
4)接口测试其他的关注点
接口有翻页时,页码与页数的异常值测试
数据库的增删改查,比如一个post接口操作完成后,通过列表页接口看下新的数据是否和刚才的post一致
接口返回的图片地址能否打开,图片尺寸是否符合需求
当输出参数有联动性时,需要校验返回两参数的实际结果是否都符合需求。
所有列表页接口必须考虑排序值
所有功能都要考虑兼容旧版本
4、jmeter参数化的方式有哪几种可以实现?
1) 配置元件—-用户定义的变量元件可以设置全局变量
2 )函数助手对话框中可以选择比如随机字符串、随机日期、随机数字作为参数化
可以使用csv文件作为参数化,通过配置元件中的csv 配置文件进行设置即可
5. 可以理解数据库参数化24、jmeter中如何实现关联?
先从上一个接口中通过正则表达式提取器或jsonpath解析器截取下一个接口需要的参数值保存到变量,然后在写一个接口中通过${变量名}去获取
自动化
元素定位方式有哪些?
2.一个元素明明定位到了,点击无效(也没报错),如果解决?
使用 js 定位方式,selenium 有时候点击元素是会失效# js 点击
js = ‘document.getElementById(“baidu”).click()’
driver.execute_script(js)
- 在selenium自动化测试中,你一般完成什么类型的测试?自动化覆盖率?
主要是冒烟测试和回归测试。回归测试主要写一些功能稳定的场景,通过自动化手段去实现,节约测试时间。因为自动化测试用例也是在不断的更新和迭代,没有刻意去统计,大概在30%-40%左右!
App测试
- 常用的ADB命令:
adb logcat :将日志打印在当前adb 窗口
2 adb logcat -c: 清空以前的日志
3 adb logcat -v time > c:/aaa.log [软件运行过程中的日志信息会写入aaa.log中]
4 adb devices连接设备
5 adb push 将文件从PC写入到设备
6 adb pull 将文件从设备读取到PC
7 adb shell screencap 截图
- 弱网测试怎么做的,2G,3G上下行参数设置多少?
fiddler 和 charles 都可以模拟弱网测试,平常说的模拟丢包,也是模拟弱网测试
弱网、2G、3G建议的上下行速率如下,同时还可以控制丢包率的数据
网络 上行 下行
弱网 10 30
2G 15 50
3G 384 2800
1 app 的日志如何抓取?
app 本身的日志,可以用 logcat 抓取
adb logcat | find “com.sankuai.meituan” >d:\hello.txt
APP 测试 与 WEB 测试的区别:
一.业务功能测试:APP 测试、web 测试 在流程和功能测试上是没有区别的。
二.性能测试方面:
1、web系统: 需监控服务器端的响应时间、CPU、Memory,客户端一般无需监控
2、app系统: 除了监控服务器端的响应时间、CPU、Memory外,app客户端的这些指标也需要监控,另外app客户端还需监控 流量、电量、帧率等
三.兼容性测试方面
1、web项目:
1.1. 浏览器(火狐、谷歌、IE等)
1.2. 操作系统(Windows7、Windows10等)
2、app:
1.1. 设备系统: iOS(ipad、iphone)、Android(OV、华为、小米、三星等)
1.2. 手机设备可根据 手机型号、分辨率、屏幕大小、手机操作系统不同进行测试
四、相对于 Web系统,APP有专项测试:
1. 干扰测试:中断,来电,短信,关机,重启等
2. 弱网络测试(模拟2g、3g、4g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g/wifi 等)
3. 安装、更新、卸载
3.1安装:需考虑安装时的中断、弱网、安装后删除安装文件等情况
3.2卸载:需考虑 卸载后是否删除app相关的文件
3.3更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新
4. 界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换
5. 安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等
6. 边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等
7. 权限测试:设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等
自动化
- 在Selenium中如何实现截图,如何实现用例执行失败才截图
在Selenium中提供了一个get_screenshot_as_file()的方法来截图的,一般结合try/except捕获异常时使用,进行错误截图。
5.遇到frame框架页面怎么处理?
先用driver.switch_to.frame()跳转进去frame,然后再操作页面元素,操作完后使用driver.swith_to.default_content()跳转出来