测试概念篇

目录

  • 调试和测试的区别
  • 软件测试的概念
  • 软件测试和软件开发的区别
  • 优秀的测试人员应该具什么素质
  • 为什么要做测试
  • 软件的生命周期
  • 什么是Bug
  • 什么是需求
  • 测试用例是什么
  • 产品的生命周期
  • 软件测试贯穿于软件的整个生命,如如何贯穿?
  • 开发模型
    • 瀑布模型(面向文档的软件开发模型)
    • 螺旋模型
    • 增量模型
    • 敏捷模型
  • 测试模型
    • V模型
    • W模型

调试和测试的区别

1.目的不同
测试的任务是发现程序中的缺陷;
调试的任务是定位并且解决程序中的问题。
2.参与角色不同
测试主要是由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、单元/集成测试主要是由开发人员执行。
调试由开发人员完成。

3.执行的阶段不同

测试贯穿整个软件开发生命周期;

调试一般在开发阶段。

软件测试的概念

软件测试就是执行和运行软件的过程,其目的是为了发现软件功能和需求不相符合的地方,或者寻找实际输出和预期输出之间的差异。

软件测试和软件开发的区别

研发主要以编码为主,而测试以测试为主,开发为辅。
难易程度:开发广度小,专业度高。测试广度大,专业度低
工作环境:基本类似
薪水:中小企业总体比研发低,自动化等专业测试领域和研发基本无差距。大厂研发测试基本无差别
发展前景:自动化测试、安全测试等领域发展前景和研发基本一致。
繁忙程度:一般比研发轻松,但敏捷模式下差距不大,产品发布前压力比较大
技能要求:测试要求更广泛:业务能力,设计和架构分析能力,测试手段和工具使用,用户模型分析和理解,编程能力

优秀的测试人员应该具什么素质

答案包含但不限于以下几个方面:

  1. 思维模式
    逆向思维:开发盖房子,测试拆房子。不走寻常路。
    案例:手机中有两条通话记录,进行删除。删除为0后,继续删除。
    发散性思维:探求多项答案
    案例:测试一台自动售票机。正向,逆向,边界,压力,性能,耗电量,断电,外观,没零钱…
  2. 兴趣
    真的有兴趣么?而不是开发加班多,不想编码?
  3. 性格特征
    好奇心
    成就感
    敏感
    不浮躁
    善于怀疑
    批判性思维:清楚–准确、切题–深刻,有意义,有逻辑性–公正、全面
  4. 能力
    快速学习能力
    沟通能力
    文字能力
    开发能力
  5. 责任感和压力
    责任感:测试往往是产品的最后一个检验者;测试的工作成效很难衡量,测试用例执行、bug数目的多少都无法说明产品是否能够交给用户使用。所以,责任感是最重要的测试必备素质之一。
    压力:来自开发人员、用户、上级、自己的压力。测试人员的压力比想象中的要大。

为什么要做测试

答案同优秀的测试人员应该具备的素质。

软件的生命周期

六个阶段:需求分析阶段,计划阶段,设计阶段,编码阶段,测试阶段,运行维护阶段。
测试概念篇_第1张图片

什么是Bug

当且仅当规格说明是存在的并且正确,程序与规格说明之间的不匹配才是错误。当需求规格说明书没有提到的功能,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能和要求时,就是软件错误;

什么是需求

需求就是满足用户期望或正式规定文档(合同、标准、规范)所具有的条件和权能,包含用户需求和软件需求。

需求主要分为两种: 用户需求 和 软件需求
用户需求:可以理解为就是甲方提出需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。这种需求一般是比较简略的,并且用户需求是五花八门的
软件需求:也就是功能需求,详细描述了开发人员必须实现的软件功能
开发人员和测试人员的直接工作依据就是软件需求

用户的需求能否作为测试和开发的直接工作依据?
肯定是不能的,因为大多数的公司在进行软件开发时,是把用户需求转化为软件需求,这个过程依据,
比如技术是否可行,市场是否可行,成本投入和受益占比等多方面分析的

测试用例是什么

测试用例的存在就是要解决两个问题,测什么,怎么测

测试用例是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素

产品的生命周期

开发流程/软件的生命周期

产品的生命周期:需求分析—— 计划 —— 设计 —— 编码 —— 测试 —— 运行维护

