1:公司流程
立项——产品说明书——需求文档的编写——需求文档的评审——(开发)详细概要设计——编写代码——自测——提测
——(测试)编写测试计划——编写测试用例——测试用例的评审——测试环境的搭建——冒烟测试——功能测试——bug管理——回归测试——验收测试——上线
2:测试计划内容
测试目的、测试背景、测试资源、测试范围、测试环境、测试人员分配、时间分配、风险评估
3:测试用例内容
用例编号、测试模板、用例标题、用例级别、前置条件、输入数据、执行步骤、预期结果、实际结果、是否通过
4:缺陷报告内容
缺陷编号、缺陷标题、缺陷状态、验证程度、优先级、重现步骤、缺陷类型、测试环境
5:bug的生命周期
首先测试人员提交Bug,这时Bug的状态标识为“新建”;开发经理确认后将Bug分配给相关的开发人员去处理,此时Bug状态为“已打开”;开发人员拿到指派给自己的Bug,开始进行处理,开发人员已经修复了该Bug后,设置Bug状态为“已修复”;测试人员拿到已经修复的Bug进行验证,如果验证通过,则将该Bug设置为“已关闭”状态;如果验证未通过,则将该Bug设置成“重新打开”
6:测试报告内容
测试目标、测试依据、测试范围、测试坏境、进度、回归测试、遗留多少bug、bug如何处理
7:get/post区别(put和delete)
get是请求数据、post是提交数据、put发送数据、delete删除数据
get参数放在url地址栏中,post参数放在请求体(body)中;所以post更安全
url长度有限制,所以get传递参数有长度限制,post传递参数没有长度限制
8:app和web的区别
相同点:都可以根据需求文档编写测使用例;都可以进行兼容测试:
app是c/s,做兼容测试时,测试手机型号,系统,版本.
web则是b/s,做兼容测试时,测的是浏览器(ie/谷歌)
区别:
cs运行速度比bs快.
cs开发成本比bs开发成本高
cs开发双端,bs只需要更新后端.
cs比bs安全
9:接口测试用例内容
用例编号、所属模块、测试标题、接口功能、请求路径、请求方式、请求参数、请求头、请求体、预期结果、实际结果
10:接口测试流程
首先拿到接口文档,分析接口文档中的接口功能,请求路径,请求方式,请求参数,响应文本,参数类型,参数是否必填,参数的长度,参数是否唯一,编写测试用例,使用工具执行接口测试用例
11:如何实现多接口关联
将第一个接口设置断言,拿到返回体后转为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:数据库的增删改查以及多表联查语句
搜索:select * from 表名 where 条件
添加值:insert into 表名 values(字段值1,字段值2,......)
修改:update 表名 set 字段=新值 where 条件
删除:delete from 表名 where 条件
表关联:select 表1.字段,表2.字段,表3.字段 from 表1 inner join 表2 on 表1.字段=表2.字段 inner join 表3 on 表1.字段=表3.字段 where 条件
14:左右关联的区别
左连接:以左表为主 右表没有显示为null
右连接:以右表为主 左表没有显示为null
15:具体举例:
查询学生表中成绩最高的前三条数据:select * from student order by score desc limit 3;
查询学生表中姓张的信息:select *from student where name like '张%';
查询学生表中男女生人的数量:select count(*) from student group by sex;
查询成绩在50到80之间的信息:select *from student where score between 50 and 80;
16:liunx基本命令
动态查看日志:tail -f 日志名
过滤关键字:grep 关键字 日志名
查询文件内容:cat/more/less/tail/head 文件名
查询进程和杀进程:ps -ef kill -9 进程pid
查询端口:netstat -an 查询某一端口: netstat -an | grep 端口号
查询cpu/内存/磁盘:top free df -h
查询文件名的路径:pwd
压缩和解压tar包: tar -zcvf 包名.tar 要打包的目录 tar -xvf 包名.tar
17:Linux中环境的搭建和项目的部署
如何配置jdk,tomcat和MySQL,以及.war包的操作:
jdk:
1)查看当前Linux系统是否已经安装java
输入 rpm -qa | grep java
2)卸载两个openJDK
输入rpm -e --nodeps 要卸载的软件
3)上传jdk到linux
4)安装jdk运行需要的插件yum install glibc.i686(选做)
5)解压jdk到/usr/local下 tar –xvf jdk-7u71-linux-i586.tar.gz –C /usr/local
6)配置jdk环境变量,打开/etc/profile配置文件,将下面配置拷贝进去
\#set java environment
JAVA_HOME=/usr/local/jdk/jdk1.8.0_131
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
7)重新加载/etc/profile配置文件 source /etc/profile
验证:java –version
mysql:
1)查看CentOS自带的mysql
输入 rpm -qa | grep mysql
2)将自带的mysql卸载
3)上传Mysql到linux
4)解压Mysql到/usr/local/下的mysql目录(mysql目录需要手动创建)内
cd /usr/local
mkdir mysql
tar -xvf MySQL-5.6.22-1.el6.i686.rpm-bundle.tar -C /usr/local/mysql
5)在/usr/local/mysql下安装mysql
安装服务器端:rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm
安装客户端:rpm -ivh MySQL-client-5.6.22-1.el6.i686.rpm
6)启动mysql
service mysql start
7)将mysql加到系统服务中并设置开机启动
加入到系统服务:chkconfig --add mysql
自动启动:chkconfig mysql on
8)登录mysql(5.5的版本为空)
mysql安装好后会生成一个临时随机密码,存储位置在/root/.mysql_secret
msyql –u root -p
9)修改mysql的密码
set password = password('root');
10)开启mysql的远程登录
默认情况下mysql为安全起见,不支持远程登录mysql,所以需要设置开启 远程登录mysql的权限
登录mysql后输入如下命令:
grant all privileges on . to 'root' @'%' identified by 'root';
flush privileges;
11)开放Linux的对外访问的端口3306
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save ---将修改永久保存到防火墙中
tomcat:
1)上传Tomcat到linux上
2)解压Tomcat到/usr/local下
3)开放Linux的对外访问的端口8080
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
/etc/rc.d/init.d/iptables save
4)启动关闭Tomcat
进入tomcat的bin下启动:./startup.sh
进入tomcat的bin下关闭:./shutdown.sh
.war包
1:将jemkins.war包拷贝到tomcat中的webapps目录下即可
2:查看webapps目录下会有自动解压的Jenkins目录
3:重启tomcat
4:访问项目,具体Jenkins的安装查考"Jenkins的部署文档
18:如何定位问题(charles)
通过charles抓取接口,查看请求的数据(请求头,请求参数,请求体)是否有问题,如果有就是前端的问题,没有查看响应数据(响应头,相应行,响应体)有问题则是后端的问题
19:Charles中常见的操作
下载证书:
https://www.jianshu.com/p/8346143aba53
断点调试:
先使用charles抓取接口,然后右击接口breakpoints,并且复制url,然后点击proxy的breakpoints settings, host粘贴url,query修改为*,点击request或者response,点击ok,刷新页面,抓取接口,修改参数
弱网测试:
1)打开charles工具,选择proxy
2)点击proxy中的Throttle settings,打开网络设置页面
3)首先勾选Enable Throttling,在Throttling preset中可以选择工具默认配置的一些网络状况
4)不使用工具自带的配置的话可以自己填写各个参数的值
配置参数解析:bandwidth —— 带宽,即上行、下行数据传输速度utilisation —— 带宽可用率,大部分modern是100%round-trip latency —— 第一个请求的时延,单位是ms。MTU —— 最大传输单元,即TCP包的最大size,可以更真实模拟TCP层,每次传输的分包情况。Releability —— 指连接的可靠性。这里指的是10kb的可靠率。用于模拟网络不稳定。Stability —— 连接稳定性,也会影响带宽可用性。用于模拟移动网络,移动网络连接一般不可靠。
5)具体设置值的大小对应网络状况如下
6)如果测试中只需要只对部分域名的请求进行网络控制的话,勾选only for selected hosts选项,添加hosts
7)进入添加hosts页面,输入指定的参数,不需要的话填*号,填写完成后点击ok
8)最后点击ok完成配置
本地修改:
1).复制 response 内容,保存为 .txt 文件,存在电脑本地(不要出现中文)(注:保存后,将文件“另存为” 编码方式选择utf-8,防止乱码)
2).修改response指向(选中需要修改response值的接口 后点击右键,选中maplocal功能)
3).修改txt文件中 需要修改的字段值,保存
4).重新请求此接口,此时接口返回值已经是 txt文件中的期望值了
5).不用的时候,关掉maplocal。
20:登录/注册的测试用例
用例编号 模块 标题 用例级别 优先级 前置条件 输出数据 执行操作 预期结果 实际结果 是否通过
yx_001 验证邮箱地址是否正确 输入邮箱地址大于等于6小于等于18,且以字母开头 高 高 邮箱地址长度适合 输出数据:a142629219@126.com "1.输入邮箱号
2.进行验证" "1.邮箱号输入成功
2.邮箱格式正确"
yx_002 验证邮箱地址是否正确 输入邮箱地址大于等于6小于等于18,不以字母开头 中 中 邮箱地址长度适合 输出数据:142629219@126.com "1.输入邮箱号
3.进行验证" "1.邮箱号输入成功
3.邮箱格式不正确"
yx_003 验证邮箱格式是否正确 输入邮箱地址大于18,且以字母开头 中 中 邮箱地址长度适合 输出数据:a142629219456@128.com "1.输入邮箱号
4.进行验证" "1.邮箱号输入成功
4.邮箱格式不正确"
yx_004 验证邮箱地址是否正确 输入邮箱地址小于6,且以字母开头 中 中 邮箱地址长度适合 输出数据:a14262@129.com "1.输入邮箱号
5.进行验证" "1.邮箱号输入成功
5.邮箱格式不正确"
yx_005 验证密码格式是否正确 输入密码长度大于等于6小于等于16,且区分大小写 高 高 邮箱地址长度适合 输出数据:a142629219@130.com "1.输入密码
6.进行验证" "1.密码输入成功
6.密码格式正确"
yx_006 验证密码格式是否正确 输入密码长度大于等于6小于等于23,不区分大小写 中 中 邮箱地址长度适合 输出数据:a142629219@131.com "1.输入密码
7.进行验证" "1.密码输入成功
7.密码格式不正确"
yx_007 验证密码格式是否正确 输入密码长度小于6,且区分大小写 中 中 邮箱地址长度适合 输出数据:a142629219@132.com "1.输入密码
8.进行验证" "1.密码输入成功
8.密码格式不正确"
yx_008 验证密码格式是否正确 输入密码长度大于25,且区分大小写 中 中 邮箱地址长度适合 输出数据:a142629219@133.com "1.输入密码
9.进行验证" "1.密码输入成功
9.密码格式不正确"
yx_009 验证二次密码是否正确 二次密码与密码相同 高 高 输出数据:a142629219@134.com "1.输入邮箱号
10.进行验证" "1.密码输入成功
9.密码格式正确"
yx_010 验证二次密码是否正确 二次密码与密码不相同 中 中 输出数据:a142629219@135.com "1.输入邮箱号
11.进行验证" "1.密码输入成功
9.密码格式不正确"
21:编写测试用例的方法和对应场景
等价类划分:当测试需要数据量过大,且数据操作可以分类时进行等价类划分(微信发红包)
边界值:如果需求规定范围或者规定了取值的个数时,可利用边界值进行测试
场景法:通过场景描述的业务流程(业务逻辑),也包括代码实现逻辑,设计用例来遍历场景,验证软件系统功能的正确
性(请假)
正交实验:在一个界面中有多个控件,每个控件有多个取值,控件之间可以相互组合(n=k*(m-1)+1)
错误推测:(考虑的可能不全)不单独使用---可以作为其他方法的补充!(手机无法通信)
22:测试点(保温杯/电梯等)
功能:
能否装水,
除了装水, 能否装其他液体。比如可乐,酒精
能装多少ML的水
杯子是否有刻度表
杯子能否泡茶,泡咖啡
杯子是否能放冰箱,做冰块
杯子的材质是什么(玻璃,塑料,黄金做的)
性能:
能否装100度的开水 (泡茶)
能否装0度冰水
装满水,放几天后,是否会漏水
杯子内壁上的涂料是否容易脱落。
杯子上的颜色是否容易褪色或者脱落
风吹是否会倒,摔一次是否会摔坏,摔多次是否会摔坏
界面:
外观好不好看。
什么颜色
杯子的形状是怎么样的。
杯子的重量是多少
杯子的图案是否合理
易用:
杯子是否容易烫手
杯子是否好端,好拿
杯子的水是否容易喝到
杯子是否有防滑措施
是否能接受杯子的广告内容与图案
安全:
制作杯子的材料,是否有毒
放微波炉里转的时候,是否会熔化。
从桌子上掉到水泥地上是否会摔碎。
杯子是否容易长细菌
杯子内壁上的材料,是否会溶解到水中
装进不同液体,是否会有化学反应
23:常见的状态码
200:客户端请求成功
301:重定向 表示本网页永久性转移到另一个地址
302:该资源原本确实存在,但已经被临时改变了位置
401:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403:服务器收到请求,但是拒绝提供服务
404:请求资源不存在,eg:输入了错误的URL
500:服务器发生不可预期的错误
503:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
24:session和cookie的却别
cookie是明文传输 session的是隐藏传输
cookie是存在于本机 session是存在于服务器
cookie的大小是限制在4k session大小限制在5M
25:如何通过postman实现自动化
1.请求
1)请求方式;
2)url;
3)参数;
4)body;
5)预计脚本;
6)断言
2.响应
3.管理接口
1)历史记录;
2)接口集合;
3)批量执行;--------可用来造数据,比Python脚本快(比如需要大量数据,查看翻页以及记载等功能)
批量执行接口,可以实现数据驱动测试,对于不同的断言结果,可使用if,else进行分类。上传的文件可以是text文件也可以是csv文件,建议用json的数据格式。
操作步骤:单击run按钮,打开collection runner页面,设置执行的脚本、环境、迭代次数等,点击run*开始执行。
|