软件测试笔记

软件测试笔记

wc

可以利用wc命令来查看文件有多少行,该命令的作用就是统计指定文件中的字节数、字数、行数,并将统计结果显示输出,语法“ wc -l filename”。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uw7jJfPM-1663041204214)(C:\Users\Mr.Liu\AppData\Roaming\Typora\typora-user-images\image-20220827170600065.png)]

/:根目录。一般根目录下只存放目录,在 linux下有且只有一个根目录,所有的东西都是从这里开始;
/ root:系统管理员root的目录;
/usr:系统应用程序存放的日录,一般安装的软件在该目录下;
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件;/home:系统普通用户的家目录;
/var:放置系统执行过程中经常变化的文件,例如日志文件。

rz:实现将本地下的文件传递到linux下的当前目录
sz: 实现将linux的指定文传递到windows中

虚拟机常见命令

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

pwd

查看当前所在的目录

ls

**作用:**显示当前目录内容

  • 常见参数为:
    1. -a 显示当前目录中的所有文件,包括隐藏文件 ls -a
    2. -l 显示文件中的详细信息,其中大小采用比特形式输出 ls -l
    3. -h 配合 上述中的 l 使用 大小采用M或者G K形式输出 ls -hl

ls -l 返回参数说明

在这里插入图片描述

第一位是文件还是目录的说明

第二位是文件权限 以此是 文件拥有者,文件所属组,其他用户 权限

rwx 分别为 读写 可执行

每一个目录或者文件都会属于一个用户和一个组,而且用户名和组名可相同

chmod

作用: 修改文件权限

  • u = user 所属用户

  • g = group 组

  • o = other 其他用户

  • a = all 所有用户(前三者的集合)

  • +赋权

  • -去权

  • = 直接明确权限

  • 根据二进制大小对应数字赋权

    chmod u+r 文件名
    chmod o=rx 文件名
    chmod 760 文件名    /# 相当于权限情况为 rwxrw---- u+rwx,g+rw,o-rwx
    

    touch

    作用: 创建一个文件如果已经存在那么则修改最后修改日期

touch b.txt

mkdir

**作用:**创建一个目录

-p 嵌套创建目录

mkdir -p  aaa/bbb/ccc

rm

**作用:**删除文件或者目录

rm -r 删除目录(不存在时报错)

rm -f 删除目录(不存在时不报错)

 rm -rf ***

mv和cp

一个是移动,移动后原位置不存在该文件,后者是复制 两个地方都有该文件

在这里插入图片描述

cat和more

作用: 都是查看文件内容

方法: 关键字 文件名

不同:

  • cat 是将所有信息全部展示在显示器上
  • more 是分页显示所需要展示的信息,其中:
    • 空格是显示下一页
    • b 是回看上一页
    • q是退出
cat a.txt b.txt > c.txt
# 把 a,b两个文件里面的内容写入c中,而且a的内容在前面

grep

作用: 查找存在字符串的文件

grep ‘字符串’ 文件名

  • -n 显示所在行号
  • -v 不包括该字符串的文件
  • -i 忽略大小写查找
grep -vi “s" cpuinfo

echo

**作用:**显示echo后面的字符

echo 字符换

echo hello
---------------------------
hello

输出重定向 > >>

作用: 将输出的信息写入后面的文件中去

> 是将待输出的文件覆盖到目的文件中

>>将待输出的信息不覆盖,追加在文件中

# 把ls -l的信息写入的a中
ls -l > a.txt

# 把ls -l的信息追加写入的a中
ls -l >> a.txt

管道 |

作用: 前者的输出结果作为后者命令的输入实现

ls -al | grep “a”
ls -al | grep "*s"

find

作用 从指定的目录开始,在包括的所有目录中查找指定文件

find 开始目录 -name 文件名称

find ~ -name test.txt

ln

创建链接 分为软连接和硬链接

​ 软链接 ls -s 源文件 链接文件

