1.软件测试基础
一、软件测试的介绍和分类
软件是程序、文档以及数据的集合
**1、什么是软件测试?
检查开发做出来的软件是否符合需求,将预期结果和实际结果进行对比
是保证软件的质量是符合用户需求的一系列手段
2、软件测试的发展历程
1)软件测试是证明软件是正确的
2)软件测试是证明软件是错误的
3)软件测试是保证软件的质量是符合用户需求的一系列手段
3、软件测试的职业发展
功能测试:自动化测试工程师–>测试开发、持续集成、testops
性能测试工程师–>高级性能测试工程师->架构师
转行–>开发、产品、设计、运维、运营
管理向–>项目经理、QA
**4、软件测试的分类
1)按照方法分类:
①黑盒测试:黑盒测试又称为功能测试,主要检测软件的每一个功能是否能够正常使用。在测试过程中,将程序看成不能打开的黑盒子,不考虑程序内部结构和特性的基础上通过程序接口进行测试,检查程序功能是否按照设计需求以及说明书的规定能够正常打开使用。
②白盒测试:白盒测试也称为结构测试,主要用于检测软件编码过程中的错误。程序员的编程经验、对编程软件的掌握程度、工作状态等因素都会影响到编程质量,导致代码错误。
③灰盒测试:介于白盒测试与黑盒测试之间的一种测试,多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑
2)按照方向分类:(不知道怎么解释时,可以举例说明)
①功能测试:测试功能(能不能做)。做功能测试时,可以使用以上三种测试方法
②性能测试:测试性能(能做多好)
(1)压力测试:在一定压力下,系统长时间运行的稳定性。目的:发现软件的性能瓶颈。{示例:测试食堂能座多少人,先找来800人,少了,又找来200人(共1000人),多了,减掉100人(共900人),刚好}
(2)负载测试:在一定压力下,系统的性能指标(不关注长时间运行){示例:食堂搞活动时工作人员的工作压力(即高强度工作能持续多长时间)}–一般采用80%-90%数据进行模拟
(3)并发测试:(示例:秒杀,在同一瞬间,两个人同时抢到)
③安全测试:测试安全–黑客
注:黑盒测试不是功能测试
3)按照阶段分类:
①单元测试:对软件中的最小可验证单元进行检查和验证
测试重点:方法、函数、类
②集成测试:在单元测试的基础上,把软件单元按照软件概要设计规格说明的规格要求,组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求。
测试重点:接口
③系统测试:将经过集成测试的软件,作为计算机系统的一部分,与系统中其他部分结合起来,在实际运行环境下进行一系列严格有效的测试,以发现软件潜在的问题,保证系统的正常运行
测试重点:测试整个系统的功能
性能
安全性
兼容性(Web–同一个网站在不同的浏览器上能否正常使用、APP–同一个app在不同手机系统能否正常使用)
易用性(用户体验)
稳定性:如在7*24h时间内,app一直运行并无出错
UI:检查界面
④验收测试(交付测试):是针对用户需求、业务流程进行的正式的测试,以确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统
4)按照对象分类:
①APP测试
②WEB测试
③物联网测试
④车联网测试
⑤小程序测试
⑥嵌入式测试
⑦大数据测试
⑧AI测试
5)按照状态分类:
①静态测试(不运行软件):使用白盒测试
②动态测试(运行软件):使用黑盒测试或灰盒测试
6)其他:
①冒烟测试(测试前的测试):在运行前大概测试一下app具不具备可测试性
②回归测试:修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误
③α测试:内测–软件开发公司组织内部人员模拟各类用户对即将面市软件产品(称为α版本)进行测试,试图发现错误并修正
④β测试:公测–由软件的多个用户在实际使用环境下进行的测试
5、互联网公司的研发团队结构
项目经理:负责整个项目的管理
产品经理:负责软件的需求收集、设计、整理
开发:前端、后端
测试
运维:负责硬件网络设备的维护和管理
运营:产品完成后靠运营拉用户
设计:负责对软件的UI进行设计
二、软件研发模型与测试流程
**6、软件研发管理模型(软件测试的生命周期)
1)瀑布流(从上到下不可逆转)
优点:每一个步骤相互独立
缺点:不变通,效率较低
2)V字形(从上到下,测试与开发步骤一一对应)
需求分析:
概要分析:
主要是架构的实现,指搭建架构,表述各模块功能、模块接口和数据传递的实现等各项事务
详细设计:
软件编码:
按照哦详细设计好的模块功能表,编程人员编写出实际的代码
3)W字形(双V模型,左V–开发,右V–测试)
特点:开发和测试工作同步,使用最多
4)敏捷模型(了解)
特点:高效的工作
及时的沟通
工作日报
白板
早会/站立会
集中办公
5)螺旋型
6)H字形
**7、测试流程
1)需求分析阶段
①需求分析:需求文档、产品原型、口述
②学习业务流程
③提取功能点
④编写需求分析说明书–将提取的功能点编写成文档
⑤没有需求怎么办?—参考市面上已经成熟的同类型的产品实现
注:什么是需求?–用户解决问题所需要的条件
2)测试设计阶段
①测试计划:重点:在于时间和人员及资源的安排分配
②测试方案:重点:针对每个测试内容如何开展测试、采用什么测试计划、什么测试工具
③测试策略:重点:哪些内容先测、哪些内容后测、开始和结束测试的标准是什么
以上三各阶段使用5W1H(六何分析法)
④测试用例(见下面)
3)测试执行阶段
预期结果和实际结果做对比,如果一样,则通过;如果不一样,则有问题
若有问题:提交BUG(BUG相关内容见下面)
回归测试:在版本2上去检查在版本1上发现的问题有没有解决
4)测试总结阶段
编写测试报告:
①对工作的总结
②对BUG的统计分析
测试
开发
等级
解决的时间
每个版本
状态
③对被测软件的质量评估
一二级的BUG全部都关闭了
三级的BUG关闭了80%+
四级的BUG无所谓
8、优秀的测试养成攻略
①测试
②文档
③编程
三、测试用例的编写和BUG的管理
**9、测试方法(同上面的黑白灰方法不同)–具体应用
1)等价类(如微信红包金额)
①无效等价类:0、200.01等
②有效等价类:0.01、0.02、99.99、199.99、200
2)边界值:0.01、200
伪代码:
3)场景法:用户在使用功能时,会怎么做
以微信发红包为例:
4)因果图
5)判定表
6)路径覆盖法
注:测试常识:测试是无穷无尽的(因为测试数据是无穷的)
**10、测试用例
模板:
1)用例编号–唯一
2)用例名称–言简意赅
3)前置条件–执行用例前,软件必须满足的条件
4)优先级–执行这条用例的时间要求紧急的等级
5)重要级–这个被测的功能在系统中的重要级别
6)测试数据
7)测试步骤
8)预期结果
9)实际结果
11、评审
1)同行评审:部门的另一个测试人员帮助检查
2)小组评审
3)部门评审
4)项目评审
5)第三方评审:项目组外的人进行评审
6)邮件评审
**12、BUG的管理
1)BUG的管理平台(只需学一个)
禅道(常用)、BUGFree、ALM/QC、testlink、Bugzilla、JIRA
2)BUG的六要素
①编号
②BUG的名称–言简意赅
③BUG的优先级–根据实际情况,BUG是否需要优先解决(高、中、低)
④BUG的等级
致命的—影响产品的核心流程的正常使用;导致软件挂了,闪退,崩溃;和钱有关
严重的—导致功能无法正常使用
一般的—功能的某些异常场景有问题
轻微的—建议性的东西;用户体验的;UI上的问题
⑤BUG的复现步骤–可以把用例的步骤复制过来+预期结果+实际结果
⑥附件–用来佐证BUG的存在(截图、日志、视频)
禅道BUG示例:
3)BUG的生命周期–从BUG被发现的瞬间起到BUG通过回归测试
4)BUG的状态
新建/new
打开/激活/open
已确认
已解决
拒绝
重新打开/reopen
关闭/closed
延期处理
重复BUG
13、版本迭代
随着时间/测试次数的推进,会发布很多版本,其中版本号是不断叠加的
增量测试:只测试已知的有变化的功能
全量测试:测试软件的所有功能
四、测试应用和测试报告
14、测试应用
1)APP专项测试
安装/卸载
消息推送
更新
弱网测试(2G/3G/4G/5G)
场景交互测试(来电话、正在听歌、调用相机、前后台切换)
权限测试
离线测试
2)WEB测试–刷新一下即可
15、软件结构
1)B/S结构(browser server):浏览器服务器
2)C/S结构(client server):客户端服务器(需要单独安装的,如APP)
核心区别:B/S结构无需安装,C/S结构需要安装
**五、如何写好测试用例(详解)
1、测试用例是什么?
是测试工作的核心
是一组在测试时输入输出的标准
是软件需求的具体对照
2、测试用例的作用
1)检验软件是否满足客户需求
2)体现一个测试人员的工作量
3)展现测试用例的思路
3、测试用例包含哪些内容?
4、测试用例的编写流程
需求分析:
业务需求:关注系统是否满足业务
用户需求:关注系统是否满足用户习惯
功能需求:关注系统是否满足功能要求
注:
①如果没有需求分析怎么办?–参考市面上已经上线的同类产品
②如果需求模糊怎么办?–收集整理已有需求;和产品经理逐条确认;参考同类型产品的实现情况
5、提取测试点
1)什么是测试点?
是通过需求分析后对得出的需要进行测试的具体内容
2)测试点对测试用例的设计有什么好处?
可以快速设计出测试用例;可以覆盖需求;可以迅速运用测试方法;可以展现需求的细节
以慕课网首页为例提取测试点:
6、测试用例编写注意
根据项目的实际情况设计测试用例表格
测试用例不是固定的,不要生搬硬套
根据具体的情况编写
7、测试用例编写方法
1)等价类划分法
有效等价类
无效等价类
2)边界值分析法
将测试边界情况作为重点目标,选取正好等于、刚刚大于或刚刚小于边界值的测试数据
3)场景法
通过运用场景对系统的功能点或业务流程的描述,从而提高测试效果
场景法包含基本流和备选流,从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和备选流来完成整个场景
4)猜测法
直觉(90%)–>猜测(50%)
经验(90%)–>结果(80%)
8、测试用例示例
根据↑慕课网的测试点编写慕课网注册功能的测试用例:
慕课网搜索功能的测试用例:
9、测试用例评审
评审的意义:
1)可以发现测试用例的不足
2)方便测试人员改进用例
3)达到在测试时提高测试质量的目的
评审的流程:
10、测试用例管理
1)为什么要管理用例?
测试用例数量巨大
测试用例会随着需求变更
测试用例需要补充完善
2)如何管理用例?
原始的excel管理方式
专业的项目管理系统
3)禅道的基本应用
专业的研发项目管理软件
完整支持敏捷开发流程
完整软件生命周期管理
六、软件测试一周期中使用的方法
冒烟测试、回归测试、随机测试、探索性测试、安全测试
6.1 冒烟测试
指在对一个新版本进行大规模的系统测试之前,先验证软件的基本功能是都实现,是否具备可测性
6.2 回归测试
指修改了旧代码后,重新进行测试以确认修改后没有引入新的错误或导致其他代码产生错误
6.3 随机测试
指测试中的所有输入数据都是随机生成的,其目的是模拟用户的真是操作,并发现一些边缘性错误
6.4 安全测试
在软件产品的生命周期中,特别是产品开发过程基本完成到发布阶段,对产品进行检验,以验证产品符合安全需求定义和产品质量标准的过程
还没有评论,来说两句吧...