目录
🌟一、了解软件测试
🌈1、什么是软件测试
🌈2、软件测试与开发的区别(常考)
🌈3、一个优秀的软件测试人员应该具备的素质
🌟二、需求与测试用例、软件错误,软件生命周期
🌈1、需求是什么?
🌈2、从测试人员角度看需求
🌈3、什么是测试用例?(重要)
🌈4、什么是软件错误(BUG)?
🌈5、软件的生命周期?
🌟三、开发模型与测试模型(重要)
🌈1、瀑布模型(Waterall Model)
🌈2、螺旋模型(Spiral Model)
🌈3、增量,迭代
🌈4、敏捷(重要!)
🌟四、软件测试模型
🌈1、软件测试V模型
🌈2、软件测试W模型
🌟一、了解软件测试
🌈1、什么是软件测试
测试是一个过程,这个过程是由测试人员来验证软件的特性是否符合需求。特性包括:功能相关和非功能相关。最常见的理解就是:软件测试就是找UG,发现缺陷。软件测试只是一个样本试验,具有不可穷尽性。
🌈2、软件测试与开发的区别(常考)
开发 | 测试 | |
工作内容 | 利用编程语言开发软件 | 理解需求,设计测试用例,执行测试,发送测试报告 |
技能要求 | 深度要求 | 广度要求 |
发展前景 | 初级开发-中级开发-高级开发-架构师-CTO | 初级测试-中级测试-高级测试-项目经理/产品经理 |
薪资待遇 | / | 中小企业总体小于开发,大企业基本和开发持平 |
❓问题1:软件测试与调试的区别?
(1)执行阶段不同:测试在前。测试在开发没有写代码的时候就已经在测试了。测试贯穿整个生命周期。调试是在开发写出来部分或者整体代码才进行,调试一般发生在开发阶段。
(2)参与角色不同:测试时测试人员和开发人员一起。黑盒测试主要由测试人员完成,单元/集成测试主要由开发人执行。 -调试则由开发人员执行。
(3)目的不同:调试:发现问题并解决;测试则发现问题。
(4)手段区别:调试:Debug+代码逻辑; 测试:根据各种方法:等价类划分,边界值法,判定表法...
🌈3、一个优秀的软件测试人员应该具备的素质
(1)技能相关:掌握自动化测试技术,有一定的编程能力,优秀的测试用例设计能力;
(2)非技能相关:沟通能力,快速学习的能力,开发能力,文字能力,探索性思维,兴趣,有一定的抗压力,责任感等。
🌟二、需求与测试用例、软件错误,软件生命周期
🌈1、需求是什么?
需求主要分为:用户需求和软件需求。
(1)用户需求:简单理解为是甲方提出的需求。如果没有甲方,那么就是指在终端用户使用产品的时候必须要完成的任务。这种需求一般比较简略。
(2)软件需求:又叫做:功能需求。一般在进行软件开发的时候会把用户需求转换为软件需求,软件需求是开发人员和测试人员工作的直接依据。一般会有一个软件需求规格说明书。
🌈2、从测试人员角度看需求
为什么说需求是测试人员开展软件测试工作的依据?
在具体设计测试用例的时候,首先需要搞清楚每一个业务需求对应的多个软件功能需求点,然后分析出每个软件需求功能点对应的多个测试需求点,最后针对每个测试需求点设计测试用例。可以总结为:业务需求——>软件功能需求点——>测试需求点——>设计测试用例。
以用户登录功能为例,主要分解为以下过程:
❓ 问题2:为什么需求对测试人员这么重要?
(1) 从软件功能需求出发,需要无遗漏的识别出测试需求是至关重要的,这直接关系到用例的测试覆盖率。
(2)对于识别出的每个测试需求点,都需要采取具体的设计测试用例的方法来进行测试用例的设计。
🌈3、什么是测试用例?(重要)
(1)测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包括:测试环境,操作步骤,测试数据,预期结果等。测试用例解决了两大问题:测什么,怎么测。
🌰一个简单的测试用例:用户注册成功
步骤动作: | 期望的结果: |
进入注册页面,选择注册 | 系统展示出注册页面 |
输入符合要求的个人姓名,邮箱,性别,密码,确认密码,同意协议书,提交注册信息。 | 系统进行注册操作,发送激活邮箱,注册成功后,跳转到注册成功页面。 |
用注册的邮箱和密码,进行登录功能 | 登录成功,系统展示欢迎界面 |
测试方式 | 手工 |
重要程度 | 非常重要 |
测试环境 | CHROME,IE10+ |
测试前提 | 系统运行正常,邮件服务器已经开启 |
功能模块 | 注册登录 |
那么测试用例有什么作用呢?
在测试过程中,可能会因为没有全面的了解所有功能,所以测试的覆盖率无法衡量。对新版本的重复测试很难实施,并且存在大量的冗余测试而影响了测试效率。而设计测试用例就可以解决以上问题。
- 测试用例可以保证测试质量;
- 测试用例是测试人员执行测试的重要工作依据;
- 测试用例是自动化实施的重要依据;
- 测试用例可以降低工作人员的工作重复性。
🌈4、什么是软件错误(BUG)?
准确的来说:当且仅当规格说明是存在的并且是正确的,但是程序与规格说明之间不匹配那就说明出现了软件错误。如果说需求规格说明书中没有提到的功能,判断标准以最终的用户为准:当程序没有实现其最终用户合理预期的功能需求时,就是软件错误。
🌈5、软件的生命周期?
软件的生命周期指的是软件产品从设想到不再使用而结束的时间。主要分为6个阶段:需求分析——>计划——>设计——>编码——>测试——>运行维护。
解释:
(1)需求分析:分析需求是否合理,需求是否完整;
(2)计划:就是指这个项目由谁来开发,由谁来测试,什么时候开发结束,什么时候测试结束,什么时候产品上线等;
(3)设计:开发人员来设计项目底层如何实现,要输出一个技术文档(详细的记录了在软件技术上如何实现,接口,库表,定时任务,mq等);测试人员设计测试用例;UI设计师:将需求文档转换为图片,做UI设计稿等;
(4)编码:开发人员开始开发软件,测试人员设计测试用例;
(5)测试:执行测试,提交BUG,验收BUG;
(6)运行维护:将项目推到线上,如果发现线上BUG,则进行修复后重新上线。
🌟三、开发模型与测试模型(重要)
🌈1、瀑布模型(Waterall Model)
特点:瀑布模型是一个线性模型。主要特点是每一个阶段只执行一次。
优点:每个阶段做什么事情都非常明确。
缺点:测试人员介入需求太晚,以至于如果有问题发现的时间也太晚。如果发现了问题,需要不断的回溯向前找问题。
适用于较小的项目。
🌈2、螺旋模型(Spiral Model)
一般在软件开发初期阶段需求不是很明确的时候,采用渐进式的开发模式。螺旋模型是代表之一。
特点:每一次实施之前都要进行风险分析。
优点:风险分析可以避免一些未知的问题。
缺点:一旦风险分析出现错误就会带来损失,因此风险分析需要一定的成本。
对于规模庞大,复杂度高,风险大的项目。
🌈3、增量,迭代
增量开发能显著降低项目风险,结合软件持续构建机制,构成了当今流行的软件工程最佳实践之一。增量开发模型,鼓励用户反馈,在每个迭代过程中,促使开发小组以一种循环的、可预测的方式驱动产品的开发。因此,在这种开发模式下,每一次的迭代都意味着可能有需求的更改、构建出新的可执行软件版本,意味着测试需要频繁进行,测试人员需要与开发人员更加紧密地协作。
增量通常和迭代混为一谈,但是其实两者是有区别的。增量是逐块建造的概念,例如画一幅人物画,我们可以先画人的头部,再画身体,再画手脚……而迭代是反复求精的概念,同样是画人物画,我们可以采用先画整体轮廓,再勾勒出基本雏形,再细化、着色。
🌈4、敏捷(重要!)
敏捷宣言
敏捷开发有很多种方式,其中scrum是比较流行的一种。。
(1)scrum里面的角色
scrum主要由product owner(PO)产品经理, scrum master(SM)项目经理、team研发团队(开发RD,测试QA)组成。
- product owner负责整理user story(用户故事),定义其商业价值,对其进行排序,制定发布计划,对产品负责。
- scrum master 负责召开各种会议,协调项目,为研发团队服务。
- 研发团队由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品。
(2)scrum的基本流程
迭代开发:scrum会将产品的开发分解为若干个小sprint(迭代),周期从1周到4周不等,但一般不会超过4周。参与的团队人数一般是5人-9人。每周期要迭代完成的user story是固定的。每次迭代会产生一定的交付。
scrum的基本流程如下:
🌟四、软件测试模型
🌈1、软件测试V模型
特点: 线性的。左边是开发,右边是测试。优点:每个阶段干什么事情非常清晰。同时测试被划分成许多类型。
缺点:测试人员介入太晚,测试和开发是并行的。
🌈2、软件测试W模型
特点:W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成:开发一个V,测试一个V。
优点:测试人员早早介入了需求,测试与开发是同步进行。有利于尽早地全面的发现问题。
缺点:不能拥抱变化,意味着不能适用于敏捷。需求、设计、编码等活动被视为串行的;测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。无法支持敏捷开发模式。
周末啦😁继续努力鸭~