测试相关概念

1.测试相关问题

1.1 什么是软件测试?

  • 目的:找bug,验证正确性。
  • 原则:以客户(客户需求)为中心,遵循软件测试的规范、流程、标准和要求。
  • 理解:经过一系列的操作,验证软件的功能是否满足用户需求

1.2 测试与调试的区别?

  • 目的不同
    测试的任务是发现程序中的缺陷;
    调试的任务是定位并且解决程序中的问题。
  • 参与角色不同
    测试主要是由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、单元/集成测试主要是由开发人员执行。
    调试由开发人员完成。
  • 执行的阶段不同
    测试贯穿整个软件开发生命周期,调试一般在开发阶段。

1.3 测试与研发的区别?

一、测试与研发中调试的区别。

二、

  • 目的
    1>测试:侧重验证研发的功能的正确性(做好)。
    2>研发:侧重完成任务的开发(做完)。
  • 难易程度
    1>测试:测试广度大,专业度低。
    2>研发:开发广度小,专业度高。
  • 技能要求
    测试要求更广泛:业务能力,设计和架构分析能力,测试手段和工具使用,用户模型分析和理解,编程能力等。

测开与研发?

测开要求有代码能力,会自动化测试。

1.4 为什么要做软件测试?作为一个测试人员应该具备哪些素质?

  • 素质
    1>兴趣、性格(好奇心、敏感、善于怀疑等)
    2>能力:快速学习能力、沟通能力、文字能力、开发能力等
    3>组织协调
    4>责任心强
    5>逆向思维、扩展性思维、发散性思维、批判性思维
  • 测试很重要,而且只有通过测试的产品才能上市,测试是说明产品是否能够交给用户使用的最后一道关卡。
    例如:双十一期间淘宝付款卡顿,页面提示……,好奇问什么会这样,后来学习知道这是bug。

2.什么是需求?

  • 答:符合用户期望和正式文档(合同,标准,规范)规定的条件和权能,包括用户需求软件需求
  • 关系:软件需求是由用户需求转换来的(更细致化),用户需求并不一定合理。
  • 区别:是否能指导开发人员进行设计、编码,指导测试人员编写测试用例。

3.什么是测试用例(Test Case)?

  • 为了实施测试向被测试系统提供的一组集合,包含要素:测试环境(软、硬)测试数据测试步骤预期结果、测试版本、测试功能模块、重要性、前提条件……

eg:网易邮箱登录成功测试用例

标题:网易邮箱登录成功测试用例
步骤动作期望结果
打开网易邮箱登录页面,选择登录系统展现登录页面
输入正确邮箱和密码,点击登录按钮系统发送验证码到邮箱
输入正确验证码登录成功,进入邮箱主页面
测试方式手工
重要性重要
测试环境CHROME
前提条件已注册
功能模块登录模块

4.软件开发的生命周期

  • 需求分析→计划→设计→编码→测试→运行维护

5.软件测试的生命周期(软件测试流程)

  • 需求分析→测试计划→ 测试设计、测试开发(设计编写测试用例)→ 测试执行→ 测试评估(提交缺陷报告生成测试报告)

6.缺陷管理

6.1 什么是BUG?

  • 当且仅当规格说明(软件需求)书存在且正确,程序与规格说明不匹配即为bug。
  • 如果没有规格说明,程序与用户需求(正确需求)不一致或用户期望(合理期望)不一致即为bug。

6.2 BUG如何描述?(描述软件缺陷的要素)

描述BUG的目的:让开发人员更好的去定位BUG。

  • 发现问题的版本:开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障。
    (版本的标识也有利于统计和分析每个版本的质量)
  • 问题出现的环境:环境分为硬件环境和软件环境,如果是web项目,需要描述浏览器版本,客户机操作系统等,如果是app项目,需要描述机型、分辨率、操作系统版本等。
    (详细的环境描述有利于故障的定位)
  • 错误重现的步骤:描述问题重现的最短步骤。
  • 预期行为的描述(预期结果)
  • 错误行为的描述(实际结果):描述错误的现象。
    eg:crash等可以上传log,UI问题可以有截图等

提交了如下bug:
1、在短信列表,选择一条短信,进行删除,删除失败
2、在短信列表,选择一条短信,进行查看,在查看页面,进行删除,删除失败

故障发现版本:VPS20180226_01
故障类别:兼容性
故障优先级:中
故障标题:ie下界面显示异常,界面文字有重叠
故障描述:
        测试环境:win7+IE8
        测试环境:测试步骤:1、打开vps首页,点击“通知”链接,进入通知页面
        测试环境:预期结果:通知页面显示正确,一页显示10条通知,按时间顺序倒序排列
        测试环境:实际结果:页面显示10条通知,通知顺序正确,但是页面文字有重叠
附件:上传截图

6.3 BUG的定义级别

