软件测试之入门篇

本文介绍了软件测试的基础知识,包括网络协议http和https的区别,常用Linux命令的使用,黑盒测试和白盒测试的方法,以及数据库的基本操作语句。详细讲解了http请求过程,常见的http状态码,Linux命令如find、cd、rm等,以及测试方法如边界值、等价类、场景法和错误推测法。还涵盖了数据库的插入、删除、修改和查询等操作。
摘要由CSDN通过智能技术生成

一、网络协议http和https的区别

前者为超文本传输,通信使用明文、请求和相应不会对通信方进行确认、无法保护数据的完整性,端口号默认为80。
后者利用SSL/TLS建立安全信道,加密数据包,端口号为443。主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。

1、一次完整的http请求过程

a.浏览器进行DNS域名解析,得到对应的IP地址;
b.根据这个IP,找到对应的服务器简历连接(三次握手);
c.建立TCP连接后发起http请求(一个完整的http请求报文);
d.服务器响应http请求,浏览器得到html代码(服务器如何响应);
e.浏览器解析html代码。并请求html代码中的资源(如js、css、图片等);
f.浏览器对页面进行渲染呈现给用户;
g.服务器关闭TCP连接(四次挥手);

2、常见的http状态及响应码

1(信息类):表示接收到请求并继续处理,例如100客户必须继续发出请求
2(响应成功):表示动作被成功接受、理解和接受,例如200请求成功,请求的资源发送回客户端;204请求收到,但返回信息为空
3(重定向类):为了完成指定的动作,必须接受进一步的处理,例如300请求的资源可在多出得到;301本网页被永久性转移到另一个URL
4(客户端错误):请求包含错误语法或不能正确执行,例如400客户端请求有语法错误,不能被服务器所理解;401请求未经授权;403禁止访问,服务器收到请求,但是拒绝提供服务;404输入错误的URL,服务器请求资源不存在
5(服务端错误):服务器不能正确执行一个正确的请求,例如500服务器遇到错误,无法完成请求;501未实现;502网关错误;503由于超载或停机维护,服务器目前无法使用

二、常用的Linux命令

find 查找文件/目录

find . -name "*.c"								#将当前目录及其子目录下所有文件后缀为 .c 的文件列出来
find . -type f									#将目前目录其其下子目录中所有一般文件列出
find . -ctime -20								#将当前目录及其子目录下所有最近 20 天内更新过的文件列出
find /var/log -type f -mtime +7 -ok rm {} \		#查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们
find . -type f -perm 644 -exec ls -l {} \		#查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
find / -type f -size 0 -exec ls -l {} \			#查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径

cd 切换目录

cd / 	#系统根目录
cd .. 	#返回上级目录

rm 删除文件/目录

rm -rf test/	#强制删除test文件夹

tar 解压缩文件

tar -czvf +压缩文件名 源文件名		#打包并压缩	
tar -zxvf +目标文件				#解压文件

touch 创建文件

touch +文件名		#将文件的创建时间改为当前时间,文件不存在则创建一个	

vi/vim(vi增强工具)编辑文本

vi +文件名			#编辑文件
进入文档后,点击 i 进入insert模式,在文档中输入文字,在当前光标处编辑,文档下面会有insert的标识
进入文档后,点击 a 可以编辑光标下一位
退出编辑状态后,输入Shift+g即可立刻跳转到本文档最后
点击esc按钮可以退出编辑状态
:	输入冒号可以输入文档相关的指令
wq 	表示保存并退出
q 	表示退出
q!	强制退出,不保存修改的内容

apt-get/yum/dnf 下载软件包命令

apt-get install  +软件/包        #安装包
apt-get update   +软件/包        #更新软件
apt-get remove   +软件/包        #卸载软件
apt-get upgrade     			#更新已安装的包
apt-get clean                   #清理无用的包 

df 查看文件系统磁盘空间的使用情况

df -h		#将目前磁盘空间和使用情况以人性化的方式显示	

tail -f 滚动查看日志

tail -f log.log			#滚动查看日志内容,不进入编辑界面
tail -1000f log.log		#滚动查看最后1000行内容

top 实时显示系统中各个进程的资源占用情况

top 
top当中可以输入的命令 
P:以CPU的使用资源排序显示
M:以内存的使用资源排序显示
N:以pid排序显示 
T:由进程使用的时间累计排序显示 
k:给某一个pid一个信号。可以用来杀死进程 
r:给某个pid重新定制一个nice值(即优先级)
q:退出top(用ctrl+c也可以退出top)

三、常用的测试方法

黑盒测试

1)边界值

边界值测试是一种最基本的黑盒测试方法,它是“等价类划分”这种测试方法的良好补充。但该方法会有较大的冗余和漏洞。
边界值测试对布尔型无效(因为布尔型不是“true”就是“false”,不存在边界值的概念)
边界值测试并非黑盒测试独有,它也可以应用在白盒测试(比如数组边界的测试、对循环次数边界的测试……)

