一、测试基础
1、什么是测试?
弄清楚产品实际功能与需求的差别的过程。
2、软件测试的目的:
根本目的是检验产品是否满足用户的需求。除此之外,可细分为三个层面:
(1)证明:证明软件可用
(2)检测:发现缺陷(BUG)以及一些可优化项。
(3)预防:预防缺陷,可以尽早的进行测试,以发现开发人员的错误或者遗漏,以及分析存在的bug,避免错误发生后带来的损失。
3、什么是缺陷?
软件内部发生错误引发的不符合产品预期的表现,缺陷相关:
(1)错误:产生不正确结果的人为行为,如代码错误、文档错误。
(2)缺陷(bug、defect):软件或文档中不符合预期的表现,是由错误引发的缺陷,缺陷是错误的具体表现。
(3)失效:缺陷引发功能无法使用,即失效。
(4)故障:缺陷在正式环境(生产环境)下暴露出来,引发较为严重的后果,即软件故障。
Ps:生产环境/线上环境/正式环境:即用户在使用的真实环境
预发布环境:软件在上线前进行回归测试的环境,大回归测试
测试环境:测试人员使用的环境,用来发现缺陷(执行用例、小回归测试)
开发环境:开发人员使用的环境,用来调试代码、开发自测
4、软件生命周期:
简介:在软件工程中,通过定义软件生命周期,将整个周期分为若干个阶段,规定了每个阶段(采用什么标准、什么规范、什么工艺)的必须完成的交付物,用以保证产品的质量。
基于软件瀑布模型的生命周期:
(1)计划:一般由项目经理来完成该阶段,产出物是《项目计划》,其内容是确立项目目标、调研、沟通,评估可行性、资源、成本、进度、收益等(一般从what、when、who三方面考虑)。
(2)需求分析:由需求人员(项目经理、需求分析师、产品经理)来完成,输出《软件需求规格说明书》,也称SRS,其内容是解决“what”问题,即分析具体需求(显示需求、隐式需求),逐步细化,并定义清楚。
(3)设计:由架构师来完成,输出《概要设计》,即HLD;《详细设计》,即LLD,其内容是解决“How”问题,对系统-子系统-模块-函数进行逐层设计。
(4)编码:由开发人员来完成,输出可运行的程序以及一些代码。
(5)测试:由测试人员来完成,输出《测试报告》,期间还有《测试计划》、《测试方案》、《测试用例》、《缺陷报告》等输出,通过细致的分析来检测软件是否有缺陷。
(6)运维:由运维人员、技术支持来完成,在产品上线后对产品进行升级维护、安装部署、线上问题排查等
5、常见研发组织架构:
(1)职能型:①产品部:UI设计师、产品经理。。。②开发部:前端开发工程师、后端开发工程师。。。③测试部:测试工程师、测试开发工程师。。。④质量部:QA(质量保证人员)、CMO(配置管理员)、项目管理员。。。
(2)项目型:①产品1组(部):项目经理、需求分析师、开发、测试。。。②产品2组(部):项目经理、需求分析师、开发、测试。。。③。。。。。
(3)矩阵型:以上两种的混合体。
6、常见研发流程模型:
(1)瀑布模型:按照计划-需求分析-设计-编码-测试-运维流程进行产品的研发。
特点:串行流程,测试到后期才会介入,一个测试工程师可负责多个项目,前期的阶段做的越完善,后期修改的成本就越低,交付质量也就越高。
缺点:风险到后期才会显露,只有在项目后期才能看到产品,对需求变更的适应力差。
适合复杂度低、需求稳定的项目,通常周期较短。
(2)快速原型:在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作。
优点:克服了瀑布模型的缺点,早期就能看到产品的雏形,减少了需求不明确带来的风险。
缺点:经过不断的修改,可能导致产品质量比较低。
适合周期短、需求明确、需要尽早的看到产品原型的项目。
(3)增量模型:也称为有计划的产品改进模型,它从一组给定的需求开始,通过构造一系列可执行中间版本来实施开发活动。第一个版本纳入一部分需求,下一个版本纳入更多的需求,依此类推,直到系统完成。每个中间版本都要执行必需的过程、活动和任务。增量模型的最大特点就是将待开发的软件系统模块化和组件化。
优点:
①将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展。
②以组件为单位进行开发降低了软件开发的风险。一个开发周期内的错误不会影响到整个软件系统。
③开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整。
缺点:如果要开发的模型不能进行模块化,那么使用增量模型将会给开发带来很多麻烦。
适合能被模块化、可分批次的进行交付、开发人员对应用领域不熟悉,难以进行一次性的系统开发、项目管理人员把握全局水平的较高的软件
(4)螺旋模型:采用一种周期性的方法来进行系统开发,该模型是快速原型法,以进化的开发方式为中心,在每个项目阶段使用瀑布模型法。这种模型的每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段,由这4个阶段进行迭代。软件开发过程每迭代一次,软件开发又前进一个层次。
优点:①可分多次进行交付。②在早期能看到产品雏形。③风险暴露早,很容易进行风险控制。④对需求变更的适应力较强
缺点:研发周期过长,开发成本较大
适合复杂度高、周期长、需求可能有变化的项目
(5)喷泉模型:主要用于采用对象技术的软件开发项目。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。软件的某个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分。无间隙指在各项活动之间无明显边界。
优点:各个阶段没有明显的界限,开发人员可以同步进行,提高软件开发效率,节省时间
缺点:由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的