常见的面试题
1:公司流程
项目立项>>>产品说明书>>>需求文档>>>开发方向>>>概要设计>>>编码与实现>>>自测>>>测试方向>>>需求评审>>>编写测试用例>>>用例评审>>>提测>>>冒烟测试>>>功能测试>>>禅道提交bug>>>回归测试>>>验收测试>>>上线
?
2:测试计划内容
1:测试目的 2:测试背景 3:测试资源 4:测试范围 5:人员分配 6:时间安排 7:风险评估 8:测试范围
3:测试用例内容
测试编号 测试标题 所属模块 前置条件 优先级 操作步骤 预期结果 实际结果 是否通过
4:缺陷报告内容
缺陷标题 缺陷描述 严重程度 重现步骤 所属模块 测试环境 预期结果 实际结果
5:bug的生命周期
新建 指派 已修改 已打开 已关闭 已驳回
6:测试报告内容
引言 测试概要 测试结果 bug分析 测试结论与建议 bug统计
7:get/post区别(put和delete)
get提交数据,数据存放在URL中,长度受到限制,不安全 post获取数据,数据存放在bady中,没有长度限制,比较安全 put修改数据 delete删除数据
8:app和web的区别
1、web基于浏览器, app必须要有客户端
2、web关注响应时间,app还需要关注流量、电量、手机本身的硬件条件
3、兼容方面,web是浏览器兼容,选择不同的浏览器内核,app是手机,有不同品牌,android和ios系统,还需要看屏幕分辨率、屏幕尺寸,和其它app之间的兼容
4、网络环境,App还有不同网络环境,2G、3G、4G、wifi、断网,以及电信,移动,联通
5、硬件环境,App还需考虑异常场景:中断、关机、死机、重启等
6、交叉事件,接听电话、短信、邮件、其它操作
7、App有横屏和竖屏之分、溢屏、触屏和手势
8、Web直接连接服务器,app的取值方式可能是服务器、接口或本地缓存
9、升级、更新,Web更新无提示,直接进入浏览器就是最新,app是需要自己进行更新才能获取最新数据
10、web登录需要密码,除非设置的记住密码,App有免登录功能
9:接口测试用例内容
测试编号,测试标题,所属模块,前置条件,接口路径,请求参数,请求方式,测试环境,参数是否唯一,操作步骤,预期结果,实际结果,是否通过
10:接口测试流程
先拿到接口文档,分析接口文档中的功能,请求路径,请求参数,请求方式,参数的类型,参数的长度,参数是否必填,参数是否唯一,编写接口测试用例,用工具执行接口测试用例
11:如何实现多接口关联
将第一个接口的参数值转化为json对象,然后将json对象转化为json值,添加断言设置全局变量,第二个接口使用全局变量用{{}}的方式就可以实现多接口关联
12:接口中常见的断言有哪些
(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:数据库的增删改查以及多表联查语句
增:insert into 表名 vslues(值,值,值——)
删:delete from 表名 where 条件
改:update 表名 set 旧值=新值 where 条件
查:select * from 表名 where 条件
多表关联:select * from 表名1,表名2 where 表1.id = 表2.id
14:左右关联的区别
左关联:以左表为主表,左表所有的字段都会显示出来,而右表只会显示符合搜索条件的记录,右表没有的字段则会显示为null
右关联:以右表为主表,右表的所有字段都会显示出来,而左表只会显示符合搜索条件的记录,左表没有的字段则会显示为null
15:具体举例:
查询学生表中成绩最高的前三条数据:select * from 表名 order by desc limit 0,3;
查询学生表中姓张的信息:select * from 表名 where name = ‘张%’;
查询学生表中男女生人的数量:select count(*) from student group by sex;
查询成绩在50到80之间的信息:select * from 表名 where 成绩 between 50 and 80;
16:liunx基本命令
动态查看日志:tail -f 日志名
过滤关键字:grep 关键字 文件名
查询文件内容:cat 文件名
查询进程和杀进程:ps -ef 进程名 查看所有的进程 kill -9 进程名 杀死进程
查询端口:netstat -an 端口 查看端口号
查询cpu/内存/磁盘:cpu:top,内存:free,磁盘:df -h
查询文件名的路径:压缩和解压tar包:压缩打包tar:tar -zcvf 包名.tar 要打包的目录/文件。解压tar包:tar -xvf 包名.tar
17:Linux中环境的搭建和项目的部署
如何配置jdk,tomcat和MySQL,以及.war包的操作:
安装jdk,tomcat(配置环境) ? 1:从公司的工具库中拿到jdk.tar,tomcat.tar包 ? 2:通过远程连接工具(ssh/xshell)连接Linux服务器,将jdk和tomcat上传到服务器上 ? 3:首先解压jdk.tar包(tar -xvf),将解压的之后的jdk路径填写在配置文件中 ? 4:重启配置文件 ? 5:通过Java -version 判断是否安装成功,安装成功则显示jdk的版本信息(1.8.0的版本) ? 6:jdk配置成功之后,接下来解压tomcat.tar包(tar -xvf ) ? 7:开放8080端口 ? 8:在tomcat中的bin目录在,启动(./startup.sh), ? 9:在游览器中输入ip:8080,可以检验tomcat是否成功启动(如果tomcat没有启动,可以通过ps -ef | grep tomcat 查看tomcat进程是否开启,如果没有开启,,再次执行启动tomcat命令)
1:将开发的压缩包(.tar),解压之后,放到tomcat中的webapps目录下,重启tomcat(./startup.sh) ? 2:在游览器中输入ip:8080/解压后名称,查看项目
1:从公司的工具库中拿到mysql.tar包 ? 2:通过远程连接工具(ssh/xshell)连接Linux服务器,将mysql压缩包上传到服务器上 ? 3:解压mysql.tar包(tar -xvf ) ? 4:解压后的rpm文件,分别进行客户端和服务端的安装(rpm -ivh) ? 5:启动mysql(service mysql start) ? 6:将mysql加到系统服务中并设置开机启动 ? 7:登录mysql(msyql –u root -p) ? 8:修改密码(set password = password('xxx');) ? 9:需要设置开启远程登录mysql的权限 ? 10:开放Linux的对外访问的端口3306 ? 11:通过连接MySQL工具(navicat)直接访问
18:如何定位问题(charles)
首先使用charles抓取该接口,抓取到以后使用断点调试来查看是请求(请求体,请求头,请求路径)出错的话就是前端的错误。
是响应(响应头,响应文本信息)出错的话那么就是后端的问题
19:Charles中常见的操作
下载证书:代理端口默认为 8888(可以修改),并且勾上 Enable transparent HTTP proxying 就完成了在 Charles 上的代理设置。勾上 Enable SSL proxying 就完成了在 Charles 上的 SSL 代理设置。之后也可以选择 Add,然后填入需要监控的 Host 和 Port 信息,这样就达到了针对某个域名启用 SSL 代理的目的。
断点调试:Breakpoint Settings 和 Enable/Disable Breakpoints 配合使用,在 Enable Breakpoints 的状态下,可以通过 Breakpoint Settings 配置 Charles 的断点模式。勾选 Enable Breakpoints 启用断点模式,选择 Add,然后填入需要监控的Scheme、Procotol、Host 和 Port 等信息,这样就达到了设置断点的目的。然后可以来观察或者修改请求或者返回的内容,但是在这过程中需要注意请求的超时时间问题。或者可以在某个想要设置断点的请求网址上右击选择 Breakpoints 来设置断点。
弱网测试:Throttle Settings 和 Start/Stop Throttling 配合使用,在 Start Throttling 的状态下,可以通过 Throttle Settings 配置 Charles 的网速模拟配置。勾选 Enable Throttling 启用网速模拟配置,在 Throttle Preset 下选择网络类型即可,具体设置可以根据实际情况自行设置。如果只想模拟指定网站的慢速网络,可以再勾选上图中的 Only for selected hosts 项,然后在对话框的下半部分设置中增加指定的 hosts 项即可。
本地修改:Map Local 工具使您可以使用本地文件,就像它们是远程网站的一部分一样。您可以在本地开发文件,并像在线上一样测试它们。本地文件的内容将返回给客户端,就像它是正常的远程响应一样。
Map Local 可以大大加快开发和测试速度,否则您必须将文件上传到网站以测试结果。使用 Map Local,您可以在开发环境中安全地进行测试。
20:登录/注册的测试用例
用例编号 模块 标题 用例级别 优先级 前置条件 输入数据 执行操作 预期结果 实际结果
qq_dl_1 qq账号 验证输入账号大于等于6位小于等于10位的自然数,没有特殊字符 高 高 都是自然数 输入账号:1318013443 1:输入账号2:输入密码 提示“输入账号成功,注册成功”
qq_dl_2 qq密码 验证输入密码大于等于6位小于等于12位的字符和字母,没有特殊字符 高 高 大于等于6位小于等于12位 输入密码:hzc123 1:输入账号2:输入密码 提示“输入密码成功,注册成功”
qq_dl_3 qq账号 验证输入账号小于6位 中 中 都是自然数 输入账号:123 1:输入账号2:输入密码 提示“输入账号失败,账号长度大于等于6位小于等于10位”
qq_dl_4 qq账号 验证输入账号大于10位 中 中 都是自然数 输入账号:12345678910 1:输入账号2:输入密码 提示“输入账号失败,账号长度大于等于6位小于等于10位”
qq_dl_5 qq账号 验证输入账号有特殊字符 中 中 账号大于等于6位小于等于10位 输入账号:1233456¥ 1:输入账号2:输入密码 提示“输入账号失败,账号不能输入特殊字符”
qq_dl_6 qq账号 验证输入账号为中文 中 中 账号大于等于6位小于等于10位 输入账号:1233456我 1:输入账号2:输入密码 提示“输入账号失败,账号不能输入非数字类型”
qq_dl_7 qq账号 验证输入账号为英文 中 中 账号大于等于6位小于等于10位 输入账号:1233456a 1:输入账号2:输入密码 提示“输入账号失败,账号不能输入非数字类型”
qq_dl_8 qq账号 验证输入账号为负数 中 中 账号大于等于6位小于等于10位 输入账号:-12334561 1:输入账号2:输入密码 提示“输入账号失败,账号不能输入特殊字符”
qq_dl_9 qq密码 验证输入密码小于6位 中 中 小于等于12位 输入密码:hzc12 1:输入账号2:输入密码 提示“输入密码长度不够,注册失败”
qq_dl_10 qq密码 验证输入密码大于12位 中 中 大于等于6位 输入密码:111111111111 1:输入账号2:输入密码 提示“输入密码长度过长,注册失败”
qq_dl_11 qq密码 验证输入密码有空格 中 中 大于等于6位小于等于12位 输入密码: 1111111 1:输入账号2:输入密码 提示“不能有空格,注册失败”
21:编写测试用例的方法和对应场景
等价类划分:等价类划分法是将所有程序的输入域划分成若干个子集合(等价类),然后从每一个子集合中选取少数具有代表性的数据作为测试的输入数据,?在该值集合中,所有的输入数据对于揭露软件中的错误都是等价的,等价类划分法分为有效等价类跟无效等价类。
场景:微信发红包有效等价类:1)1~100 4)数值 ? 6)整数。+无效等价类:2)小于1 ? 3)大于100 ? 5)非数值(中文,特殊符号,字母,空格,空白) ? 7)小数
边界值:边界值分析法是对等价类划分法的一个补充,边界值一般都是从等价类的边缘值去寻找
场景:如果需求规定范围或者规定了取值的个数时,可利用边界值进行测试
场景法:通过场景描述的业务流程(业务逻辑),也包括代码实现逻辑,设计用例来遍历场景,验证软件系统功能的正确 性
场景:画出流程图--产品需求文档,画好了;或者是需要测试自己画--wps,office-visio,在线processon
正交实验:表单中有很多的参数需要提交的时候可以使用正交表法
场景:表单中有很多的参数需要提交的时候可以使用正交表法
错误推测:例如,测试手机终端的通话功能,可以设计各种通话失败的情况来补充测试用例:
1) 无SIM 卡插入时进行呼出(非紧急呼叫)
2) 插入已欠费SIM卡进行呼出
3) 射频器件损坏或无信号区域插入有效SIM卡呼出
4) 网络正常,插入有效SIM卡,呼出无效号码(如1、888、333333、不输入任何号码等)
5) 网络正常,插入有效SIM卡,使用“快速拨号”功能呼出设置无效号码的数字
22:测试点(保温杯/电梯等)
功能:按钮功能,开门(运行中按开门键不开门),关门,电梯内按钮功能(电梯按键在按下时是否点亮,按错楼层是否可以取消);上升,下降(每一层申请是否有效,是否可以正常停靠),超载时是否会忽略其它楼层的上行和下行申请,电梯的两边按钮是否都可以使用;电梯内电话、灯光等
性能:反应时间、关门时间、速度(是否造成人体不适)
界面:电梯内部是否美观,电梯内部是否配有扶手,电梯的样式是什么样子的
易用: 使用的寿命,是否能够使用几年不晃动,是否方便各种客户接收,是否能够接受电梯不是品牌。
安全:乘坐10个人的话会不会不稳导致事故发生,载物的话会不会晃动,电梯的揽绳是否定期更换,电梯的紧急联系电话是否能够打的通
保温杯的测试用例1、功能测试:能否装水、除了装水?、能否装其他液体,比如可乐,酒精能装多少ML的水杯子是否有刻度表杯子能否泡茶、跑咖啡杯子是否能放冰箱、做冰块杯子的容量是否于需求一致
?2、性能测试:能否装100度的开水 (泡茶),能否装0度冰水,装满水,长时间放置是否漏水(7*24),能否使用的最大的次数(漏水),杯子内壁上的涂料是否容易脱落。,杯子上的颜色是否容易褪色或者脱落,掉在地上不易摔碎,如果是有盖子的,?盖子拧多紧不会漏水
3、界面测试:?外观好不好看,什么颜色,杯子的形状是怎么样的。杯子的图案是否合理,杯子外观是否简单,美观,杯子大小是否一致,杯子的材质是否与需求一致
?4、安全测试:制作杯子的材料,是否有毒,放微波炉里转的时候,是否会熔化。,杯子盛放热水是否释放难闻气味(毒味),杯子是否容易滋生细菌,杯子内壁上的材料,是否会溶解到水中,装进不同液体,是否会有化学反应。
5、易用测试:?杯子是否容易烫手,杯子是否好端,好拿,杯子的水是否容易喝到,杯子是否有防滑措施,是否能接受杯子的广告内容与图案。
23:常见的状态码
200:请求已正常处理
301:资源的uri已更新
302:资源的URI已临时定位到其他位置了
403:不允许访问那个资源
404:服务器上没有请求的资源
500:内部资源出故障了
503:该状态码表明服务器暂时处于超负载或正在停机维护,现在无法处理请求。
24:session和cookie的却别
1、存储位置不同
cookie的数据信息存放在客户端浏览器上。
session的数据信息存放在服务器上。
2、存储容量不同
单个cookie保存的数据<=4KB,一个站点最多保存20个Cookie。
对于session来说并没有上限,但出于对服务器端的性能考虑,session内不要存放过多的东西,并且设置session删除机制。
3、存储方式不同
cookie中只能保管ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据。
session中能够存储任何类型的数据,包括且不限于string,integer,list,map等。
4、隐私策略不同
cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行cookie欺骗,所以它是不安全的。
session存储在服务器上,对客户端是透明对,不存在敏感信息泄漏的风险。
5、有效期上不同
开发可以通过设置cookie的属性,达到使cookie长期有效的效果。
session依赖于名为JSESSIONID的cookie,而cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session不能达到长期有效的效果。
6、服务器压力不同
cookie保管在客户端,不占用服务器资源。对于并发用户十分多的网站,cookie是很好的选择。
session是保管在服务器端的,每个用户都会产生一个session。假如并发访问的用户十分多,会产生十分多的session,耗费大量的内存。
7、浏览器支持不同
假如客户端浏览器不支持cookie:
cookie是需要客户端浏览器支持的,假如客户端禁用了cookie,或者不支持cookie,则会话跟踪会失效。关于WAP上的应用,常规的cookie就派不上用场了。
运用session需要使用URL地址重写的方式。一切用到session程序的URL都要进行URL地址重写,否则session会话跟踪还会失效。
假如客户端支持cookie:
cookie既能够设为本浏览器窗口以及子窗口内有效,也能够设为一切窗口内有效。
session只能在本窗口以及子窗口内有效。
8、跨域支持上不同
cookie支持跨域名访问。
session不支持跨域名访问。
25:如何通过postman实现自动化
postman+newman+jenkins
接口自动化测试:Newman 是 Postman 推出的一个 nodejs 库,Newman 可以方便地运行和测试集合,并用之构造接口自动化测试和持续集成
简介:
1:安装和配置
安装node.js
验证:node.js是否安装成功
node -v
安装newman:npm install -g newman
配置newman环境:
验证:newman是否安装成功
newman -v
2:newman的命令
常见的参数
-e: 使用环境变量
-g: 使用全局变量
-d: 使用csv,text,json数据驱动
-n:循环次数
-r :cli,html,json,junit --reporter-html-export
命令:
newman run C:\Users\jack\Desktop\postman_collection.json
生成测试报告
首先下载html:npm install -g newman-reporter-html
newman run C:\Users\jack\Desktop\postman_collection.json -r html --reporter-html?export report123.html
3:结合Jenkins进行持续集成
?
|