2)等价类

划分的子集应该满足如下因素:
(1)每个子集内部所有的数据都是等价的
(2)子集之间互不相交
(3)所有子集的并集是整个输入域或输出域
【有效等价类】是相对于规格说明合理的、正确的、有意义的输入数据构成的集合。
【无效等价类】是相对于规格说明不合理的、错误的、无意义的输入数据构成的集合。

3)场景法

软件的工作流程往往对应着现实生活的场景。应该从更高些的视角来 把握系统的业务流程,了解功能模块。
在熟悉流程的基础上才能讨论局部细节的测试设计。 场景法的核心是事件流和场景

4)错误推测法

凭借测试人员多年的测试经验,通过直觉和经验来推测系统中可能出现的各种缺陷。根据这些情况,来设计测试用例。

白盒测试

1)语句覆盖

使程序中的每个可执行语句都能执行一次的测试用例

2)判定覆盖

对于判断语句,在设计用例的时候,要设计判断语句结果为True和False的两种情况

3)条件覆盖

设计用例时针对判断语句里面每个条件表达式true 和 false各取值一次,不考判断语句的计算结果

4)判定条件覆盖

设计测试用例时,使得判断语句中每个条件表达式的所有可能结果至少出现一次,每个判断语句本身所有可能结果也至少出现一次。

5)条件组合覆盖

设计测试用例时,使得每个判断语句中条件结果的所有可能组合至少出现一次

6)路径覆盖

设计测试用例时,覆盖程序中所有可能的执行路径
优点:这种覆盖方法可以对程序进行彻底的测试用例覆盖,比前面讲的五种方法覆盖度都要高。
缺点:于路径覆盖需要对所有可能的路径进行测试(包括循环、条件组合、分支选择等),那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。路径覆盖虽然是一种比较强的覆盖,但未必考虑判断语句中条件表达式结果的组合,并不能代替条件覆盖和条件组合覆盖。

四、数据库基本语句

作为一个软件测试工程师,我们在测试过程中往往需要对数据库数据进行操作,但是我们的操作大多以查询居多,有时会涉及到新增,修改,删除等操作,所以我们其实并不需要对数据库的操作有特别深入的了解。

1.插入表数据
insert into 表名(字段1,字段2)values(字段1值,字段2值)
2.删除表数据
delete from 表名 where 范围		#删除符合条件的内容
delete from 表名					#清空表里的内容,不释放空间,id继续增加
truncate table 表名				#清空表数据,释放空间
drop table 表名					#整张表被删除,使用该表必须重建
3.修改表数据
update 表名 set 字段名='新值' where 范围
4.查询表数据
select * from table where 范围					#查询数据
selecr count(*) from table where 范围 或 selecr count(distinct(字段)) from table where 范围 		#查总数(distinct可去重)
select sum(字段) from table where 范围			#求和
select avg(字段) from table where 范围			#求平均
select max(字段) from table where 范围			#求最大
select min(字段) from table where 范围			#求最小
select * from table where 范围 order by 排序字段名 desc(asc)										#排序desc逆序/asc正序
5.复杂查询

嵌套查询:多个查询语句嵌套在一起查询,一般嵌套的查询语句放在where或having的后面。例如:

select * from table1 where status in(select status from table2)

多表连接查询:

table1

idusername
1小花
2小红
3小白

table2

idjob
1老师
2学生
4工人

(1)内联查询inner join + on

select * from table1 a inner join table2 b on a.id = b.id

查询结果为:

idusernameidjob
1小花1老师
2小红2学生

(2)左外联查询 left outer join + on

select * from table1 a left outer join table2 b on a.id = b.id

查询结果为:

idusernameidjob
1小花1老师
2小红2学生
3小白nullnull

(3)右外联查询 right outer join + on

select * from table1 a right outer join table2 b on a.id = b.id

查询结果为:

idusernameidjob
1小花1老师
2小红2学生
nullnull4工人

(4)全外联查询 full outer join + on

select * from table1 a full outer join table2 b on a.id = b.id

查询结果为:

idusernameidjob
1小花1老师
2小红2学生
3小白nullnull
nullnull4工人
6. group by 分组

根据某一个或多个列表字段进行分组统计,例如

table1

idnamecoursescore
1小花语文90
2小红语文99
3小白数学98
4小白语文70
5小花数学95

查询每个用户的最高成绩

select name,max(score) as max_score from table1 group by name

查询结果:先按用户名分组,再在每个组中查询找到最高分数

idnamemax_score
1小花95
2小红99
3小白98

查询全班每科课程平均分

select course,avg(score) as avg_score from table1 group by course

查询结果:先按课程分组,再在每个组中查询找到平均分数

idcourseavg_score
1语文99
2数学98

having的用法:同where用法,having与group by连用。where是筛选单个记录,having 是筛选分组(先分组,后筛选)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值