- 常见测试分类
- 按测试阶段划分:
- 单元测试:针对程序源码进行测试。(国内是开发自测)
- 集成测试:又称接口测试,针对模块间的访问地址进行测试。
- 系统测试:对整个系统进行测试,包括功能、兼容性、文档等。
- 验收测试:分为内测和公测。
- 按代码可见度划分
- 黑盒测试:代码完全不可见
- 灰盒测试:部分代码可见
- 白盒测试:代码全部可见
- 扩展
- 冒烟测试:将程序的主要功能进行一次正向测试。通常在提测时进行。起源于工业测试,是否在执行功能时冒烟(损坏、报错)。
- 提测的标准:单元测试完成、冒烟测试通过。
- 系统测试和黑盒测试的核心是"功能测试"
- 集成测试和灰盒测试又称接口测试
- 单元测试和白盒测试都是对源码进行测试
- 自动化测试属于功能测试
- 性能测试、安全测试等属于"专项测试"
- 模型
- 质量模型:
功能性:功能是否满足需求。
性能效率:性能满足实际需求。
兼容性:软件能够与主流硬件和软件进行兼容;不同浏览器、不同硬件、不同操作系统,对第三方有没有影响。
易用性:便于使用,用户体验优。
可靠性:性能功能是否可靠,不易瘫痪崩溃。
信息安全:信息在传输或使用、存储的过程中具备足够的安全程度。
可维护性:便于交付后维护,便于代码交付后其他人接手。(注释够明确)
可移植性:可以在不同硬件、不同系统、不同开发环境下运行。
- W模型(又叫双V模型)
简述:
在用户提出需求时设计验收测试计划。
在开发进行需求分析时,测试参会,输出系统测试计划。
当开发进入概要设计阶段时,由开发输出的API文档设计接口测试(集成测试)计划。
当开发进入代码编写阶段,由开发自测完成单元测试
开发完成模块代码后,根据接口测试计划,完成接口测试
开发完成代码集成,开始实施,根据系统测试计划,完成系统测试。
bug修复且回归通过后,项目交付,根据验收测试计划完成验收测试,包括内测和公测。
- 测试流程
- 需求分析:各部门对需求理解一致
- 计划编写:测什么、谁来测、用什么测、怎么测
- 用例设计:测试操作文档
- 用例执行:根据用例执行测试
- 缺陷管理:对缺陷进行跟踪管理
- 测试报告:总结测试工作、风险评估、缺陷分析
- 测试用例
- 什么是用例:为测试项目而设计的执行文档
- 用例的作用:
- 防止漏测
- 实施测试的标准
- 用例的格式:
- 用例编号
- 标题
- 模块
- 预置条件
- 优先级
- 测试步骤
- 测试数据
- 预期结果
- 等价类划分法
- 什么是等价类划分
- 在所有测试数据中,具有共同特征的数据集合进行拆分
- 解决穷举问题
- 有效等价类:满足需求的数据集合
- 无效等价类:不满足需求的数据集合
- 步骤:
- 明确需求
- 确定有效和无效等价类
- 提取数据编写测试用例
- 案例:
6-10位自然数:6-10位、自然数
有效类:同时6-10位和是自然数
无效类:
①不满足6-10位、是自然数
②满足6-10位、不是自然数
正向:尽量覆盖组合
- 边界值分析法
- 上点:边界上的点
- 离点:距离上点最近的点
- 内点:在范围内的点
开内闭外:范围为开区间,选择内离点;范围为闭区间,选择外离点。
- 判定表法
- 适用于单个输入类、条件与结果之间有相互制约关系(如果。。。则。。。)
- 条件桩:列出问题的所有条件,次序无关紧要。
- 动作桩:列出问题中可能采取的全部动作,次序无关紧要。
- 条件项:列出条件的对应取值,所有可能情况的真假值。
- 动作项:根据条件项各种取值,判定该采取的动作。
- 场景法
- 扩展:流程图
- 开始或结束使用椭圆表示
- 判断使用菱形表示
- 分支走向使用箭头表示
- Y表示是,N表示否
- 基于流程图来设计用例的方法,叫做场景法。适用于多功能组合测试,优先级高于单功能。
- 错误推测法
- 建立在经验的基础上,推测系统可能出现的缺陷。
- 适用于时间紧任务重,没有足够时间进行用例编写。或者项目测试已经结束,等待上线,做补充覆盖。
- 缺陷管理
- 缺陷判定标准
- 少功能:需求说明书中的功能没有全部实现
- 功能错误:需求实现不符合需求说明书
- 多功能:出现了需求说明书中没有的内容
- 隐形功能错误:需求说明书中没有明确说明,但是常规软件应该具备的问题。没有实现。
- 不易使用:软件难以理解、运行缓慢、提示不明确、用户体验不好。
- 缺陷产生的原因
- 需求阶段:需求描述有歧义、难以理解、有错误等等
- 设计阶段:设计文档存在错误或缺陷。
- 编码阶段:代码存在错误。
- 运行阶段:软件、硬件系统本身存在故障导致软件缺陷。(兼容性不好)
- 缺陷的生命周期
- 缺陷描述及提交要素
- 标题、预置条件、复现步骤、预期结果、实际结果、必要附件(log、截图、测试数据等)
- 缺陷编号、严重程度、优先级、缺陷类型、缺陷状态。
- 缺陷类型
- 严重程度:
- 严重:主要功能错误。(主要业务流程,流程正向及逆向用例)
- 一般:次要功能错误。(不影响主要业务流程的,单功能正向及逆向用例)
- 微小:易用性、界面样式(页面问题、提示信息问题等)
- 建议:建议性问题
- 缺陷分类:
- 功能错误:抓包确认到底属于前端还是后端问题。
- 界面(UI)错误
- 兼容性
- 数据
- 易用性
- 改进建议
- 架构
- 严重程度:
- 常用缺陷管理工具
禅道:产品管理、项目管理、质量管理。
质量管理:缺陷管理、用例管理等
- HTML基础
- 简介
- Web前端三大核心技术:
- 简介
HTML:超文本标记语言,用来实现网页架构
CSS:负责网页样式与美化
JC:JavaScripts,负责网页的行为
-
-
- HTML标签:
- 一个网页的内容,都是由一个个的标签组成。以<>表示
- 单标签:<a />
- 双标签<b> 内容 </b>
- 标签的属性,描述标签的特征,以键值对形式出现。属性名="属性值"
- HTML标签:
-
-
-
- HTML骨架标签
- 根标签:<html> </html>
- 头:<head> </head> 身体:<body> </body>
- 编码方式:<mata charset="UTF-8">
- 页面标签名称:<title> </title>
- HTML骨架标签
-
注释:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学习笔记001</title>
</head>
<body>
<!--
注释国际快捷键:Ctrl+/
-->
<!--
注意:前端页面注释,在上线之前必须检查或删除
-->
</body>
</html>
标题标签:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学习笔记002</title>
</head>
<body>
<!--
标题标签h1-h6:h1是最大号显示,h6最小号显示。
用于显示模块的标题(文章标题)
实际很少用(太死板,只能调整到固定大小),一般都用css控制显示大小。
-->
<h1>h1</h1>
<h2>h2</h2>
<h3>h3</h3>
<h4>h4</h4>
<h5>h5</h5>
<h6>h6</h6>
</body>
</html>
段落标签:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学习笔记003</title>
</head>
<body>
<!--不在段落里-->
不在p标签里的段落1
不在p标签里的段落2
<!--
段落标签:<p>
用于标识一个段落
段落标签:一个p标签独占一行,利用此特性,给页面信息换行使用。
将内容放在p标签中具有语义化作用,浏览器会将其识别为显示内容。
-->
<p>段落1</p>
<p>段落2</p>
</body>
</html>
超链接标签:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学习笔记004</title>
</head>
<body>
<!--
超链接标签:a
用于点击文本跳转到指定页面,跳转到第三方
要显示的文本写在<a>文本</a>
href属性:点击超链接的文本时应该跳转的地址,可以是带协议的在线地址URL,也可以是本地链接
注意:如果是线上地址,一定要加协议,不加协议默认是本地文件
target属性:是否在新窗口打开,缺省则默认在当前页打开,添加该属性则在新页面打开
属性值如果不是默认的几个值(失手写错了),默认是_blank
-->
<!--
扩展:即使写错了属性值,也会起作用,只是不按照预期结果显示
-->
<p>
<a href="https://www.baidu.com">百度一下_当前页打开</a>
</p>
<p>
<a href="https://www.baidu.com" target="_blank">百度一下_新页面打开</a>
</p>
<p>
<a href="learn003-段落标签p.html">打开本地页面</a>
</p>
</body>
</html>
图片标签:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学习笔记005</title>
</head>
<body>
<!--
图片标签:img
用于向网页插入图片
属性:src:加载图片的路径,不可以是绝对路径,只能读到项目根目录
width="200px" height="100":两个属性调整其中一个,另一个根据文件比例等比缩放
alt:图片没有加载时显示的内容
title:图片标题,鼠标悬停时显示的内容。
没有alt时,加载失败直接显示title,有alt直接显示alt
测试点:图片必须有title,否则影响用户体验
-->
<img src="./img/19.jpg" width="200px" height="100" alt="这里应该是一张大福的照片" title="大福"/>
</body>
</html>
换行与空格:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学习笔记006</title>
</head>
<body>
<!--
换行:单标签<br/>
在内容中直接换行写,是不能被浏览器识别的,
html在同一个段落中默认不换行,需要换行的地方可以添加一个br标签
一个<br/>标签就相当于文本编辑中的一次回车
-->
<!--直接换行写,页面只有一个空格表示间隔,并没有同代码中一样换行显示:hello world-->
hello
world
<!--
添加换行标签后可以换行显示
hello
world
-->
<br/><br/>hello<br/>world!<br/><br/>
<!--
空格:
在文本中直接写空格,是不能被识别的。
一个 就是一个空格,如果需要多个空格,想要几个空格就写几个
-->
hello world!!!<br/>
hello world !!!<br/>
<!--上边两行代码结果是一样的,都是hello world!!!-->
</body>
</html>
布局标签:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学习笔记007</title>
<style type="text/css">
span{color:red;}
</style>
</head>
<body>
<!--、
div:可以理解为大盒子
将body比作最大的一个盒子,div理解为大盒子,盒子与盒子可以并排放,小一号的盒子也可以放在大一号盒子里继续嵌套
一行只能放一个div
-->
<!--span小盒子:一行可以放多个span-->
<div>这里是div[1]</div>
<div>这里是div[2]</div>
<!--不用写<br/>标签,自动会换行,一行只能有一个div-->
<div>
<span>div[3]的第一个span</span> <span>div[3]的第二个span</span>
</div>
<!--案例:原价¥999,折后价¥99,折后价标红-->
<div>
<p>原价¥999 折后价<span>¥99</span> </p>
</div>
</body>
</html>
input标签:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学习笔记008</title>
</head>
<body>
<!--
input:用于页面输入信息
-->
<!-- 用户名:文本框-->
用户名:<input type="text"/>
<br/>
<!-- 密码:密码框-->
密 码:<input type="password"/>
<br/>
<!-- 性别:单选框,类似于收音机按钮,只能同时按下一个
想要做到单选效果,需要将input标签放同一组(相同name为一组,默认name值不一样)
-->
性 别:<input type="radio" name="sex"/>男<input type="radio" name="sex"/>女
<br/>
<!-- 多选框-->
爱 好:
<input type="checkbox"/>唱歌
<input type="checkbox"/>读书
<input type="checkbox"/>跑步
<br/>
<!-- 按钮:value为显示在按钮上的内容-->
<input type="button" value="普通按钮"/>
<br/>
<input type="submit" value="提 交"/>
</body>
</html>
文本域与下拉框:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学习笔记009</title>
</head>
<body>
<!--先引入input标签,整合一个注册页面-->
用户名:<input type="text"/>
<br/>
密 码:<input type="password"/>
<br/>
性 别:<input type="radio" name="sex"/>男<input type="radio" name="sex"/>女
<br/>
爱 好:
<input type="checkbox"/>唱歌
<input type="checkbox"/>读书
<input type="checkbox"/>跑步
<br/>
<!--
下拉框
现在不常用,使用input+css可以实现
-->
家庭住址:
<select>
<option>北京</option>
<option>天津</option>
<option>南京</option>
<option>上海</option>
</select>
<br/>
<!--
文本域:现在不常用,使用input+css可以实现
cols:文本列数
rows:文本行数
-->
<textarea cols="50" rows="5">个人签名:</textarea>
<br/>
<input type="submit" value="提交"/>
</body>
</html>
表单:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学习笔记010</title>
</head>
<body>
<!--
from表单:用于数据提交
填写完内容后点击提交,输入的信息会提交并清空。
action:表单数据提交到的页面,提交到该页面并跳转进该页面
method:get/post
get:参数在URL中显示,显示数据对应标签的name值。
速度相对post更快
提交的内容长度有限制
通常用于查询(百度搜索功能)
post:参数不在URL中显示
速度相对较慢
提交内容长度无限制
通常用于提交数据给服务器(登录注册)
-->
<form action="learn005-图标标签img.html" method="get">
用户名:<input type="text" name="username"/>
<br/>
密 码:<input type="password" name="password"/>
<br/>
性 别:<input type="radio" name="sex"/>男<input type="radio" name="sex"/>女
<br/>
爱 好:
<input type="checkbox" name="hobby"/>唱歌
<input type="checkbox" name="hobby"/>读书
<input type="checkbox" name="hobby"/>跑步
<br/>
家庭住址:
<select name="address">
<option>北京</option>
<option>天津</option>
<option>南京</option>
<option>上海</option>
</select>
<br/>
<textarea cols="50" rows="5">个人签名:</textarea>
<br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
列表:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学习笔记011</title>
</head>
<body>
<!--有序列表-->
<ol>
<li>冠军</li>
<li>亚军</li>
<li>季军</li>
</ol>
<br/>
<!--无序列表-->
<ul>
<li>北京</li>
<li>桑海</li>
<li>墨脱</li>
</ul>
</body>
</html>