功能测试面试题
1. 功能测试的流程?
需求分析 --> 写测试用例--》用例评审--》执行用例--》提交修改复测用例--》回归测试--》预发环境回归 --》上线 线上验证
2.结合业务说一下测试用例设计?
我们的平台是一个广告投放平台,主要是帮助客户创建和投放广告,以及报表数据的查看,
我负责的是百度广告创建流程:主要包含三个模块
第一:广告计划 - 设定广告的名字,什么行业的广告,在那些地区投放,投放时间,投放的预算等等
第二:广告组 -设定广告组的名字,主要是设定关键词,方便客户搜索到我们的广告,设定的越多,搜索到的可能就越大
第三:广告创意:设定广告的标题,描述,落地页,广告的投放形式,是图片还是视频。
创建成功之后就投放到百度渠道那边。根据实际的广告效果拉取广告数据,例如广告的点击量,展示量,花费,cpc,cpm等等
2.web测试和app的测试区别有哪些????
一、系统架构不同
web项目主要是基于浏览器的bs架构,而app项目主要是基于手机端的cs架构
二、测试方法不同
功能测试:web不支持离线浏览,但是有的app支持;
性能测试:web主要关注服务器性能,app除了服务器还有考虑手机端的性能;
兼容测试:web主要考虑浏览器的兼容性,app还有考虑不同设备、不同系统、不同分辨率和系统版本等;
专项测试:app多了一些专项测试,比如电量、网络、中断、干扰等;
三、测试工具不同
自动化测试中app使用的工具一般是charles,fiddler等,web则一般使用F12。
2.测试都包含那些测试?
功能测试,接口测试,性能测试,兼容性测试
3.常用的用例设计的方法?
边界值,等价类方法
边界值:有一些数据有一个区间范围,账号密码长度 设置边界值,创建广告计划的投放时间(3-5)的边界值
等价类:用少的用例数目覆盖多的条件场景,
有效等价类:满足所有条件的数据 ,
不满足所有条件的例子:不满足所有条件的例子
4.缺陷等级如何划分?
我们的缺陷一般分为四个等级,致命级,严重级,一般级和轻微级。
致命级指能够导致软件程序无法使用的缺陷,比如宕机,崩溃,手机APP的闪退,数据库死锁等。
严重级别一般是指软件的主要功能存在缺陷或者非主要功能缺失等,影响用户的正常使用。
一般级别是指非主要功能存在缺陷,但不影响用户正常使用,或者有替代的方案。
轻微错误一般指的是界面或者文字图片的轻微显示错误等。
5.发现一个bug,开发不承认,你会怎么做?
6.测试工作工作是什么时候开展的?
7.迭代周期是多长?
一周或者两周 根据实际的需要
8.使用什么缺陷管理工具? 禅道
9.bug记录都包含那些内容?
1.问题描述
2.测试步骤和测试数据
3.测试截图
4.设计到的业务模块。问题的优先级,严重等级,具体的开发人员
10.你们项目共有几套运行环境?
测试环境,预发环境,生产环境 三套
11.怎么安排测试进度?
一般在需求评审的时候都会有一个工时预估,还有一个任务的优先级
当然也要结合实际的开发进度来安排测试
12. 测试过程中碰到的bug
最基本的就是界面样式格式字体的错误
还有一些功能的缺失等
创建广告过程中前端url,字段写错,少传字段导致请求失败,
或者广告的投放时间前端按天处理的,后端处理之后变成按周来处理,导致广告投放时间不一致,
或者内部服务异常,系统异常等等
13. 测试过程中遇到的最大的挑战:
我目前有两个: 第一个是python自动化,现在写一些简单的业务代码,框架的搭建也要不断的学习 补充
当然,我也觉得挑战也是完善自己的不足,那些地方薄弱就自己努力学习起来
14.你了解的接口的框架都有那些:
soapui, 基于xml来实现的 现在用的很少 ,基本上都是基于restful http协议的
15. 一个完整的接口请求:
请求行 请求头 请求正文/ 响应行 响应头 响应正文
如果他细问的话,就说 协议 + url+ 参数 请求
如果再细问,就是请求行说一说,请求头说一说
16.接口的关联:结合业务说
下一个接口的请求参数是从上一个接口的响应结果里面提取的
例如:想创建广告基于登录的token,那么要先登录提取token作为创建广告接口的参数
或者创建广告包含 创建计划和创建广告组,创建广告组要基于广告计划的id,那么要先提取创建广告计划id作为创建广告组里面的参数,
或者修改个人信息的账户id来自于获取个人信息的接口响应的id
17.字段提取的方法: 正则表达式提取
18.接口的参数化:
要把数据参数化,通过变量来应用,比如说 登录的时候,要用到多个账号的数据,那么在txt里面准备好账号密码,然后通过CSV数据文件配置,选取该文件,再定义变量来引用我的账号密码,下面就是接口调用就可以了。
或者是 创建广告的时候 包含了 计划名,区域,时间,价格等字段,那么就在txt里面准备好多个计划的数据,通过csv数据文件配置,选取该文件,再定义变量来引用我的数据,下面就是接口调用就可以了
19.接口的断言,判断接口的响应码是否是200. 接口的数据的字段是否符合预期
20.性能测试做过吗,怎么做的 结合业务,
一般选取我们用户比较活跃的主要功能和基础功能做压测,
登录的压测,当前平均在线用户是100,从 10到100逐步增加用户量来请求服务,看当前服务的cpu,tps,响应时间是否在一个正常的范围内。怎么判断指标在一个正常的范围内,
cpu的利用率在70%内是符合预期的,响应时间通常是几百ms毫秒
21.判断一个bug/问题是否是前后端的问题,
看请求的参数与响应的结果是否匹配:
例如:通常碰到的传参错误,url错误,少传字段就是前端的问题
(1)传参内容是否正确
如果传参内容不正确,定位为前端的bug。
(2)响应内容是否正确
如果响应内容不正确,为后端bug
比如说创建广告接口,投放区域是北上广,但是后端处理之后返回的是北上
22.get/ post的区别
get: 参数拼接在url后面 而且暴露在外面 不安全,传染有字数的限制,它是从服务器获取资源的
post:参数一般放在body里面,比较安全,可以传的参数的数据类型最多,它是向服务器提交资源的
23. cookie ,session,token的区别
cookie是第一次请求的时候服务端返回给客户端的 在一个set_cookie里面存储,存在本地的客户端以文本信息,下次登录可以一次性发送,系统告诉我是否访问我是否登录过,同时会在cookie里面增加一些权限码:token。session
session:是客户端跟服务端交互的临时窗口,一万个用户怎么管理呢 ,通过session_id区分,
token是一个身份牌,登录的时候生成的一个身份牌,拿着身份牌可以一直进行业务操作 保存在cookie当中 打开浏览器有一个默认登录的状态
24: 关于python的问题:
1. python的框架是别人搭建的,我只是写一些业务代码,比如创建广告的流程
2.元素定位方法:通过 id,name,class,link,text,xpath,cssSelector, 通常来说用 id,name,class定位方便,如果没有这些的时候用 xpath(绝对路径来定位),cssSelector
3. 等待的三种方式: 强制等待:sleep, 显式等待,隐式等待、
4。显示等待,隐式等待的区别,显示等待:一定要等待设定的时间,比如说3s如果定位到就没问题,定位不到就会报错
隐式等待:在设定的一定时间范围内,如果定位到就没问题,定位不到就报错
5.用的框架是:python+selenium+unitest+ddt+yaml+htmltestrunner+logging
- 元素定位异常
a) 是否存在等待(显示/隐式/强制等待)(等待的时间跟时间页面响应时间不匹配)
b) 是否存在句柄 (点了按钮之后 打开了新的窗口,用switch)
c) 是否在iframe窗体里面(先切入进去再定位,再切出)
d) 是都存在元素遮挡(浏览器窗口没有完全展示,放大窗口)
e) 元素值是否正确(就是定位元素的值写错了)
f) 页面的加载策略是否正确
截图:封装好的直接用
遇到最有成就的bug:
比如说创建广告过程中,广告计划 广告组,广告创意提交完了之后,响应时间很慢,经过排查前端没有问题,请求到服务端的过程里面经过了网关,然后调用了数据库的慢查询 导致的