软件测试理论
一、为什么要测试
1.代码是人写的,难免会出错
2.软件本身就存在问题,非正常运行会有问题
3.环境会影响软件出现问题
4.软件测试活动是保证软件质量之一
二、测试的定义
制造业定义:以检验产品是否满足需求为目标
软件行业定义:
1.验证软件的正确性
2.发现软件中的缺陷(找bug)
【软件测试是利用人工或自动化手段,对软件产品进行验证,检查软件是否满足需求、是否存在缺陷,保障软件质量的过程。】
三、软件生命周期
软件生命周期指的是软件从生产到报废的整个过程,是一个时间概念。
【软件生命周期是软件从概念构思开始,直到软件退役废弃的整个全过程,一般包含 7 个阶段:可行性研究与计划、需求分析、概要设计、详细设计、编码实现、测试、运行维护。】
四、软件生命周期有哪些阶段【企业实际流程版,适合口述】
1.问题的引入或定义
2.可行性分析(涉及法律、政治、技术、经济等评估)
3.项目招标
4.项目立项
5.需求分析
6.开发阶段(概要设计、详细设计、编码、测试)
7.维护(迭代)【修复线上 bug、适配新需求迭代、环境升级等,是整个周期持续时间最长的阶段】
8.下线(退役)
五、生命周期模型
1.V模型【同按开发阶段划分测试相似】

ST和IT合并称为SIT,即系统集成测试。
单元测试 -- 详细设计
集成测试 -- 概要设计
系统测试 -- 需求
验收测试 -- 需求
(1)需求:文档(产品输出)【必要】
内容:是对整个项目的设计、框架、功能模块的描述。
(2)概要设计:文档(开发输出)【非必要】
内容:架构的初步设计文档,使用说明什么类型的数据库、架构秒睡、模块名称
比如:盖房子的大概框架
(3)详细设计:文档(开发输出)【非必要】
内容:针对具体的实现,模块的具体实现,具体设计,架构的具体描述
比如:房子具体的装修设计
a.单元测试
单元测试:是指单元是否满足详细设计文件的规格,能正确的执行,主要是对代码测试。
单元测试也是最小的测试单位;
在工作中单元测试一般是开发自测,如果需求测试进行单元测试,对测试的技术要求高、必须懂开发语言
只测试一个单元
b.集成测试
集成测试:是指2个单元或2个单元以上组合验证是否满足概要设计文档的规格,能正常执行,主要是模块与模块的测试,
c.系统测试
系统测试:是指把软件进行正常运行,对整个软件系统进行测试,验证这个系统能正常运行,主要是测试一个整体业务流程
d.验收测试(uat)
验收测试:站在用户角度去对软件进行测试,验证系统满足用户需求
分为两种:
内部验收:alpha测试
外部验收:bete测试
区别:
1> 人员不一样:
内部验收:测试、开发都在,有问题及时解决
外部验收:客户方员工测试,发现问题在反馈给开发,修改,技术人员不集中
2> 时间不一样:
内部验收时间周期短
外部验收时间周期长
3> 地点不一样:
内部验收是在自己公司
外部焉验收在客户方公司
sit系统集成测试(集成测试[it]和系统测试[st]合并)
sit测试 --- 技术测试
uat测试【不懂技术】 --- 验收测试
sit环境(sit1环境、sit2环境...)
uat环境(专门用来验收的环境)
环境:开发/测试/线上(生产)环境
2.H模型

