常见的面试题
1:公司流程
先立项,然后根据产说明书编写需求文档,然后进行需求评审,开发进行设计(编写代码,自测,提测),测试编写测试计划,编写测试用例,进行用例评审,搭建环境,冒烟测试(查看主功能是否实现),功能测试,bug管理工具禅道,回归测试,验收,上线
2:测试计划内容
测试背景 测试目的 测试资源 测试范围 测试环境 测试人员 时间 风险
3:测试用例内容
用例标题,用例编号,所属模块,优先级,前置条件,输入数据,测试步骤,预期结果,实际结果,执行人,执行时间
4:缺陷报告内容
缺陷报告编号,标题,复现步骤,优先级,验证程度,状态,环境,类型 指定人员 截止时间
5:bug的生命周期
BUG的生命周期:指在Bug管理工具中,一个bug被发现到这个bug被关闭的过程
Bug的生命周期被分成的阶段是 新建、指派、接受、修复、关闭
6:测试报告内容
测试目标,测试依据,测试范围,测试环境,进度,回归测试,遗留多少bug,bug如何处理,
7:get/post区别(put和delete)
1、GET将参数放在URL中。而POST将数据放在BODY中。
2、GET的URL会有长度上的限制,而POST的数据则可以非常大。
3、POST相比GET更安全,因为数据在地址栏上不可见。
4、一般get请求用来获取数据,post请求用来发送数据。
8:app和web的区别
1,同样的测试用例方法相同。
2,同样的测试方法:都会依据原型图或效果图来检查UI。
3,测试页面载入与翻页的速度,登陆时长,内容是否溢出等。
4,测试应用系统的稳定性。
不同点:
1,app测试平台:百度云测,testin云测不同。
2,App的安装卸载:全新安装,升级安装,第三方工具安装,第三方工具卸载,直接卸载删除,消息推送测试,手机授权测试,前后台切换,网络环境(wifi/2G/3G/4G/无网络)。
3,App的中断测试:来电中断,短信中断,蓝牙,闹钟,拔插数据线,手机锁定,手机断电,手机问题(系统死机重启)。
4,兼容性测试:Web项目考虑不同浏览器的兼容,app需要考虑手机不同的操作系统,不同机型,不同屏幕等。
5,网路测试:不同网络与运营商,目前我国有三大运营商如:电信,移动,联通,不同的网络制式,如:GSM,CDMA,3G等,在不好或无网络的情况下的APP行为。
6,操作系统:大量的设备,各种的操作系统,目前使用最多的操作系统有:
Android,ios,windows,blackberry等,它们之间的应用软件互不兼容。
如设备不同:触摸式与非触摸式设备,有限的内存容量,电池耗电量,屏幕尺寸,分辨率等。
9:接口测试用例内容
测试用例编号,所属模块,测试标题,接口功能,请求路径,请求方式,请求参数,请求头,请求体,预期结果,实际结果
10:接口测试流程
拿到接口文档,分析接口文档中的功能,请求方式,参数,路径,响应文本,参数长度,类型,是否唯一,是否必填,编写测试用例,使用工具执行接口测试用例
11:如何实现多接口关联
将第一个接口设置断言,拿到返回体内容转成json对象,通过json表达式提取想要的值,将这个值设置全局变量,在第二个接口中使用{{变量名}}代替,实现接口关联
12:接口中常见的断言有哪些
Tests响应断言的几种方式
(1)Status code:code is 200 (校验响应头是否包含某个值)
(2)response body:contains string (校验返回结果中是否包含某个字符串)
(3)response body:Json value check (校验返回结果中某个字段是否等于某个值)
(4)response header:content-type header check (校验响应头是否包含某个值)
(5)response time is less than200ms (校验响应时间是否少于200ms)
(6)response body:Is equal to string (校验返回结果中是否等于该字符串)使用少
13:数据库的增删改查以及多表联查语句
1:insert into table values(内容)
2:UPDATE table set 字段等于新值 where + 条件
3:delete from table where + 条件
4:droP frrom table where + 条件
5:select 表一.字段,表二.字段 from 表一 inner join 表二 on 表一.字段 = 表二.字段 where + 条件
14:左右关联的区别
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
15:具体举例:
查询学生表中成绩最高的前三条数据:select * from 表名 order by sal desc limit 3;
查询学生表中姓张的信息:select * from 表名 where name like '张%'
查询学生表中男女生人的数量:select sex,count(id) from 表名 group by sex;
查询成绩在50到80之间的信息:select * from 表名 where sal between 50 and 80;
16:liunx基本命令
动态查看日志:tail -f
过滤关键字:greP 关键字
查询文件内容:tail -n 30 文件名
查询进程和杀进程:ps -ef | grep 进程名 kill -9 进程的pid
查询端口:netstat -an | grep 端口号
查询cpu/内存/磁盘: cpu:top 内存:free 磁盘:df -h
查询文件名的路径:pwd
压缩和解压tar包;tar -zcvf 包名.tar 要打包的目录/文件 tar -xvf 包名.tar
17:Linux中环境的搭建和项目的部署
如何配置jdk,tomcat和MySQL,以及.war包的操作:
#### JDK:
1.安装jdk
如果有自带,先卸载再装
2.把包复制/usr/local
3.解压
4.配置环境变量
5.检查java是否安装成功
java -version
#### Tomcat:
1.安装tomcat
2.把下载的tomcat包复制/usr/local
3.解压
4.在tomcat/bin目录执行startup.sh文件
启动服务
在浏览器中连接:IP:8080
5.如果连接不上,但tomcat又是显示启动OK,检查firewall
路径为 /etc/sysconfig/iptables,将8080端口开启
6重启服务
#### Mysql数据库
mysql安装比较简单,可以使用源码安装,也可以使用yum在线安装,在这里简单地介绍一下yum在线安装
用yum在线安装
\1. rpm -qa|grep mysql --检查linux是否有存在的mysql
2.如果有mysql,卸载
rpm -e --nodeps mysql
3.安装
yum install mysql-server mysql mysql-dev -y
4.安装成功后,启动服务
service mysqld start
service 服务名 restart/start
5.直接输入mysql 进入到数据库。
18:如何定位问题(charles)
使用抓包工具抓取该接口,查看接口的请求数据(请求行,请求头,请求参数),如果请求有问题那么是前端的问题
如果请求没有问题,响应数据有问题(响应头,响应内容),那么是后端的问题
19:Charles中常见的操作
下载证书:
点击help,然后点击SSL Proxying接着点击install Charles Root Certificate 出现证书界面,点击安装证书,存储位置选择当前用户,点击下一页跳转到“证书导入向导”页面点击将所有的证书都放入下列存储,然后点击浏览选择受信任的根证书颁发机构然后点击确定点击下一页,最后点击完成,弹出导入成功框,点击确定
断点调试:
1. 选中接口右击 选择break points(断点)
2. 点击proxy(代理)选择break points settings (设置断点)
3. 点击接口修改query(参数)为* request勾选 点击ok保存
4. 重新请求接口 点击edit request 返回值所有的字符都可以修改
5. 刷新页面 请求接口 点击abort(终止)
弱网测试:
1. 点击proxy(代理) 选择 throttle settings(节流阀调整) 勾选 enable throttling(使用节流阀) 修改 宽带: 上限值 下限值 带宽的利用率:上限值 下限值 数据传输往返延迟时间值 最大传输字节量 可靠性 网速不稳定性的占比等 点击ok保存
2. 打开throt setting 版本3.0是红旗 4.0的是乌龟
本地修改:
1. 在接口处鼠标右击 选择breakpoints(断言)
2. 点击proxy(代理)选择Breakpoint settings(设置断点)
3. 点击钻到的接口 修改query(参数)为* request勾选 输完值 点击ok保存变量
4. 重新请求接口 edit request(编辑要求) 在 channelID(通道) 点击具体值 修改 添加或删除
5. 关掉 break point(断点) 点击 abort(终止)
20:登录/注册的测试用例
前置条件 有效等价类 无效等价类
账号 账号存在且为6-10位自然数 1,小于六位数 2,大于10位数 3,非自然数 4,特殊符号 5,空格 6,空 7,含字母 8,账号未注册 9,账号已冻结
密码 6-12位数字,字母,字符 1,小于六位数 2,大于12位数 3,特殊符号 4,空格 5,空 6,含有中文 7,纯数字 8,纯字母 9,纯字符
测试用例编号 所属模块 所属有效/无效 前置条件 输入数据 执行操作 预期结果 用例级别 实际结果
dl_001 登录 有效 账号:6-10的自然数,密码:6-12的数字,字母。字符 1,输入账号123456,输入密码a12345 1,输入账号,2,输入密码,3点击登录 登录成功 高
dl_002 登录 无效 账号为5位 1,输入账号12345,输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号错误 高
dl_003 登录 无效 账号为11位 1,输入账号1234567891,输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号错误 高
dl_004 登录 无效 账号有非自然数 1,输入账号12345&/输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号错误 高
dl_005 登录 无效 账号有特殊符号 1,输入账号12345@,输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号错误 中
dl_006 登录 无效 账号有空格 1,输入账号1234 5,输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号错误 中
dl_007 登录 无效 账号有字母 1,输入账号1234aa,输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号错误 中
dl_008 登录 无效 账号为空 1,输入账号 输入密码a12345 1,输入密码,2,点击登录 请输入账号 中
dl_009 登录 无效 账号不存在 1,输入账号12345678,输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号不存在 中
dl_010 登录 无效 账号已冻结 1,输入账号123456,输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号已冻结 中
dl_011 登录 有效 密码为6-12位数字,字母,字符 1,输入账号123456,输入密码a12345 1,输入账号,2,输入密码,3点击登录 登录成功 中
dl_012 登录 无效 密码小于6位数 1,输入账号123456,输入密码a1234 1,输入账号,2,输入密码,3点击登录 账号错误 中
dl_013 登录 无效 密码大于12位 1,输入账号123456,输入密码a12345678912 1,输入账号,2,输入密码,3点击登录 密码错误 中
dl_014 登录 无效 密码有特殊符号 1,输入账号123456,输入密码a1234!》 1,输入账号,2,输入密码,3点击登录 密码错误 中
dl_015 登录 无效 密码中有空格 1,输入账号123456,输入密码a12 45 1,输入账号,2,输入密码,3点击登录 密码错误 中
dl_016 登录 无效 密码为空 1,输入账号123456,输入密码 1,输入账号,2,点击登录 请输入密码 中
dl_017 登录 无效 密码中有中文 1,输入账号123456,输入密码:晴天 1,输入账号,2,输入密码,3点击登录 密码错误 中
dl_018 登录 无效 密码为纯数字 1,输入账号123456,输入密码1111111 1,输入账号,2,输入密码,3点击登录 密码错误 中
dl_019 登录 无效 密码为纯字母 1,输入账号123456,输入密码aaaaaaa 1,输入账号,2,输入密码,3点击登录 密码错误 中
dl_020 登录 无效 密码为纯字符 1,输入账号123456,输入密码&*%$@#$ 1,输入账号,2,输入密码,3点击登录 密码错误 中
21:编写测试用例的方法和对应场景
等价类划分:
前置条件 有效等价类 无效等价类
账号 账号存在且为6-10位自然数 1,小于六位数 2,大于10位数 3,非自然数 4,特殊符号 5,空格 6,空 7,含字母 8,账号未注册 9,账号已冻结
密码 6-12位数字,字母,字符 1,小于六位数 2,大于12位数 3,特殊符号 4,空格 5,空 6,含有中文 7,纯数字 8,纯字母 9,纯字符
测试用例编号 所属模块 所属有效/无效 前置条件 输入数据 执行操作 预期结果 用例级别 实际结果
dl_001 登录 有效 账号:6-10的自然数,密码:6-12的数字,字母。字符 1,输入账号123456,输入密码a12345 1,输入账号,2,输入密码,3点击登录 登录成功 高
dl_002 登录 无效 账号为5位 1,输入账号12345,输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号错误 高
dl_003 登录 无效 账号为11位 1,输入账号1234567891,输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号错误 高
dl_004 登录 无效 账号有非自然数 1,输入账号12345&/输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号错误 高
dl_005 登录 无效 账号有特殊符号 1,输入账号12345@,输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号错误 中
dl_006 登录 无效 账号有空格 1,输入账号1234 5,输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号错误 中
dl_007 登录 无效 账号有字母 1,输入账号1234aa,输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号错误 中
dl_008 登录 无效 账号为空 1,输入账号 输入密码a12345 1,输入密码,2,点击登录 请输入账号 中
dl_009 登录 无效 账号不存在 1,输入账号12345678,输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号不存在 中
dl_010 登录 无效 账号已冻结 1,输入账号123456,输入密码a12345 1,输入账号,2,输入密码,3点击登录 账号已冻结 中
dl_011 登录 有效 密码为6-12位数字,字母,字符 1,输入账号123456,输入密码a12345 1,输入账号,2,输入密码,3点击登录 登录成功 中
dl_012 登录 无效 密码小于6位数 1,输入账号123456,输入密码a1234 1,输入账号,2,输入密码,3点击登录 账号错误 中
dl_013 登录 无效 密码大于12位 1,输入账号123456,输入密码a12345678912 1,输入账号,2,输入密码,3点击登录 密码错误 中
dl_014 登录 无效 密码有特殊符号 1,输入账号123456,输入密码a1234!》 1,输入账号,2,输入密码,3点击登录 密码错误 中
dl_015 登录 无效 密码中有空格 1,输入账号123456,输入密码a12 45 1,输入账号,2,输入密码,3点击登录 密码错误 中
dl_016 登录 无效 密码为空 1,输入账号123456,输入密码 1,输入账号,2,点击登录 请输入密码 中
dl_017 登录 无效 密码中有中文 1,输入账号123456,输入密码:晴天 1,输入账号,2,输入密码,3点击登录 密码错误 中
dl_018 登录 无效 密码为纯数字 1,输入账号123456,输入密码1111111 1,输入账号,2,输入密码,3点击登录 密码错误 中
dl_019 登录 无效 密码为纯字母 1,输入账号123456,输入密码aaaaaaa 1,输入账号,2,输入密码,3点击登录 密码错误 中
dl_020 登录 无效 密码为纯字符 1,输入账号123456,输入密码&*%$@#$ 1,输入账号,2,输入密码,3点击登录 密码错误 中
边界值:
场景法:
1:什么是场景法?
通过场景描述的业务流程(业务逻辑),也包括代码实现逻辑,设计用例来遍历场景,验证软件系统功能的正确 性
2:如何使用场景法
2.1:画出流程图--产品需求文档,画好了;或者是需要测试自己画--wps,office-visio,在线processon
矩形:表示步骤(操作,输入,输出结果) 菱形:判断条件--是,否 箭头:流向
2.2:遍历场景,提取测试用例
1)覆盖正常的路径--冒烟测试 2)走每一个分支--找菱形--正常场景下没有覆盖的路径,分支 3)出错步骤重新回到主流程,建议多走一走正确的步骤
注意:场景法的重点是测试流程,因此每个流程一个用例验证即可,流程测试没有问题并不能说明系统
功能没有问题了,还需要针对单步的功能进行测试,---输入项
只有单个功能点和流程流程测试,才算的充分的测试+等价类,边界值-----细化测试
正交实验:
正交表能够在因素变化范围内均衡抽样,使每次试验都具有较强的代表性,由于正交表具备均衡分散
的特点,保证了全面实验的某些要求,这些试验往往能够较好或更好的达到实验的目的。
工具正交助手
错误推测:
例如,测试手机终端的通话功能,可以设计各种通话失败的情况来补充测试用例:
1) 无SIM 卡插入时进行呼出(非紧急呼叫)
2) 插入已欠费SIM卡进行呼出
3) 射频器件损坏或无信号区域插入有效SIM卡呼出
4) 网络正常,插入有效SIM卡,呼出无效号码(如1、888、333333、不输入任何号码等)
5) 网络正常,插入有效SIM卡,使用“快速拨号”功能呼出设置无效号码的数字
使用场景:(考虑的可能不全)不单独使用---可以作为其他方法的补充!
22:测试点(保温杯/电梯等)
功能:
1、倒水到水平线,看是否会漏
2、水位超过水平线,观察保温杯
3、水倒满直到溢出来,看是否会对水杯产生什么影响
4、水杯的刻度与其他水杯是否一致,例如500ML的水杯
5、水杯是否有盖子,盖子是否可以正常盖住
6、水杯是否有保温功能,保温功能是否能正常保温
7、水杯是否可以正常喝水
8、水杯是否会漏水,盖紧盖子后是否会漏水
9、水杯能否放进冰箱
10、水杯是否可以折叠
性能:
1、水杯装满水会不会漏水
2、水杯的保温性能是否达到要求
3、水杯的耐热性是否达到要求
4、水杯的耐寒性是否达到要求
5、水杯使用的最大次数限制
6、水杯掉地上是否还可以正常使用
7、盖子拧紧到什么程度水杯水不会漏出来水杯上放置重物达到什么程度水杯会损坏
界面:
1、水杯的外观是否完整
2、水杯外观看起来是否舒适
3、水杯大小与设计(说明书)是否一致 从高、宽、容量、直径方面
4、水杯材质与设计(说明书)是否一致
5、水杯的颜色搭配是否舒适
6、水杯是否有图案,图案易不易破损
易用:
1、倒水是否方便
2、拿着是否舒服(符合人体结构学)
3、杯口设计喝水是否方便
4、使用是否简单,容易操作
5、是否防滑
6、水杯携带是否方便
7、水杯装有高温或者低温水时,会不会让人感到不适
安全:
1、水杯装上水之后是否会产生有毒物质
2、水杯在高温环境中是否会产生有毒物质
3、水杯在0下环境中是否会产生有毒物质
23:常见的状态码
200:成功
301:永久重定向
302:临时重定向
403:服务器拒绝访问
404:服务器上无法找到请求的资源
500:服务器错误
503:服务器正在超负载或者停机维护,无法处理请求
24:session和cookie的区别
(1)cookie数据存放在客户的浏览器上,session数据放在服务器上
(2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session
(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE
(4)单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
(5)所以:将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中
25:如何通过postman实现自动化
newman是postman中一个nodejs库,newman可以更方便的运行和测试集合,并用它构造接口自动化测试和持续集成; 1:首先验证电脑上nodes是否安装成功;
验证node安装成功: win+r 输入cmd进入黑窗口,输入node -v 回车,出现node的版本号代表node安装成功. 安装newman:在黑窗口中,输入newman-v 回车,出现newman的版本号代表newman安装成功。 怎么验证newman是否安装成功: c盘中会有一个node,里面有一个newman_global,中有一个newman.cmd; 如果没有,使用everything软件,输入newman.cmd,查看cmd在那个目录中。
拿到对应的newman的目录路径设置环境变量。
newman常见参数:
生成测试报告:postman导出到本地的接口json,在黑窗口中输入(newman run 导出接口的存放地址路径)回车,在回车中生成测试报告;(postman中不能生成测试报告)。 下载html:在黑窗口中输入npm install -g newman-reporter-html;
newman run 导出接口的存放地址路径 -r -html --reporter-html-export 文件名.html,在c盘用户中会有一个html生成。
结合Jenkins进行持续集成
首先启动tomcat,进入tomcat/bin目录,双击startup.bat(win系统要启动startup.bat,startup.sh是启动在linux系统上),开启tomcat,另外把jenkins.war放在tomcat中的webapps中,启动tomcat后,会自动解压Jenkins,浏览器访问ip:8080/jenkins。