​ 硬链接 ls 源文件 链接文件

  • 软连接相当于源文件的快捷方式,硬链接相当于源文件的副本 (源文件删除以后,链接是不是还存在)

  • 源文件不占用磁盘空间,硬链接与源文件大小相同

  • 使用ls -l 时,软连接显示的标识为“l” , 源文件所对用的连接数会显示出来

在这里插入图片描述
在这里插入图片描述

压缩与解压

gzip 文件名 (压缩后源文件消失)

gzip -d 待解压文件名

gzip a.txt #压缩后文件名为 a.txt.gz
# 下述解压方式的效果一样
gzip -d a.txt
gzip -d a.txt.gz

zip 和unzip

zip 压缩文件.zip 源文件 (源文件不消失)

zip -r 压缩目录.zip 源目录 (源目录不消失)

unzip 压缩文件.zip

zip的压缩效果可能不如gzip的效果好,但是源文件不消失,而且压缩后的zip文件可以通用与Windows系统

打包与解包

作用 将多个文件或目录打包成一个文件

在这里插入图片描述

tar -cvf asd.tar abd  # 把abd 目录所包含的目录和文件打包成一个 asd.tar 文件
tar -xvf asd.tar abd  # 把asd.tar 文件解包
tar -tvf asd.tar      # 查看包中的目录和对应文件

结合使用

tar -zcvf asd.tar.gz asd  #打包后采用gzip手段进行压缩
tar -zxvf asd.tar.gz asd  #解压后解包

df

作用显示磁盘空间

df -h
在这里插入图片描述

系统相关命令

ps

