# 初探前端自动化
# 什么是测试及自动化测试
这里的测试单指软件测试。
# 测试
测试的经典定义:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否满足设计要求进行评估的过程。 衡量一个程序质量如何通常通过:可靠性、稳定性、轻便性、易于维护、以及实用性。
# 测试的方法
# 黑盒测试
黑盒测试又称黑箱测试,测试应用程序的功能,而不是其内部结构和运作。测试者只需知道什么是系统该做的事,即键入一个特定输入,可得到一定的输出。测试者选择有效输入和无效输入从而验证软件是否正确输出。
# 白盒测试
白盒测试又称透明盒测试或结构测试等。测试应用程序的内部结构或运作。
# 测试的进程
# Alpha 测试
内部人员测试 开发完成后,所进行的测试。通常由开发和测试人员参与。在模拟的环境中以模拟的数据进行运行(dev 环境)。
# Beta 测试
Alpha 测试之后的流程,Beta 测试也称为确认测试,在一个真实的环境中以实际数据来运行测试,以确认性能,系统运行有效率,系统撤销与备份作业正常,透过测试让信息系统日后可以更加趋于完善。
- 封测(CB closed beta)与公测(OB open beta) 封测:通过少数人进行测试,测试软件功能与检查程序错误等(一些需签保密协议) 公测:通常做为一种营销策略,可节省测试人员成本,验证稳定性(压力测试)
# Gamma 测试
Gamma 测试是一种非测试阶段,测试只能发现产品中存在的 bug,而不能保证产品没有 bug,存在一定的不确定性。
# 测试的类型
- 功能测试 按照测试软件各个功能划分有条理的测试,在功能测试部分要保证测试项覆盖所有功能和各个功能的条件组合
- 系统测试 对一个完整的软件以用户的角度进行测试。 系统测试与功能测试的区别是,系统测试用的方法与环境要和实际使用的完全一样,软件也是集成后的整个软件,而不是某个功能或模块。
- 极限值测试 对软件在各个特殊条件,特殊环境下的能否正常运行和软件的性能测试。 特殊条件: 最大值,最小值,临界点,超过临界点 特殊环境:CPU 高负荷或网络高负荷状态下的测试
- 性能测试 性能测试:衡量软件具有响应及时的能力。
- 压力测试 压力测试:要求进行超过规定性能指标的测试。例如:一个网站设计容量是 100,压力测试就是用 120 个同时点击条件测试。 判断准则: 1,系统能够恢复 2,压力过程中不要有明显的性能下降
# 测试阶段
单元测试、集成测试、冒烟测试、系统测试、回归测试
单元测试 测试阶段:编译后 测试对象:最小模块
测试人员:白盒测试或开发
测试依据:代码、注释、详细设计文档 测试方法:白盒测试集成测试 测试阶段:单元测试完成后 测试对象:模块间的接口 测试人员:白盒测试或开发(联调) 测试依据:单元测试模块、概要设计文档 测试方法:黑盒与白盒结合
冒烟测试 软件的可测性 测试阶段:提测后 测试对象:整个系统 测试人员:黑盒测试 测试依据:冒烟测试用例 测试方法:黑盒测试(手工与自动化结合) => 排除特殊情况,能否走通主流程
系统测试 测试阶段:冒烟测试通过后 测试对象:整个系统 测试人员:黑盒测试 测试依据:需求说明文档、测试案例、测试用例 测试方法:黑盒测试
验收测试 测试阶段:发布前 测试对象:整个系统 测试人员:最终用户或需求方 测试依据:用户需求、验收标准 测试方法:黑盒测试
# 自动化测试
自动化测试:使用独立于待测软件的其他软件来自动执行测试、比较实际结果与预期并生成报告这一过程。【对于持续交付和持续集成的开发方式而言,测试自动化是至关重要的】。 测试是一个庞大的主题,它包含各种分类的测试,像黑盒测试/白盒测试、单元测试/集成测试/端到端测试
# 随机测试
探索性测试
# 分类
# 接口测试
# 图形用户界面(GUI)测试
# 持续测试
# 常见术语
# C/S
C 指的是客户端(Client),S 指服务器端(Server),这种软件是基于局域网或互联网的,需要一台服务器来安装服务器端软件,每台客户端都需要安装客户端软件,比如 qq、各种网络游戏等是 C/S 结构。
# B/S
B 指的是浏览器(Browser),S 指服务器端(Server)
# 测试覆盖率
覆盖率=(至少被执行一次的item数)/item的总数
特点:
1,通过覆盖率数据,可以检测我们的测试是否充分
2,分析出测试的弱点在哪
# 测试用例
测试用例 = 输入+输出+运行环境
# 开发模式
原型模式(注重用户需求)
瀑布流模式(开发前期规划好一切【接口定义,代码实现】- 以文档的形式展示)
螺旋模式
原型与瀑布整合(强调风险点)
不断递进
敏捷模式
文档,代码等抛弃掉,以人为本(沟通),按螺旋模式不断叠加
把大的功能拆分,拆成增量模式的版本迭代
自动化测试
# 测试模型
# V 模型
# W 模型(测试与开发同步执行)
需求分析 - 需求测试 系统安装 - 验收测试
概要设计 - 概要设计测试 系统构建 - 系统测试
详细设计 - 详细设计测试 模块测试 - 集成测试
编码实现 - 单元测试
# H 模型
真正的测试级别之间不存在严格顺序,参与产品这个周期 经过不断迭代,更新,最终完成需求
# 软件工程标准
# ISO9000
用于证实组织具有满足顾客需求和适用法规要求的产品能力。 1,整体把握 2,预防不合格
# 前端测试
单元测试 集成测试 端到端测试
- 测试平台 Karma 优势:配置简单,能在真实浏览器运行测试且可以多浏览器运行(jest 无法与 Karma 进行集成)
- 测试框架 macha jasmine jest ava
- 测试辅助工具 断言库-Chinaa 测试桩(又称测试替身)- Sinon、testDouble
- 测试覆盖率工具 istanbui istanbui-instrumenter-loader istanbul 的 webpack 插件,能够代码编译打点和测试报告输出。
Karma+Webpack+Mocha+China+Sion+istanbul-instrumenter-loader
- test/[存放测试用例] - index.test.ts[测试用例]
|-src/[被测代码与测试代码] - example[单独模块] -|
| - index.js[被测模块]
| | - lib/[测试用到的一些库]
单元测试-| tests/[测试相关] -|- testResult/[生成测试结果]
| | - setup.js[测试入口文件]
|-karma.conf.js[karma相关配置]