软件是控制计算机硬件工作的一种工具
使用技术手段验证软件是否满足使用需求
减少软件缺陷,保障软件质量
验证程序的功能是否满足需求
利用代码或工具代替手工,对项目进行测试
利用代码或工具验证程序中的接口是否访问正常
模拟多人使用软件,查找服务器缺陷
单元测试
- 针对程序源代码进行测试
集成测试
- 部分源代码,针对程序接口进行测试,即针对各模块之间的地址访问进行测试
系统测试
- 针对程序的功能、非功能进行测试,即整个系统进行测试,包括系统的兼容、功能、文档等
验收测试
- 使用不同用户进行测试(内测、公测)
黑盒测试
- 不关注源代码,针对程序UI功能进行测试
灰盒测试
- 针对程序部分代码进行测试(接口测试)
白盒测试
- 针对程序源代码进行测试
衡量一个优秀软件的维度
- 功能、性能、兼容性、易用性、安全性、可靠性、可维护性、可移植性
需求评审、计划编写、用例设计、用例执行、缺陷管理、测试报告
需求评审
- 参与人员:产品经理、开发人员、测试人员
- 目的:确保各部门对需求的理解一致,知道被测项目有哪些功能模块
计划编写
- 编写测试计划:测什么、谁来测、怎么测
用例设计
- 设计测试用例:有等价类划分法、边界值分析法、判定表法、场景法(流程图法)、错误推荐法
用户使用的案例
针对测试项目设计的执行文档
- 防止漏测
- 实施测试的标准
用例编号: 项目_模块_编号
用例标题: 预期结果(测试点)
项目/模块:所属的项目/模块
优先级:表示用例的重要程度或影响力P0-P4(P0最高)
前置条件:要执行此条用例,有哪些前置操作
测试步骤:描述操作步骤
测试数据:操作使用的数据,没有的话可为空
预期结果:期望达到的结果
1. 说明
在所有测试数据中,具有某种共同特征的数据集合进行划分
2. 分类
- 有效等价类:满足需求的数据集合
- 无效等价类:不满足需求的数据集合
3. 设计用例步骤
1.明确需求
2. 划分有效等价和无效等价
3. 提取数据,编写测试用例
4. 适用场景
- 针对:需要有大量数据测试输入,但是无法穷举测试的地方
输入框、下拉列表、单选复选框- 典型代表:页面的输入框类测试
注意:通常和边界值分析法联合起来使用,边界值法验证长度,等价类验证类型和规则
1. 边界范围节点
- 上点:边界上的点(正好等于)
- 离点:离上点最近的点(刚好大于、刚好小于)
- 内点:范围内的点(区间范围内的数据)
2. 设计用例步骤
- 明确需求
- 划分有效和无效等价
- 确定边界范围值
- 提取数据编写测试用例
3. 用例优化
7个点优化为5个点
- 上点:必选
- 离点:开内闭外(开区间选内部离点,闭区间选外部离点)
- 内点:必选
4. 使用场景
- 在等价类的基础上,针对有边界范围的测试数据输入的地方(重点关注边界)
- 常见词语描述:大小、尺寸、重量、最大、最小、至多、至少等
- 典型代表:有边界范围的输入框类测试
需求:验证QQ号码的合法性
要求:6~10位自然数
1. 方法
等价类划分法+边界值分析法
2. 步骤
3. 用例设计
4. 用例优化:开内闭外(开区间选内部离点,闭区间选外部离点)
此题为闭区间,选外部离点5和11位,去掉7和9位
需求:验证标题长度的合法性
要求:标题长度大于0,小于等于30个字符
1. 方法
等价类划分法+边界值分析法
1. 使用场景
- 有多个输入条件,多个输出结果,输入条件之间有组合关系,输入条件和输出结果之间有依赖(制约)关系
- 判定表一般适用于条件组合数量较少的情况(比如4个条件以下)
2. 定义
是一种以表格形式来表达多条件逻辑判断的工具
3. 组成
- 条件桩:条件
- 动作桩:针对各条件的操作
- 条件项:条件对应的取值
- 动作项:各条件项、各种取值情况下应该采取的动作操作
4. 规则
- 判定表中贯穿条件项和动作项的一列就是一条规则(用例)
- 假设有n个条件,每个条件的取值为0或1,则全组合有2的n次方种规则(用例)
5. 设计用例步骤
- 明确需求
- 画判定表
1.列出条件桩、动作桩
2.填写条件项
3.根据条件项的组合确定动作项
4.简化、合并相似规则(有相同的动作)- 根据规则编写用例
验证 “若用户欠费或关机,则不允许主被叫”功能的测试
1. 步骤
规则:
- 如果金额大于500元,又未过期,则发出批准单和提货单;
- 如果金额大于500元,但过期了,则不发批准单和提货单;
- 如果金额小于等于500元,则不论是否过期都发出批准单和提货单;
- 在过期情况下,不论金额大小还需要发出通知单。
规则:
- 输入的第一列字符必须是A或B
- 第二列字符必须是一个数字
- 如果第一列字符不正确,则给出信息L
- 如果第二列字符不正确,则给出信息M
- 如果两列字符输入正确,则修改文件成功
说明:
意义:
注意:
- 覆盖业务测试,需要使用流程图法
- 先测试业务,再测试单功能、单模块、单页面
- 业务用例是根据流程图来梳理的,需要先了解流程图
流程图:使用标准图形和箭头来表达程序或业务的走向
- 流程图对测试人员的作用:
1.能够看懂流程图,设计业务用例
2.当需求文档信息不全时,能够根据需求,梳理出流程- 网页版工具:https://processon.com/
- Windows工具:visio
适用场景
画流程图练习
缺陷定义
软件中存在的各种问题都叫缺陷,简称bug。
缺陷判定标准
多功能、少功能、功能错误、缺少隐性功能或错误、易用性
缺陷产生的原因
需求文档、架构设计、编码、运行环境(软硬件环境)
- 需求阶段:需求描述不易理解,有歧义,错误等
- 设计阶段:设计文档存在错误或缺陷
- 编码阶段:代码出现错误
- 运行系统:软硬件系统本身故障导致软件缺陷
缺陷的生命周期
需求文档的建立—>架构设计—>编码—>测试—>缺陷分类—>缺陷隔离—>缺陷解决
- 注意:解决了缺陷A,可能同时还会注入缺陷B
- 回归测试:
1.常规项目回归:项目新增了模块,要测新增模块及新增模块关联的旧模块
2.非常规项目(银行、部队、航天):新增功能,必须全部复测- 回归bug:上一个版本发现的缺陷,开发修复完毕,在下个版本进行重新验证
缺陷的分类
功能错误、UI界面错误、兼容性、数据(数据库)、易用性、改进建议、架构设计
缺陷报告示例
缺陷跟踪流程
缺陷管理流程:提交、验证、关闭
提交缺陷的信息
指派人、缺陷描述(缺陷编号、缺陷标题、前置条件、复现步骤、预期结果、实际结果、附件备注)、缺陷严重程度、缺陷优先级、缺陷类型、状态
缺陷提交注意事项
- 可重现:缺陷可以复现
- 唯一性:一个缺陷上报一个问题
- 规范性:符合公司或项目要求
- 发现缺陷后,首先怎么办?:确定缺陷可复现,确定是bug,提交时,要检查缺陷是否已存在
如何写缺陷标题?
测试点+预期结果(实际执行结果)
1. 地址:https://demo.zentao.net/user-login.html
2. 特点:
- 国产、免费、开源、简单、轻量级
- 三管融合(产品管理、项目管理、质量测试管理)
前端三大核心:
什么是HTML?
DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>幸运星啦啦啦title>
head>
<body>
编写代码区域
body>
html>
1.html:根标签,所有的内容都应该放在html标签中
2.head:头部标签
3.body:身体标签(代码编写区域)
注释
- 作用:描述的内容不会被浏览器执行
- 说明:解释程序给程序员看
- 快捷键:ctrl+/
测试点:前端页面上线之前检查注释描述或去除注释
<h1>标题h1h1>
<h6>标题h6h6>
<p>段落内容p>
<img src="1.jpg" title="图片1" width="100px" height="200px" alt="此处有一张图片"/>
测试点:必须有title属性(悬停和未加载时显示)
<body>
幸运星<br/>啦啦啦
幸运星 软件测试
body>
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>啦啦啦啦title>
<style>
.d1 { background:red;}
.d2 { background:green;}
.s1{background:aqua}
.s2{background:yellowgreen}
style>
head>
<body>
<div class="d1">大盒子1div> <div class="d2">大盒子2div>
<span class="s1">小盒子1span> <span class="s2">小盒子2span>
<p>测试<span class="s2">开发span>p>
body>
html>
- script:js标签
- style:css标签
- link:外部加载css标签
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>啦啦啦啦title>
head>
<body>
<ol>
<li>安徽li>
<li>宿州li>
ol>
<ul>
<li>浙江li>
<li>宁波li>
ul>>
body>
html>
按钮测试点:统一使用value进行赋值来确定按钮提示字,因为每个浏览器出现的按钮提示字可能不一样
提示:普通按钮默认没有执行效果,需要配合JS来实现
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>由云打开~嘻嘻title>
<style>
.d1{width:1000px; height:800px; background-image: url(嘻嘻.jpg)}
.d2{background-color: aliceblue;}
style>
head>
<body>
<div class="d2">
<form method="post" action="suprice.html">
你的名字:<input type="text"/> <br/>
密码:<input type="password"/> <br/>
性别:
<input type="radio" name="one"/>男
<input type="radio" name="one"/>女
<br/>
你的爱好:
<input type="checkbox"/>吃
<input type="checkbox"/>玩
<input type="checkbox"/>睡
<input type="checkbox"/>学习
<input type="checkbox"/>乒乓
<br/>
<input type="submit" value="提交有惊喜"/>
<input type="reset"/>
<input type="button" value="点我试试" onclick="alert('点我干啥?')"/>
form>
div>
<div>
<img src="嘻嘻.jpg" title="嘻嘻" height="500px" >
<img src="哈哈.jpg" title="哈哈" height="500px" >
<img src="哈哈哈哈.jpg" title="哈哈哈哈" height="500px" >
div>
body>
html>