每个公司都不一样

  • Blocker(崩溃):系统无法正常运行。
    eg:运行系统死机;出现死循环;数据库发生死锁等。
  • Critical(严重):系统可以运行,但是不稳定。
    eg:数据库插入错误;密码明文显示;直播画面失真;数据泄露等。
  • Major(一般):系统可以稳定的运行,但功能没有完全的实现。
    eg:微信朋友圈上传图片显示不出来;查询错误等。
  • Minor(次要):建议类的。
    eg:错别字、提示语丢失;文字排列不整齐等。

6.4 软件缺陷的生命周期

* 缺陷描述要素:测试环境、测试版本号、测试数据、测试步骤、预期结果描述、实际结果描述、附件、缺陷级别、缺陷类型……

  • 缺陷级别:New、Open、Fixe、Rejected、Delay、Closed、Reopen。
    New:新发现的Bug,未经评审决定是否指派给开发人员进行修改。
    Open:确认是Bug,并且认为需要进行修改,指派给相应的开发人员。
    Fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。
    Rejected:如果认为不是Bug,则拒绝修改。
    Delay:如果认为暂时不需要修改或暂时不能修改,则延后修改。
    Closed:修改状态的Bug经测试人员的回归测斌验证通过,则关闭Bug。
    Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改
  • bug的状态转移图:
    在这里插入图片描述
  • 遵循一些基本原则:
    1> 测试人员对每一个缺陷的修改必须重新对每一个包含更改后的代码的新版本进行回归测试,确保相同的问题不再出现,才能关闭缺陷。
    2> 对于拒绝修改和延迟修改的Bug,需要经过包含测试人员代表和开发人员代表、用户方面的代表(或代表用户角度的人)的评审

6.5 如何发现更多的bug?

  • 1.二八原则(80%的故障集中于20%的模块,80%的故障集中于20%的开发人员),针对性(模块、人员)加强测试广度和深度。
  • 2.逆向思维、扩展、发散性思维。
  • 3.不过度依赖于用例和需求文档。
  • 4.测试人员尽早介入项目。

6.6 提交一个缺陷研发人员不认可怎么办?

核心:批判性思维:清楚–准确、切题–深刻,有意义,有逻辑性–公正、全面。

  • 1.bug描述是否清除(问题出现的版本、问题出现的环境等)。
  • 2.bug级别定义清楚(有理有据,符合公司标准)。
  • 3.站在用户角度考虑问题。
    应该让开发人员了解到Bug对用户可能造成的困扰,这样才能促使开发人员更加积极地、高质量地修改Bug。
  • 4.测试人员提高自己的业务水平。
    不仅是提问题,最好找到bug出现的原因,甚至提出解决方案等。
  • 5.进行bug评审。
    开发人员不接受时,不要争吵,可能你已经经过了多轮沟通,但是开发人员仍然拒不接受,此时可以发起Bug评审。

7.开发模型(五个)

7.1 瀑布模型

在这里插入图片描述

  • 特点:串行
  • 适合项目需求相对稳定、有类似的产品的项目
  • 优点:1> 强调开发的阶段性;
    2> 强调早期计划及需求调查;
    3> 强调产品测试。
  • 缺点:1> 发现缺陷较晚、修复成本过高;
    2> 开发过程中的经验教训不能应用于产品的开发过程;
    3> 依赖于早期进行的唯一一次需求调查,不能适应需求的变化。

7.2 螺旋模型

一般在软件开发初期阶段需求不是很明确时,采用渐进式的开发模式。

螺旋模型是渐进式开发模型的代表之一。

螺旋模型适合项目规模庞大、复杂度高、风险大、前期需求不是很明显的项目

螺旋模型允许有一段独立的测试时间和阶段,测试必须跟随开发的迭代而迭代。因此,回归测试很重要。
在这里插入图片描述

  • 优点:1> 强调严格的全过程风险管理。
    2> 强调各开发阶段的质量。
    3> 提供机会检讨项目是否有价值继续下去。
  • 缺点: 引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高的要求。这需要人员、资金和时间的投入。

7.3 增量、迭代

增量开发能显著降低项目风险,结合软件持续构建机制,构成了当今流行的软件工程最佳实践之一。

增量开发模型,鼓励用户反馈,在每个达代过程中,促使开发小组以一种循环的、可预测的方式驱动产品的开发。因此,在这种开发模式下,每一次的迭代都意味着可能有需求的更改、构建出新的可执行软件版本,意味着测试需要频繁进行,测试人员需要与开发人员更加紧密地协作。

适合项目

  • 增量适合需求比较明确,架构比较稳定的项目。而且增量功能的实现不影响架构。
  • 迭代适合需求不明确,架构风险大的项目。

区别

  • 增量逐块建造的概念,例如画一幅人物画,我们可以先画人的头部,再画身体,再画手脚……
  • 迭代反复求精的概念,同样是画人物画,我们可以采用先画整体轮廓,再勾勒出基本雏形,再细化、着色。
  • 迭代模型比增量模型抗风险能力更强些