需求分析:市场分析、技术上是否可行、成本和收益占比

计划:什么时候开始、什么时候结束、耗时多久

设计:将大的需求转变为一个个可具体执行的任务。进行开发设计(开发哪些接口、使用什么开发框架、使用什么技术)

编码:开发人员参考需求文档和技术文档等等来进行代码开发

测试:测试人员参考测试用例来设计

运行维护:

完善性维护:对功能进行完善

修复性维护:对项目中没有发现的问题要及时进行修复

预防性维护:为了避免产品在线上运行期间出现意想不到的问题,需要进行一些预防性的手段

软件测试贯穿于软件的整个生命,如如何贯穿?

软件测试的生命周期:需求分析 —— 测试计划 —— 测试设计与开发 —— 测试执行 —— 测试评估

  • 需求分析:
    用户角度思考问题:软件需求是否合理
    
    技术角度思考问题:技术上是否可行,还是否有优化空间
    
    测试角度思考问题:是否存在业务逻辑冗余/冲突
    
  • 测试计划:什么时候开始测试、什么时候测试结束、耗时多久
  • 测试设计与开发:写测试文档,明确标注使用到的测试方法,测试工具,测试形式,参考需求文档,技术文档等等编写测试用例
  • 测试执行:充分利用测试用例和其他工具对项目尽可能做到全方面的覆盖测试
  • 测试评估:评估产品是否存在其他的质量问题,功能演示
  • 开发模型

    瀑布模型(面向文档的软件开发模型)

    场景:适用于需求稳定、明确的项目。
    过程:需求分析、总体设计、详细设计、编码和调试、集成测试和系统测试。
    

    测试概念篇_第2张图片
    特点:是一种严格遵循软件生命周期各个阶段的固定顺序的模型,每个阶段划分明确,都有固定文档或源程序流入下一个阶段。需求分析是一切活动的基础。

    缺点:

    1. 由于需求不可能精确、完整的描述整个系统,造成后期维护工作繁重,这些维护工作大多都是在修正需求分析阶段引入的缺陷。

    2. 难以适应变化,如果软件在后期出现需求变化,整个系统需要从头开始。

    3. 交付时间长,需要等到所有阶段都结束才能交付产品,导致客户无法尽快确定需求是否满足。

    4. 产生大量对客户无用的文档,确花费了大量人力,是一种重载过程。

    螺旋模型

    场景:项目规模庞大,复杂且高风险。
    特点:是瀑布模型和演化模型的结合,并增加了风险分析(引入非常严格的风险识别、风险分析、风险控制),支持用户需求动态变化。
    过程:需求定义、风险分析、工程实现、评审。
    

    测试概念篇_第3张图片
    特点:螺旋模型中增加了风险分析和原型

    缺点:

    1. 项目中可能存在的风险性与风险管理人员的技能水平有直接关系
    2. 需要人员、资金、时间的增加和投入,可能会导致项目的成本太高

    增量模型

    场景:在系统的技术架构成熟、风险较低的时候采用。
    特点:提前进行集成测试和系统测试,缩短初始版本的发布周期,提高用户对系统的可见度
    

    测试概念篇_第4张图片

    敏捷模型

    场景:适用于小规模软件或者小团队开发。
    特点:是一种以人为核心、迭代、循序渐进的开发方法。
    

    测试概念篇_第5张图片

    测试模型

    V模型

    W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分
    别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。

    特点:
    1.测试过程中存在的不同类型的测试
    2.测试阶段的参考标准以前面对应阶段为准
    缺点:测试后置
    

    测试概念篇_第6张图片
    明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间
    各阶段的对应关系

    V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功
    能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同
    的要求
    局限性:仅仅把测试作为在编码之后的一个阶段,未在需求阶段就进入测试

    W模型

    特点:W模型重流程、不能够迎接变化、W模型不适用于敏捷模型

    测试概念篇_第7张图片
    局限性:需求、设计、编码等活动被视为串行的;测试和开发活动也保持着一种线性的前后关系,
    上一阶段完全结束,才可正式开始下一个阶段工作。无法支持敏捷开发模式。对于当前软件开发复
    杂多变的情况,W模型并不能解除测试管理面临着困惑。

你可能感兴趣的:(测试,单元测试,测试工具,安全性测试)