(1)产品召开需求澄清会议,=》测试需求:完整、实现逻辑、冗余、正确等
需求澄清会议:测试、开发、产品、架构师等
需求有问题,产品修改,再开会议,直到需求符合要求;
(2)测试和开发,拿到需求,深入分析和了解需求文档
(3)测试经理编写测试计划 【⭐️】
a、测试计划:(内容:测试目的,背景,范围,测试准入,测试准出,环境和资源,测试任务和测试进度,风险及风险管理,测试交付文档)
准入要求:(提测)
开发:概要设计说明书,详细设计说明书,开发自测报告;
测试:(1)写好测试计划,(2)测试用例评审通过,(3)测试环境搭建好
b、准出:(1)用例100%执行(2)0bug(3)输出测试报告
(4)安排任务,给测试人员,测试人员领取任务,根据需求去分析需求,用xmind图梳理测试点,根据测试点,编写用例
(5)评审用例(测试人员:组内评审[项目评审人员:开发,测试,产品都参加],交叉评审[测试人员之间评审:测试a、测试b、测试c])
如果评审不通过,就要继续编写用例,在评审,直到评审通过;
(6)用例评审通过以后导入到用例管理工具中;如:禅道,testlink
(7)搭建测试环境(运维搭建,自己搭建,测试经理搭建)
(8)开发提交代码包,提测(也叫转测)要达到准入要求;
(9)测试将代码包部署到环境,
(10)进行冒烟测试,冒烟测试通过,进入sit系统集成测试,如果,冒烟测试不通过,就把版本打回给开发,开发修改,在提测。
冒烟测试(也叫版本验证测试)定义:指对新版本的主要功能,基本功能进行测试。
冒烟测试通过,
(11)sit系统集成测试(一般一个项目有3次系统集成测试,有些项目周期长也有4次,5次)
(12)第一次sit测试也叫全量测试(把写的所有用例都要进行测试),测试出来的bug,指派给开发(通过bug工具如:禅道),测试小结
(13)开发修改bug,在提交代码
(14)测试在第二次部署项目包,在进行第二次sit测试前也要进行冒烟测试,冒烟测试通过以后才能进行第二次sit测试;
第二sit测试和第三sit测试都叫做回归测试
回归测试:是系统维护阶段进行的验证测试
区别:测试阶段不同
冒烟测试是版本提交时第一个测试,回归测试是在维护阶段测试
(14)第二次sit测试,在将bug提交给开发,开发修改
(15)第三sit测试,先冒烟测试,在去测试,验证。。。。。。以此类推,
备注:测试用例的来源
a、冒烟测试用例
b、验证上一个版本提交bug的用例
c、测试与bug有关联的模块用例
d、你认为可疑的测试场景测试用例
e、测试补充的测试用例和测试场景
(16)直到达到准出:用例100%执行,0bug,
(17)输出测试报告=》说明sit测试测完(表示技术测完)
测试报告内容:测试目的,测试范围,测试背景,测试实施日期,测试人员,bug 清单,用例清单,测试结论,
(18)sit测完通知 uat 测试,uat验收通过,
(19)封板(封装版本)
(20)等待上线
(21)上线前准备线上数据
(22)上线后在线上测试,
(23)测试没有bug,如有bug就要分析bug,bug影响程度,影响大,就回退版本,如果影响小就备注下次版本修改
(24)上线成功
主流程:(正常场景)
产品召开需求会议=>评审需求=>测试和开发拿到需求=>分析需求=>编写测试计划(测试经理)=>测试任务分配测试人员=>测试分析需求=>测试根据需求梳理测试测试点=>根据测试点编写测试用例=>评审用例,评审通过=>将用例导入用例管理工具=>搭建环境=>开发提测,达到准入要求=>部署项目包到环境中=>开始冒烟测试=>进行sit1系统集成测试=>有bug提交给开发=>开发修改bug,修复成功=>提交第二次代码包=>部署项目包到环境中=>在冒烟测试=>进行sit2系统测试=>以此类推=>直到达到准出要求:0bug,用例100%执行=>输出测试报告=>通知uat测试=>uat验收通过=>封装版本=>等待上线=>准备线上数据=>上线=>线上测试=>测试无bug表示上线成功。
梳理【⭐️】
产品拿出需求规格说明书,召开需求澄清【将每个节点说清楚】会议,分析需求,熟悉需求;【需求确认】
测试和开发拿到需求,测试经理编写测试计划,安排测试任务给测试人员,测试人员熟悉需求,分析需求,梳理测试点【如xmind】,根据测试点写测试用例;评审用例【组内评审、交叉评审】,评审通过后,将用例导入到用例管理工具中【如禅道】;通知运维搭建测试环境,开发提测,达到准出要求,测试将提测的代码包部署到测试环境,冒烟测试,冒烟测试不通过打回版本;如果冒烟测试通过,进行第一次sit系统集成测试,测试有bug,提交给开发,开发修改bug,再次提交代码包给测试,测试再进行冒烟测试,冒烟测试通过,进行第二次sit系统集成测试,测试有bug,提交给开发,开发修改bug,再次提交代码包给测试,测试再次进行冒烟测试,冒烟测试通过后,进行第三次sit系统集成测试,以此类推,直到达到准出要求:用例100%执行、0bug;测试编写测试报告,通知uat验收测试,测试通过后封装版本,打包,等待上线,准备线上数据,上线,线上测试,测试无bug,上线成功;测试有bug,根据bug影响程度判断回退版本还是下个版本解决
相关面试题
a.上一家公司的工作流程?
b.给你个需求,怎么测试?
c.在公司如何开展需求?
d.测试流程
e.工作流程
f.讲下H模型
【冒烟测试是版本转测试后执行的基础核心流程验证,重点验证主流程是否可跑通。如果冒烟不通过,直接打回开发,不进入详细测试。】
【冒烟测试目的:快速确认版本基本可用性,避免测试人员投入大量时间在根本无法使用的版本上。】
【冒烟测试属于最常用的版本准入测试,准入测试范围更广,除冒烟外还可能包含环境、文档、配置检查】
3.迭代模型
更新迭代功能
项目被分为大量的迭代过程,一次迭代是一个完整的开发循环,是一个可以发布的可执行的产品,属于软件开发周期中最终产品的一个子集。
比如:微信,qq,抖音等
4.敏捷模型
一种新的模型,前面属于传统型,敏捷模型能适应快速需求变化,交付周期短轻量级的开发模式。
时间短:一周2-3个版本,一周上一个版本
5.瀑布模型【了解即可】
瀑布模型是线性顺序的软件开发模型,各个阶段按顺序依次执行,上一个阶段完全完成、评审通过后,才进入下一阶段,像瀑布流水一样单向推进,不可逆。
六、测试的基本原则
1.测试是从用户的角度去测试;
2.测试不仅测试是软件本身,(比如:测试环境,配置,网络,兼容性等)
3.软件外在可用,不代表软件没有问题(比如:aap能下载安装,点击就闪退)
4.软件测试是没有完成正确,只有更加完美
5.测试是永远测不完的
6.测试应尽早介入(比如:建房,开始就介入测试就可以发现更多问题,等)
7.2/8原则, (80%的错误集中在20%的区域)比如:考试,数学题,
8.杀虫剂效应(不断更新用例测试)
9.测试尽量选择第三方测试(开发自己写的代码,自己很难发现,所以需要专业测试)
10.测试活动的依赖对象(功能测试,性能测试,安全测试等)
浙公网安备 33010602011771号