理解:系统 A B C D 四个业务模块,2周时间完成。

  • 增量模型:第一周完成 A B 两个模块,第二周完成 C D 两个模块。
  • 迭代模型:第一周完成 A B C D 四个业务模块的基本框架和基本功能,第二周完成较复杂的业务功能。

7.4 敏捷

敏捷宣言:

  • 个体与交互重于过程和工具
  • 可用的软件重于完备的文档
  • 客户协作重于合同谈判
  • 响应变化重于遵循计划

敏捷开发有很多种方式,其中scrum是比较流行的一种。

scrum

(一)特点

轻文档、轻流程、重目标、重产出

轻量级:迭代周期短,参与人员少。

(二)scrum里的角色

scrum由product owner(PO 产品经理)、scrum master(SM 项目经理)和scrum team(ST 研发团队)组成。

  • PO负责把用户需求转换成user story(用户故事),定义其商业价值,对其进行排序,制定发布计划,对产品负责。
  • SM负责召开各种会议,管理流程,协调项目,为研发团队服务。
  • ST则由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品

(三)scrum的基本流程

在这里插入图片描述
scrum的基本流程如上图所示:

  • 产品负责人负责整理user story,形成左侧的product backlog。
  • 发布计划会议:product owner负责讲解user story,对其进行估算和排序,发布计划会议的产出就是制定出这一期迭代要完成的story列表,sprint backlog。
  • 迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每个任务都有明确的负责人,并完成工时的初估计。
  • 每日例会:每天scrum master召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。
  • 演示会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取得的成果。期间大家的反馈记录下来,由po整理,形成新的story,放入product backlog里。
  • 回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,已达到持续改进的效果。

(四)敏捷流程和敏捷测试

  • 敏捷流程:PO整理USER STORY —— PO开会,确定迭代过程 —— 分配任务,评估计时 → 研发中 → 研发完成 → 测试中 → 测试完成 → 待发布 → 发布。

  • 敏捷测试:1> 文档的依赖度低——测试用例作用弱,多采用思维导图(设计和执行同时执行,根据测试结果不断调整测试计划)、探索性测试;及时沟通,测试人员和开发人员关联紧密,测试人员不仅要找bug,还要与研发人员一起寻找bug产生的原因。
    2> 产品迭代频繁——回归测试、自动化测试,自我适应。

8.软件测试V、W模型

8.1 软件测试v模型

在这里插入图片描述

  • 特点:后期测试阶段和前期开发过程期间可以一一对应起来,清楚的标注每一个测试阶段的依据。
  • V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求。
  • 缺点:仅仅把测试作为在编码之后的一个阶段,未在需求阶段就进入测试,不利于项目前期风险的及时发现

8.2 软件测试W模型

在这里插入图片描述

  • W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系
  • W模型特点测试在项目前期介入,测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进行的,有利于尽早地全面的发现问题。
  • W模型优点:1> 有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。
    2> 对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度
  • 缺点:1> 需求、设计、编码等活动被视为串行的;阶段性比较强,强调上一阶段完全结束,才可正式开始下一个阶段工作。
    2> 不适用于需求频繁变更的项目,无法支持敏捷开发模式
    3> 对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件测试是指在软件开发过程中,通过执行预定的测试计划来发现软件中存在的缺陷和问题的过程。它是保证软件质量的重要手段,也是软件开发过程中不可或缺的环节。 软件测试的主要原理包括: 1. 等价类划分原理:将测试数据分成若干个等价类,每个等价类包含相同的特性,用来减少测试数据的数量和测试时间。 2. 边界值分析原理:在等价类划分的基础上,特别是在数值类型的输入参数上,测试边界值的有效性。 3. 错误推测原理:基于经验和直觉,推测程序中可能存在的错误,从而有针对性地进行测试。 4. 正交试验原理:使用正交表对测试用例进行设计,以尽可能地覆盖所有可能的情况,提高测试用例的效率。 5. 回归测试原理:在对软件进行修改或扩展后,重新运行原有测试用例,以确保对软件没有引入新的问题。 软件测试相关概念包括: 1. 黑盒测试测试人员不需要了解软件内部结构和实现细节,仅根据需求规格说明来设计测试用例。 2. 白盒测试测试人员需要了解软件内部结构和实现细节,根据代码逻辑来设计测试用例。 3. 单元测试:对软件中最小的可测试单元进行测试,如函数、模块等。 4. 集成测试:对不同单元之间的接口和交互进行测试,确保整个系统的集成和交互正常。 5. 系统测试:对整个系统进行测试,确保系统功能和性能符合需求规格说明。 6. 验收测试:由客户或用户对软件进行测试,以确认软件满足用户的需求和期望。 总之,软件测试是一个复杂而重要的过程,需要综合使用各种测试技术和方法,以确保软件的质量和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值