软件理论知识
测试的定义
检查软件开发所作出的软件功能是不是复合产品的预期结果,也就是检查实际结果和预期结果是否一致,如果不一致,就是bug。
软件测试发展的阶段
- 第一阶段:软件测试就是去证明软件是正确的
- 第二阶段:软件测试失去证明软件是错误
- 第三阶段:软件测试是保证软件的质量是符合用户需求的一系列手段
软件测试的职业发展
- 功能测试,自动化测试
- 性能测试
- 测试开发
- testops
- 持续集成
测试的分类
-
方法
- 黑盒测试(不透明,只检查输入输出就可以,例如一个机顶盒:连接输入输出口,只要接口正确能正常显示就是输出正确,如qq所看得到的功能,能不能发消息,能不能接受成功)
- 白盒测试(透明),能看到怎么走线的怎么拧的螺丝,能到里面的数据结构,检查内部代码逻辑结构,看代码写的对不对
-
灰盒测试(半透明),介于黑白两者之间,也可以说结合黑盒白盒测试两种方法进行。
-
方向
-
功能测试,测试功能就可以
-
性能测试:压力测试
负载测试
并发测试例子: 一个食堂不知道能容纳多少人吃饭,那就需要采用压力测试的方式去探索能容纳多少人吃饭。 压力测试就是去发现软件的性能,瓶颈 或者说一个举重选手,最多可以举重60斤,60斤就是瓶颈 假如食堂活动一人付费全家吃饭,这个时候食堂的工作人员需承受更大的工作压力 负载测试就是软件持续保持高强度的工作,能够维持多少的时间 那举重选手举着50斤(不会让他举到60斤),最多能持续多长时间就是负载测试 食堂平时吃饭是需要排队,现在充值返还活动,许多人这时候一窝蜂的去充值,可能会出现钱充到别人的卡上的情况 并发测试就是去测试同一瞬间多线程同时做一件事情容易出错的情况
-
安全测试
-
-
阶段
- 单元测试
(单元开发的模块,对小的单元模块功能(功能点、代码块)的测试)
单元测试的重点,测试开发写的函数、方法、类 - 集成测试
(通过接口,将不同单元模块连接到一块的过程,检查不同模块之间连接是否对不对,连接方式通过接口连接,也就是去测试这个接口(一个通道,中间层的一个代码API功能的样子))
重点是测试接口,两个不同模块之间通过一个接口相互发送数据,这个东西就叫做接口,也就是程序的接口 - 系统测试(整个软件集成完成之后形成的系统)
重点是测试功能、性能、安全、兼容性、易用性、稳定性、UI
兼容性细分:网站的兼容性(不同浏览器上是否能在正常使用这个网站)和APP的兼容性(不同操作系统上是否能正常使用andriod ios)
易用性:用户体验,好不好用,是否顺手,是否反人类,是一个比较主观的测试过程
稳定性:可归类到性能测试,一个软件在一直使用过程中(7 * 24),软件没有出现崩溃的现象
UI测试:软件的界面好不好看,颜色、排版、风格,也是一个比较主观性的测试过程
或者按照设计图去比对实际结果和预期结果是否一致 - 验收测试 (系统测试完成后,用户检查是否满足他最开始提出的要求)
- 单元测试
-
对象:
web
app
物联网
车联网
小程序
嵌入式
大数据
AI测试
游戏
… -
状态:指软件的状态,分为静态和动态,软件运行起来的状态
- 静态,白盒,看代码
-
动态,就是黑盒或者灰
-
其他
- 冒烟测试,测试前的测试,不是正式的测试流程,测试前的一个检查
- 回归测试,测试结束之后,把bug反馈给开发之后让开发去开,开发改完之后重新反馈给你去检查这个 bug有没有被修改
-
a测试,可划分到验收测试,内测(公司内部人员测试)
- B测试,可划分到验收测试,公测(扩展到外部的实际用户测试,试用)
-
软件公司内部结构
研发部:项目经理,整个项目的管理,技术管理,人员安排
产品经理,软件需求收集,设计,整理等
开发,前端开发,app,界面,
后端开发,服务器
测试,
运维,硬件网络设备的维护和管理
运营,产品完成后,靠运营去拉用户,下载率,搞活动
设计,对软件的UI进行设计
软件开发过程\流程
- 软件是 程序、文档、数据的集合
- 研发管理模型:
- 瀑布流:从上往下,不可逆转,每个步骤之间都是相互独立的,缺点是相互之间不变通
需求分析->制定计划->系统设计->编码->测试->交付
已淘汰 - V字型,从上往下
需求分析 验收测试
制定计划 系统测试
系统设计 集成测试
编码 单元测试
V字 - W字形,用的最多的模型,开发的工作和测试的工作可以同步进行
用户需求 交付
需求分析 实测
概要设计 集成
详细设计 编码
开发
用户需求 验收测试
需求分析 系统测试
测试设计 集成测试
用例设计 单元测试
测试 - 敏捷模型,基于W模型的基础,高效的工作 及时的沟通 工作形式(日会 白板 站立会 联合\集中办公)
- 螺旋形,
- H字形
- 瀑布流:从上往下,不可逆转,每个步骤之间都是相互独立的,缺点是相互之间不变通
测试的工作流程
需求分析阶段
- 需求分析:有三种表现形式,包括需求文档、产品原型(画出的一个产品原型,有一个比较直观的感受)、口述
- 学习业务流程:知道软件要做成什么样子,比如金融、银行的项目,需要专门的去学习业务流程
- 提取功能点:从大到小把功能点树状图罗列出来,
比如慕客网 首页 购物车 搜索 推荐
发现
下载
我的 - 编写需求分析说明书,
没有需求怎么办,参考市面上已经成熟的同类型产品的实现,主要是参考规则
测试设计阶段
叫做文档阶段,前三个文档可合并,可通过5W1H方法去编写这些文档,是一种思考方法,实际工作中是套模板的
测试计划
一般是测试组长经理编写,时间 人员 以及资源的分配
测试方案
一般是测试组长经理编写,针对每个内容如何开展测试,采用什么测试计划,测试工具
测试策略
哪些内容先测,哪些内容后测,开始测试和结束测试的标准是什么
测试用例
需求分析说明书转换而来的,地毯式的扫描,实际结果是否与预期结果是否一致,为操作过程的结果提供参考
设计用例的测试方法:
- 等价类,测试数据是无穷无尽,许多数据用例实际是等价的,找出最具有代表性的值,用少部门的值代表大部分的
无效等价类,0.001,200.01微信红包,无效值里面的代表值
有效等价类,0.01 - 200微信发红包,有效值里面的代表值
怎么找出等价类?根据边界值找出等价 - 边界值,0.01 20
- 场景法,用户在使用一个功能的时候,会怎么去用,怎么去操作,例如微信红包,遇到的场景就是发送成功或者发送失败,发送成功
发送成功:用户输入符合要求的金额,发送红包成功
发送失败:用户什么都不输入,不能发送成功;
用户输入超出范围的值不能发送成功200.1 0;
用户输入非字母的值,不能发送成功abc 汉字; - 因果图,
- 判定表
- 路径覆盖法
- …
用例编号 唯一的
用例名称 言简意赅,用最少的字描述清楚这个用例是做什么的
前置条件 执行这个用例之前,软件必须要满足的条件
优先级 执行这条用例的时间要求紧急的登记
重要级 这个被测功能在系统里面的重要级别
测试数据
测试步骤
预期结果
实际结果
常识,测试常识,测试是无穷无尽的
评审,同行评审
小组评审
部门评审
项目评审
第三方评审
邮件评审
测试执行阶段
按照测试用例执行,如果实际结果和预期结果不一样则有问题
- 提交bug
bug管理平台,禅道,bugfree alm/QC
bug六要素:编号
名称
优先级
严重级别,致命性(系统崩溃),高 中 底
复现步骤
附件
bug的生命周期
bug的状态
bug的等级 - 回归测试,版本迭代测试
- 测试应用
App测试和Web测试的区别,在于要不要安装客户端的问题
常见的软件结构B/S结构和C/S结构和C/S
B是浏览器 brower S是server
C是client,S是server
服务的话就是运行在服务器里面的东西,通过浏览器客户端去访问服务器里面的东西
C/S架构的特点:C就是客户端,需要去安装的东西,如APP QQ 微信等
通过访问服务器实现的功能,需要更新APP客户端
B/S架构的特点:不需要更新安装,只需要刷新就可以获取新的网站版本- App测试
比web测试更加复杂,除了正常功能外,额外的专项–安装卸载,消息推送,更新,弱网测试(2G/3G/4G/5G/WIFI)、场景交互测试(突然来电话,正在听歌,调用相机,
前后台切换)权限测试,离线测试 - Web测试
测试功能
- App测试
- 版本迭代测试过程中遇到的问题:
增量测试,只测试已知的有变化的部分,其他的功能会不会因为这些变化而出现问题是位置的(这个时候要退出自动化测试)
全量测试,每个新版本都会把所有的功能都测试一遍
测试总结阶段
- 优秀测试的具备条件:文档 测试 编程
- 编写测试报告,对工作的总结,对bug统计分析(测试 开发 软件开发 登记 解决时间 每个版本 状态),对被测软件的评估
- 验收交付的通用标准:
一二级的bug都关闭了
三级的bug关闭了60%
四级的bug无所谓 - 测试的生命周期
贯穿整个产品生命周期 - 客户需求 产品需求说明书 软件设计文档 测试文档