查看进程 (静态

 ps -aux 
 ps aux
 # 上面两种都对 ,显示所有进程的详细信息

在这里插入图片描述

top

动态查看进程信息

在这里插入图片描述

kill

结束进程

kill PID(进程号)

kill -9 PID(强制结束进程)

网络相关

ping ifconfig IPa(新的Ubuntu 查看ip)

VI

  1. vi text.txt (不存在那就直接自动创建,存在的话就打开文件)
  2. 按 i 开始输入
  3. 输入完成 按下 esc
  4. 输入:(shift+ :)
  5. 输入wq 保存退出

在这里插入图片描述

三种启动方式

  1. vi 未存在文件
  2. vi 已存在文件
  3. vi 进入后直接开始编辑 ,编辑完成以后 :后+w 文件名 后 wq退出

三种退出方式

  1. 不保存退出 q!
  2. 保存退出 wq
  3. q 直接退出

常用命令

  1. 从命令模式进入输入模式:

    • i 从光标位置插入
    • I 从光标所在行的 行首 插入
    • a从光标后面插入
    • A 从光标所在行的 行尾 插入
    • o 从光标所在行 下面 开启新行插入
    • O 从光标所在行 上面 开启新行插入
  2. 从命令模式进入末行模式:

  3. 删除命令

    • x 删除光标上面的字符
    • dd 删除光标所在行
    • ndd 删除包括本行在内的n行
  4. 撤销命令

    • u 撤销
    • Ctrl+ r 反撤销
  5. 复制粘贴

    • yy 复制光标所在的行
    • nyy 复制
    • p 从本行下面开辟新行并复制
  6. 查找

    形式: /待查字符串

    跳转行

    • nG
      • 5G —跳转到第5行
      • G —跳转到文件末行

上面 开启新行插入

  1. 从命令模式进入末行模式:

  2. 删除命令

    • x 删除光标上面的字符
    • dd 删除光标所在行
    • ndd 删除包括本行在内的n行
  3. 撤销命令

    • u 撤销
    • Ctrl+ r 反撤销
  4. 复制粘贴

    • yy 复制光标所在的行
    • nyy 复制
    • p 从本行下面开辟新行并复制
  5. 查找

    形式: /待查字符串

    跳转行

    • nG
      • 5G —跳转到第5行
      • G —跳转到文件末行

进程与线程

进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位。每一个进程都有自己的地址空间,至少有5个基本状态:初始态、执行态、等待状态、就绪状态、终止状态。

线程是cpu调度和分配的基本单元。

\1. 进程是资源分配的最小单位 线程是任务调度和执行的最小单位

\2. 进程都有独立的代码和数据空间(程序上下文),进程之间切换开销大,线程都有自己独立的运行栈和程序计数器线程之间切换的开销小。

数据库常见命令

limit 与offset的用法
在mysql中一般使用limit来实现分页

LIMIT后面跟一个参数,表示要提取的数量。
如 :select* from test LIMIT 3 指提取前三条数据,类似sqlServer的top语法。
LIMIT后面跟两个参数时,第一个参数是指第几行,第二个参数是取几条数据。
如: select * from test limit 2,3; 这个SQL是指从第二行的下一行开始向下取3条数据。(即取:3,4,5行的三条数据)
LIMIT和OFFSET组合使用时,LIMIT后面只能有一个参数,表示要提取的数量,offset后面的数字则表示第几行。
如:select * from test LIMIT 3 offset 2; 这个SQL是指从第二行的下一行开始向下取3条数据。(即取:3,4,5行的三条数据)

约束:

  • 主键 primary key
  • 外键 foreign key
  • 唯一 unique
  • 非空 not null
  • 默认 default

创建并查看数据库:

create database test  charset = utf8 collate =utf8_general_ci;

show databases;

select database(); #查看当前所在数据库的名称

use test  #进入数据库

-- 修改数据库
-- 创建
create database testpython charset = gb2312;
 
alter database testpython  -- alter database 数据库名

default character set utf8mb4   -- default character set 编码格式

default collate utf8mb4_general_ci;  -- default collate 排序规则;

drop database asd; #删除数据库

show databases;  # 显示所有的数据库

mysqldump -uroot -p test > test.sql #导出数据

mysql -uroot -p test < test.sql     #导入数据

select count(*), max(price), min(price), avg(price) from goods; # 聚集函数

-- 分⻚页查询: select * from 表名 limit start,count
-- 说明: limit 分⻚页; start : 起始⾏行行号; count : 数据⾏行行数
select * from goods order by price desc limit 3;  # 查询商品价格最贵的前三条数据信息

逻辑删除: 对于重要的数据,不不能轻易易执⾏行行 delete 语句句进⾏行行删除。因为⼀一旦删
除,数据⽆无法恢复,这时可以进⾏行行逻辑删除。
1、给表添加字段,代表数据是否删除,⼀一般起名 isdelete, 0代表未删除, 1代
表删除,默认值为0
2、当要删除某条数据时,只需要设置这条数据的 isdelete 字段为1
3、以后在查询数据时,只查询出 isdelete 为0的数据

delete from students;      -- delete from 表名 : 删除所有数据, 但是 不重置   主键字段的计数(自增情况)

truncate table students;   -- truncate table 表名 : 删除所有数据, 并 重置   主键字段的计数

drop table students;       -- drop table 表名 : 删掉表(字段和数据均不再存在)

模糊查询:

like 和符号

  • % (任意多个字符)
  • _ (任意⼀一个字符)

排序

  • order by 排序, asc : 升序 (可以省略)
  • desc : 降序

连接查询

内连接

查询结果为两个表相同的数据

select * from 1 inner join 2 on 1.id = 2.id
select * from 1,2 where 1.id = 2.id       #旧式写法
左连接

查询的结果为两个表匹配到的数据加左表特有的数据,对于右表中不存在的数据使用null

请添加图片描述

-- 注意: 如果要保证⼀一张数据表的全部数据都存在, 则⼀一定不不能选择内连接,可以选择左连接或右连接
-- 说明:
-- 以 left join 关键字为界, 关键字左侧表为主表(都显示), ⽽而关键字右侧的表为从表(对应内容显示, 不不对应为 null)
select * from 表1 left join 表2 on 表1.列列=表2.列列   (1 是主表)

左右连接的查询结果是一样的,就是在显示的过程中会有不一样

子查询

select * from (select go.*, ca.id cid, ca.typeId ctid,
ca.cateName from goods go left join category ca on
go.typeId=ca.typeId) new
where new.company='并夕夕';
# new 是作为新查询结果的别名,不然后面的where条件无法使用

测试知识点

测试的分类:

  1. 单元测试:针对单个的模块进行测试,
  2. 集成测试:又称为接口测试,针对模块之间的接口进行测试
  3. 系统测试:对软件进行全面的测试
  4. 验收测试:系统内测

测试方式:

  1. 黑盒:在不看代码的前提下,针对系统的UI进行测试(功能测试)
  2. 白盒:单元测试,测试代码的准确性(一般由开发者进行)
  3. 灰盒:接口测试

五大重点:

性能,可兼容性,功能,安全,易用

测试用例的八大要素:

  1. 用例编号:项目+模块+编号
  2. 用例标题:预期结果+操作步骤
  3. 模块/项目:所属
  4. 前置条件
  5. 优先级:P0-P4(0为最高)
  6. 测试步骤
  7. 测试数据:所用数据 可以为空
  8. 预期结果

三大要素

  1. 长度 (2-5位)
  2. 类型 (数字)
  3. 规则(0开头)

get和post

断言:

状态行 断言

  1. 状态断言码:Status code :code is 200

    pm.test("Status code is 200", function () {  
        pm.response.to.have.status(200); //这里填写的200是预期结果,实际结果是请求返回结果  
    });
    
  2. 断言状态消息: Status code:code name has string

pm.test("Status code name has string", function () {  
    pm.response.to.have.status("OK");  // 断言响应状态消息包含OK  
});

响应头断言

  • 响应头类型 Response headers:Content-Type header check

    pm.test("Content-Type is present", function () {  
        pm.response.to.have.header("Content-Type"); //断言响应头存在"Content-Type"  
    });
    

响应体断言

  • 响应体是否包含***字符串: Response body : Contains string

    pm.test("Body matches string", function () {  
        pm.expect(pm.response.text()).to.include("string_you_want_to_search");  
    });  
    //注解  pm.expect(pm.response.text()).to.include("string") 获取响应文本中包含string
    
  • 响应体中等于***字符串: Response body :is equal to a string

    pm.test("Body is correct", function () {
        pm.response.to.have.body("response_body_string");
    });
    
  • 断言响应体(json)中某个键名对应的值:Response body : JSON value check

    pm.test("Your test name", function () {  
        var jsonData = pm.response.json();  
        pm.expect(jsonData.value).to.eql(100);  
    });  
    //注解  var jsonData = pm.response.json() 获取响应体,以json显示,赋值给jsonData .注意:该响应体必须返会是的json,否则会报错 pm.expect(jsonData.value).to.eql(100) 获取jsonData中键名为value的值,然后和100进行比较
    

    相应时间断言:Response time is less than 200ms

    pm.test("Response time is less than 200ms", function () {  
        pm.expect(pm.response.responseTime).to.be.below(200); //断言响应时间<200ms  
    });
    

在postman常用的三种变量分别是全局变量,环境变量,集合变量 。

  • 全局变量:一旦申明了全局变量,全局有效,也就是说postman中的任何集合,任何请求中都可以使用这个变量。它的作用域是最大的 。

  • 环境变量:要申明环境变量,首先的创建环境,然后在环境中才能创建变量 。如果要想使用环境变量,必须先选择(导入)这个环境,这样就可以使用这个环境下的变量了 。需要说明的是环境也可以创建多个 。每个环境下又可以有多个变量 。

  • 集合变量:集合变量是针对集合的,也就是说申明的变量必须基于某个集合,它的使用范围也只是针对这个集合有效 。

其中,他们的作用域范围依次从大到小:全局变量>集合变量>环境变量 。当在几个不同的范围内都申明了相同的变量时,则会优先使用范围最小的变量使。

想要使用变量中的值只需两个步骤,分别是定义变量和获取变量 。

定义变量(设置变量)

获取变量(访问变量)

打印日志

请添加图片描述

末尾

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值