提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
软件测试的对象以及原则
测试的目的:根据需求去发现问题。
测试对象:文档、数据、程序。
原则:
- 测试证明软件缺陷
- 穷尽测试不可能
- 测试尽早介入
- 缺陷集群性(经验之谈,一般认为如此)
- 杀虫剂悖论(随机交叉测试,不要使用同一种放肆进行测试)
- 测试活动依赖于测试内容(不太行业测试重点不同)
- 不存在缺陷谬论
软件生命周期
软件工程可以分为三个大的阶段:需求; 设计; 测试与维护
- 需求:
问题的定义
可行性分析
需求分析 - 设计:
概要设计
详细设计
编码与单元测试 (集成测试) - 测试与维护
综合测试
维护
测试方面:
瀑布模型、V模型的测试均在编码之后,而W模型是测试与开发同步,可尽早发现问题。但V模型的测试阶段也早于瀑布模型,V模型可提前对局部代码进行测试,而瀑布模型则对整合之后的代码进行测试。
一、测试基础
1.用例的设计方法
1.等价类
等价划分,根据属性进行划分
有效等价(满足需求)与无效等价(不满足需求)
2.边界类
选取正好等于刚好大于刚好小于
3.判定表
以表格形式表示逻辑判断
条件桩
动作
条件项
动作项
判定表中贯穿条件项豫动作项的一列就是一条规则
4.场景化
也能叫流程图法,使用覆盖路径来设计测试用例
5.错误推测法
预测错误进行测试
冒烟测试
冒烟测试是自由测试的一种,是对软件的基本功能进行测试,由开发人员与测试人员共同执行,测试对象是每一个新编译的需要正式测试的软件版本。目的是确认软件的基本功能正常,保证软件系统能正常跑起来,可以进行后续的正常测试工作的进行,如果最基本的测试都有问题了,就直接打回开发部了,所以正式交付的测试版本,必须先通过冒烟测试的考验。
2.缺陷管理
缺陷是软件使用过程中的问题
缺陷的判定标准:少功能、功能错误、多功能、隐形功能错误(需求书虽然并未说出但是应该实现的要求)、不易使用(软件测试人员专业角度)
缺陷产生的原因 :
需求阶段:需求描述不易理解,有歧义、错误等
设计阶段:设计文档存在错误或者缺陷
编码阶段:代码出现错误
运行系统:软硬件系统本身故障导致软件缺陷
缺陷核心内容:缺陷的标题、缺陷的预置条件、缺陷的复现步骤、缺陷的预期结果、缺陷的实际结果、缺陷的必要附件(图片日志等)、缺陷的提交要素
软件缺陷的生命周期
PS:回归测试:1、常规项目回归:项目本次发布新增2个模块,最基本要测新增模块功能及新增模块关联的旧模块。2、非常规项目(银行、部队、航天):新增模块必须全部复测。
2、回归Bug:上一个版本发现的缺陷,开发修复完毕,在下一个版本进行重新测试。
缺陷提交要素
- 缺陷报告编号
- 缺陷标题:预期结果()
- 严重级别:严重(S1):主程序 、一般(S2):次要功能 、微小(S3):易用性、界面
建议(S4):建议性问题
缺陷优先度:Priority0:24小时内解决 、Priority1:发布前必须修复 、Priority2:可以在下一个版本修复 模块
Bug类型:代码错误、兼容性问题、设计缺陷、性能缺陷
缺陷描述:前置条件、操作步骤、预期、实际 指派人 附件
缺陷状态:new:新建 、 Open:打开 、Closed:关闭 、Postponed:延期
软件缺陷类型
- 功能错误
- 错误界面(UI)
- 兼容性
- 数据(数据库)
- 易用性
- 改进建议
- 架构
缺陷管理工具—禅道
自行搜索使用
3.HTML
前端三大工具:html(网页架构)、css(网页的样式美化)、js(网页的行为)
html标签:
- 标题标签:<h1> 到 <h6> 用于定义标题,h1 表示最大标题,h6 表示最小标题。
- 段落标签:<p> 用于定义段落。
- 链接标签:<a> 用于创建链接。
- 图像标签:<img> 用于插入图像。
- 列表标签:<ul>(无序列表)和<ol>(有序列表)用于创建列表项。
- 表格标签:<table> 用于定义表格,<tr>(行)和 <td>(列)用于定义表格的行和列。
- 表单标签:<form> 用于创建表单,<input> 用于输入字段,如文本框、密码框等。
- 多媒体标签:<audio> 和 <video>用于嵌入音频和视频。
- 布局标签:<div> 和 <span> 用于分组和分隔内容。
例子:
标题标签:
html
<h1>这是主标题</h1>
<h2>这是副标题</h2>
<h3>这是小标题</h3>
段落标签:
html
<p>这是一个段落。</p>
链接标签:
html
<a href="https://www.example.com">点击这里</a>
图像标签:
html
<img src="image.jpg" alt="图片描述" />
无序列表标签:
html
<ul>
<li>项目 1</li>
<li>项目 2</li>
<li>项目 3</li>
</ul>
效果如下:
- 项目 1
- 项目 2
- 项目 3
html
<ol>
<li>第一项</li>
<li>第二项</li>
<li>第三项</li>
</ol>
效果如下:
- 第一项
- 第二项
- 第三项
表格标签:
html
<table>
<tr>
<th>列 1 标题</th>
<th>列 2 标题</th>
</tr>
<tr>
<td>数据 1</td>
<td>数据 2</td>
</tr>
</table>
效果如下:
列 1 标题 | 列 2 标题 |
---|---|
数据 1 | 数据 2 |
<form action="">
<input type="text" name="fname" />
<input type="submit" value="提交" />
</form>
多媒体标签:
<audio src="audio.mp3" controls></audio>
<video src="video.mp4" controls></video>
布局标签:
<div class="container">
<!-- 内容 -->
</div>
<span>这是一个单独的元素</span>
二、Linux与数据库
Linux部分
关机步骤涉及代码
代码如下(示例):
sync 将数据由内存同步到硬盘中。
shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:
shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。
shutdown –h now 立马关机
shutdown –h 20:25 系统会在今天20:25关机
shutdown –h +10 十分钟后关机
shutdown –r now 系统立马重启
shutdown –r +10 系统十分钟后重启
reboot 就是重启,等同于 shutdown –r now
halt 关闭系统,等同于shutdown –h now 和 poweroff
Linux 系统目录结构
LINUX远程连接----使用finalshell
linux常用命令
终端利用ssh登录远程服务器
安装ssh:
yum install ssh
启动ssh:
service sshd start
登录远程服务器:
ssh -p 50022 my@127.0.0.1
输入密码:
my@127.0.0.1:
-p 后面是端口
my 是服务器用户名
127.0.0.1 是服务器 ip
回车输入密码即可登录
数据库
sql语句
常用关键字:
- SELECT:用于从数据库中选择数据。例如:SELECT * FROM users; 表示选择用户表中的所有数据。
- FROM:指定要从哪个表中选择数据。例如:SELECT * FROM users; 中的 FROM users 表示从用户表中选择数据。
- WHERE:用于筛选满足条件的数据。例如:SELECT * FROM users WHERE age > 18; 表示选择年龄大于 18岁的用户。 AND、OR:用于组合多个条件。例如:SELECT * FROM users WHERE age > 18 AND gender = ‘male’; 表示选择年龄大于 18 岁且性别为男性的用户。
- GROUP BY:用于根据一个或多个列对数据进行分组。例如:SELECT age, COUNT(*) FROM users GROUP BY age;表示根据年龄对用户进行分组,并统计每个年龄组的数量。
- HAVING:用于在分组后对结果进行过滤。例如:SELECT age,COUNT() FROM users GROUP BY age HAVING COUNT() > 5;表示在按年龄分组后,筛选出数量大于 5 的年龄组。
- ORDER BY:用于对结果进行排序。例如:
SELECT * FROM usersORDER BY age DESC;
表示按年龄降序排列用户数据。 - INSERT:用于向数据库中插入新的数据。例如:
INSERT INTO users (name, age, gender) VALUES ('John', 25, 'male');
表示向用户表中插入一条新的用户记录。 - UPDATE:用于更新数据库中的现有数据。例如:UPDATE users SET age = 30WHERE id = 1; 表示将用户表中 id 为 1 的用户的年龄更新为 30。
- DELETE:用于从数据库中删除数据。例如:DELETE FROM users WHERE age < 18; 表示删除用户表中年龄小于18 岁的用户。 CREATE、DROP、ALTER:用于管理数据库对象,如创建、删除或修改表、视图、索引等。例如:CREATE TABLE users (id INT, name VARCHAR(50)); 表示创建一个用户表。
- JOIN:用于连接多个表以获取相关数据。例如:SELECT * FROM users JOIN orders ON users.id = orders.user_id; 表示将用户表和订单表根据用户 ID 进行连接
DDL(Data Definition Language)数据定义语言
一、操作库
-- 创建库
create database db1;
-- 创建库是否存在,不存在则创建
create database if not exists db1;
-- 查看所有数据库
show databases;
-- 查看某个数据库的定义信息
show create database db1;
-- 修改数据库字符信息
alter database db1 character set utf8;
-- 删除数据库
drop database db1;
二、操作表
–创建表
create table student(
id int,
name varchar(32),
age int ,
score double(4,1),
birthday date,
insert_time timestamp
);
– 查看表结构
desc 表名;
-- 查看创建表的SQL语句
show create table 表名;
-- 修改表名
alter table 表名 rename to 新的表名;
-- 添加一列
alter table 表名 add 列名 数据类型;
-- 删除列
alter table 表名 drop 列名;
-- 删除表
drop table 表名;
drop table if exists 表名 ;
DML(Data Manipulation Language)数据操作语言
一、增加 insert into
-- 写全所有列名
insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
-- 不写列名(所有列全部添加)
insert into 表名 values(值1,值2,...值n);
-- 插入部分数据
insert into 表名(列名1,列名2) values(值1,值2);
二、删除 delete
-- 删除表中数据
delete from 表名 where 列名 = 值;
-- 删除表中所有数据
delete from 表名;
-- 删除表中所有数据(高效 先删除表,然后再创建一张一样的表。)
truncate table 表名;
三、修改 update
-- 不带条件的修改(会修改所有行)
update 表名 set 列名 = 值;
-- 带条件的修改
update 表名 set 列名 = 值 where 列名=值;
DQL(Data Query Language)数据查询语言
关于查询语句有很多,这里基础的不再介绍。主要介绍排序查询、聚合函数、模糊查询、分组查询、分页查询、内连接、外连接、子查询
一、基础关键字
BETWEEN…AND (在什么之间)和 IN( 集合)
-- 查询年龄大于等于20 小于等于30
SELECT * FROM student WHERE age >= 20 && age <=30;
SELECT * FROM student WHERE age >= 20 AND age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;
-- 查询年龄22岁,18岁,25岁的信息
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
SELECT * FROM student WHERE age IN (22,18,25);
is not null(不为null值) 与 like(模糊查询)、distinct(去除重复值)
-- 查询英语成绩不为null
SELECT * FROM student WHERE english IS NOT NULL;
_:单个任意字符 %:多个任意字符
-- 查询姓马的有哪些? like
SELECT * FROM student WHERE NAME LIKE '马%';
-- 查询姓名第二个字是化的人
SELECT * FROM student WHERE NAME LIKE "_化%";
-- 查询姓名是3个字的人
SELECT * FROM student WHERE NAME LIKE '___';
-- 查询姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE '%德%';
– 关键词 DISTINCT 用于返回唯一不同的值。
语法:SELECT DISTINCT 列名称 FROM 表名称
SELECT DISTINCT NAME FROM student ;
二、排序查询 order by
语法:order by 子句
order by 排序字段1 排序方式1 , 排序字段2 排序方式2...
注意:
如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。
-- 例子
SELECT * FROM person ORDER BY math; --默认升序
SELECT * FROM person ORDER BY math desc; --降序
三、 聚合函数:将一列数据作为一个整体,进行纵向的计算。
1.count:计算个数
2.max:计算最大值
3.min:计算最小值
4.sum:计算和
5.avg:计算平均数
四、 分组查询 group by
语法:group by 分组字段;
注意:分组之后查询的字段:分组字段、聚合函数
-- 按照性别分组。分别查询男、女同学的平均分
SELECT sex , AVG(math) FROM student GROUP BY sex;
-- 按照性别分组。分别查询男、女同学的平均分,人数
SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;
-- 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组
SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;
-- 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
SELECT sex , AVG(math),COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;
五、 分页查询
1.确定每页显示的记录数量:首先,需要确定每页要显示的记录数量。这通常是一个固定的数值,例如 10、20 或 50 条记录。
2.计算起始记录和结束记录的索引:起始记录的索引通常是 (页码 - 1) * 每页记录数量,结束记录的索引是 页码 * 每页记录数量。
构建查询语句:在查询语句中使用起始记录和结束记录的索引来限制结果集。这可以通过在 WHERE 子句中使用适当的条件来实现,例