初级软件测试技能学习总结
备注: 2020届本科,软件工程专业,目前求职中。 以后希望从事软件测试工作故自学测试必备技能。希望跟我有相似经历也想入门软件测试的朋友看后能有所帮助。
我是从6月份开始学习的主要是看B站上的学习视频,遇到问题就百度…
基本技能
1.1熟悉Oracle等大型数据库,熟练掌握SQL语言
数据库开发工具:
Oracle数据库使用的是PLsql
Mysql数据库使用的是Nvicat Premiun
一、 查询实例
SELECT * from student;
1、select 查询字段 from 表名 where 查询条件
1)查询出某条件下的所有信息
#查询出表student中性别为男的所有学生信息
SELECT* FROM student WHERE stu_sex=“男”;
2)求和
#计算并查询出表student中name为Sheldon的学生的总分数
select sum(score) from student where name=“Sheldon”
3)求平均数 avg(X)
#计算并查询出表student中name为Sheldon的学生的平均分数
select avg(score) from student where name=“Sheldon”
4)求最小值:min(X)
#计算并查询出表student中name为Sheldon的学生的最低分数
select min(score) from student where name=“Sheldon”
5)求最大值 max(x)
#计算并查询出表student中name为Sheldon的学生的最高分数
select max(score) from student where name=“Sheldon”
6)对查询结果排列 (desc是逆序排序,asc是正序排序,asc可省略不写)
#查询homework表中stu_id="2016072086”的所有信息根据result逆序。
SELECT * FROM homework WHERE stu_id=“2016072086” ORDER BY result desc;
7)求总数(未去重)
#计算并查询出class为一班的班级学生总数(实际上只有两个学生)
SELECT COUNT(*) FROM homework WHERE stu_class=“一班”;
8)求总数(去重)distinct stu_id
#去重统计出class为一班的班级学生总数
SELECT COUNT(distinct stu_id) FROM homework WHERE stu_class=“一班”;
9)根据一个或多个列表字段进行分组统计查询
#统计每个班19岁以上的学生人数(执行顺序where过滤->分组->聚合函数)
select class,count(distinct age) from student where age>19 group by class;
HAVING:给分组设置条件
10)多表连接查询:
外连接
1.左连接 left join 或 left outer join
SQL语句:
select * from student left join score on student.Num=score.Stu_id;
2.右连接 right join 或 right outer join
SQL语句:
select * from student right join score on student.Num=score.Stu_id;
二、内连接 join 或 inner join
SQL语句:
select * from student inner join score on student.Num=score.Stu_id;
此时的语句就相当于:
select * from student,score where student.ID=course.ID;
11)嵌套查询:
表student 表info
#查询出所有学生的id,name和address
select a.id,a.name,(select b.address from info b where a.id=b.id) address from student a;
或者也可以用:
select a.id,a.name,b.address from student a,info b where a.id=b.id
二、 插入、修改和删除
插入:
insert into 表名(列名1,列名2,列名3,列名4) values (数据1,数据2,数据3,数据4)
insert into 表名values(数据1,数据2,数据3,数据4,数据5)
使用限制:插入的是表中的全部列时才可以使用
修改:
update 表名 set 列名1=新数据1,列名2=新数据2列名3=新数据3, where 查询条件
删除:
delete from 表名where 查询条件;
1.2熟练使用linux常用命令
一、Linux yum源的配置
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
sudo curl -o CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
二、常用命令:
1)sudo是linux下常用的允许普通用户使用超级用户权限的工具
练习1:linux联网
- Ip addr 查看是否联网
- 未联网 cd/etc/sysconfig/network-scripts/
- 进入/network-scripts,ls 查看文件目录
- Sudo vi ifcfg-ens33 (vi进入编辑)
- I 进入编辑模式
- 编辑成功后esc :wq 退出
- Ping www.baidu.com
- Ctrl+c 退出ping(强制退出正在执行的命令)
2)Reboot 重启
3)Yum 安装卸载软件
练习2远程连接
下载 Xshell
4)yum install 安装
5)yum update 更新
6)yum update XXX 更新某个软件
7)yum info XXX 显示XXX安装包信息
8)yum remove XXX 删除XXX程序包
9)rpm(linux下广泛使用的软件包管理器)
安装rpm软件包
rpm -ivh XXX.rmp 直接安装
rpm --force -ivh XXX.rpm 忽略报错,强制安装
卸载
rpm -e xxx
10)shutdown
shutdown -r now 重启
shutdown -h now 关机
11)reboot 重启
12)init 0 关机 init 6 重启
13)文件处理命令
mkdir 创建文件夹
mkdie -p a/b/c 创建多层文件夹a/b/c
mv 移动或重命名
ls 查看当前目录或其他目录的文件
ls -al 列出隐藏文件夹
cat 读取文件内容
cp 拷贝文件
cp -R 拷贝文件夹
touch 建立空文件
cd 进入某个目录 ./ 代表当前目录 …/代表上层目录
pwd 显示当前路径
注意:
Mv 命令
1:转移:将vvv转移到a目录下
操作:mv vvv a/
2.重命名:将文件vvv重命名为bbb
操作:mv vvv bbb
Ls -al命令
如果想隐藏文件时可在文件名前加 “.”
只有用ls -al 才能看到
14)文件查找命令
find 实际搜寻硬盘查询文件名称
which 查看各执行文件位置
whereis 查看文件的位置
locate 配合数据库查看文件位置,默认没有,需要安装
15)文件读取命令
tail 取尾部几行,跟踪读取,常用参数 -n -f
cat 由第一行显示文件内容
more 一页一页显示
less 一页一页显示,可以往前翻页
grep 过滤
| 管道符
注意:
以日志文件messages-20200605为例
Tail 命令
只想读取日志文件messages-20200605最后100行
Sudo tail -n 100 messages-20200605
日志文件每时每刻都在更新所以结合-f
Sudo tail -n5 -f messages-20200605
添加-f 一直向后个跟踪读取
退出时按q
管道符 |
Grep命令
过滤messages-20200605文件中有关network的内容
Sudo cat messages-20200605 | grep Network
16)其他文件操作命令
file 判断文件类型
ln 创建软连接
scp 传输文件
vi 文本编辑器
vim 文本编辑器(默认没有安装)
注意:
Scp 命令
发送文件
Scp me.txt (对方的用户名)@192.168.183.128:/home/**(对方路径)
发送文件夹(添加-r) Scp -r me(对方的用户名)@192.168.183.128:/home/(对方路径)
将对方的文件传送到自己这
将对方home/mike/me.txt(目录下的me文件)传送到自己的当前目录下(./)
1.3.软件测试必备网络知识
软件测试人员还应掌握一些基本网络知识
常见协议
- HTTP协议:超文本传输协议
HTTP协议包括的请求:
GET:请求读取由URL所标志的信息。
POST:给服务器添加信息。
PUT:在给定的URL下存储一个文档。
DELETE:删除给定的URL所标志的资源。 - TCP/IP协议
TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。
通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输目的地。而IP是给因特网的每一台联网设备规定一个地址。
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成是要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。 - UDP 协议
UDP 是 User Datagram Protocol 的简称, 中文名是用户数据报协议,是 OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768 是 UDP 的正式规范。 UDP在 IP 报文的协议号是 17(即 0x11)。
TCP与UDP的区别:
TCP是面向连接的,可靠的字节流服务
UDP是面向无连接的,不可靠的数据报服务
TCP可靠,保证数据完整性和重发以及差错控制
UDP不可靠
网络分类
目前最主要的三种网络
1.电信网络(俗称的电话网络)
2.有限电视网络
3.计算机网络(目前发展最快、信息时代核心技术)
OSI七层模型
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
OSI七层模型是由四层TCP/IP协议分化而来
应用层:会话层、表示层、应用层
传输层:传输层
网络层(又称互联层):网络层
网络接口层(又称链路层):物理层、数据链路层
。。。。。。。。。。。(有待补充)
软件测试初级技能
掌握软件测试理论,软件测试流程
熟悉软件测试的核心理念
掌握软件测试问题分析的方向和思维方法。。。
搭建测试环境
- 我们要确定是在那个系统上运行的,是Windows还是Linux或者是其他的系统,然后去对应安装。
- 安装服务器, Tomcat
- 安装jdk,配置环境变量
- 安装数据库,然后配置数据库,比如说mysql
- 安装浏览器:谷歌,火狐
数据库工具:NavicatPremium12。
项目工程包
将工程包上传至/tomcat/webapps/路径下。
功能测试
定义:功能测试也叫黑盒测试,采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。
黑盒测试试图发现以下类型的错误:
1)功能错误或遗漏;
2)界面错误;
3)数据结构或外部数据库访问错误;
4)性能错误;
5)初始化和终止错误。
接口测试
定义:接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
接口测试是保证高复杂性系统质量的内在要求和低成本的经济利益的驱动作用下的最佳解决方案,接口测试是一个完整的体系,也包括功能测试、性能测试
接口测试没有页面,它是通过接口规范文档上的调用地址、请求参数,拼接报文,然后发送请求,检查返回结果,所以它只需测入参和出参就行了,相对来说简单了不少。
常见接口:
1、webService接口:是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。可以使用的工具有SoapUI、jmeter、loadrunner等;
2、http api接口:是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。可以使用的工具有postman、RESTClient、jmeter、loadrunner等;
3、接口测试的适用范围
(1)接口测试一般应用于多系统间交互开发,或者拥有多个子系统的应用系统开发的测试。 接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供的接口,验证其正确性和稳定性。接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大。接口测试在淘宝网的应用是一个自下而上的发展过程。
(2)接口测试实施在多系统多平台的构架下,有着极为高效的成本收益比。接口测试天生为高复杂性的平台带来高效的缺陷检测和质量监督能力。平台越复杂,系统越庞大,做接口测试的效果就越明显。
流程:
接收接口文档 -> 编写接口用例 -> 编写脚本/调试 -> 进行持续集成
测试工具
-
Bug管理工具+Bug触发工具
Bugzilla 禅道
接口测试工具:postman -
Fiddler 抓包
2.1何为抓包?
做接口测试的时候,经常需要验证发送的消息是否正确,或者在出现问题的时候,查看手机客户端发送给server端的包内容是否正确,就需要用到抓包工具。
抓包是单接口测试,postman是做接口自动化的。Python+request接口自动化测试、Jmeter接口自动化测试。postman基于JS,Jmeter基于java。
2.2准备 -
Fiddler(原理)从下载到安装,配置
(1) 官网下载:https://www.telerik.com/fiddler
(2) 安装到指定目录(不要有中文)
(3) 安装成功后可以在“开始”中找到
(4) Fiddler第一次打开会提示是否更新,选择“NO”
(5) 开始配置,
- Fiddler的使用,抓包
界面了解
(1) 为会话添加备注信息
(2) 重新加载会话
(3) 删除
(4) 放行
(5) 响应模式
(6) 解码
(7) 查找会话
(8) 保存
(9) 截屏
显示抓包的信息记录
#:序列号1,2,3,4…
Result: Http响应码
Protocol:使用的协议(Http/Https。。)
Host:请求地址的域名
URL:请求路径及参数
Body:请求的大小
Caching:请求的缓存过期时间或缓存控制
Content-type:相应类型
Process:发出请求的Windows进程和进程ID
Comments:用户通过脚本或右键菜单给session添加的备注
Custom:用户可以通过脚本设置的自定义值
Http响应码:
成功
200:请求成功,请求方法为get或post或head或者trace。
201:请求成功并创建一个资源。
202:请求收到但未处理。
204:服务成功处理了请求但是不返回实体内容。
205:服务成功处理了请求但是不返回实体内容且要求请求者重置请求视图。
207:返回消息体为XML。
错误
400:语法错误,服务器无法理解请求。
401:未授权,当前请求需要验证。
403:服务理解请求但是拒绝执行。通常是无权限、黑名单、ip过于频繁访问等原因导致。
404:请求失败,服务器找不到请求资源。
405:该请求使用的方法被服务器禁止,比如某个接口只能用post请求,但是用了get请求则会报405。
407:类似于401,当前请求需要验证。
408:请求超时,表示客户端取消了请求或未能发送一个完整的请求。
409:该请求与服务器当前状态冲突。
410:请求资源已被删除。
413:请求提交的实体过长。
414:uri请求过长,这种情况可将get请求改为post请求。
415:媒体类型不支持。
500:服务器遇到了不知如何处理的情况。主要错误是服务器内部错误,主要为用户权限的问题导致,或者是数据库连接出现了错误。
501:服务器不支持请求使用的方法。
502:网关错误。可能原因:链接超时、服务器请求链接过多导致服务器无法正常响应。
503:服务不可用。
504:网关超时。
505:服务器不支持客户端发送的http请求所使用的http协议版本,需升级浏览器。
507:服务器有内部配置错误。
常用标签
(1) Statistics: HTTP请求的性能及其他数据的分析。
可以看到请求相应的耗时情况
(2) Inspectors:检查器,可以看到Http请求的请求报文和响应报文
抓取对应功能操作http的抓包操作:
进入响应界面,输入必要数据。
进入fiddler,开启抓取状态。
切回应用进行具体功能操作。
停止抓取,选择响应的请求查看数据。