软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)

一、软件测试的定义

        使用人工或者自动的手段来运行或测定某个软件产品系统的过程,其目的是在于
检验是否满足规定的需求或者弄清预期结果与实际结果的区别。

        描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。
换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。

二、软件测试的目的

        测试是运行或测定程序的过程,目的在于确保在用户使用之前发现错误bug。
        确保产品完成了它所承诺或公布的功能,还有没有做需求没有要求它做的事情(功能需求)
        确保产品满足性能和效率的要求 (性能性需求)
        确保产品是健壮的、适应用户环境的。(易用性、可靠性)

三、在不影响用户使用的大前提下,不是所有的缺陷都需要被修复。例如以下这些情况:

        缺陷修复成本太高
        现有的技术,无法修复
        由框架引起的缺陷
        项目比较紧张,来不及修改
        第三方软件造成的缺陷

四、软件测试的意义

        1、提高软件质量;
        2、保障软件的安全; 
        3、降低软件开发成本;
            软件缺陷越早发现修复成本越低
            需求阶段成本最低
            需求阶段发现的问题最多
        4、降低因软件缺陷带来的商业风险;
        5、为用户接受软件提供有力的依据;
        6、树立用户对软件的信心。

五、软件测试的分类及方法

     软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第1张图片

         按测试策略可分:

        1.1---功能性测试、易用性测试、性能测试、安全和可靠性测试、可移植性和兼容性测试

 软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第2张图片

        1.2---文档测试

 软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第3张图片

         文档测试内容:

软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第4张图片

软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第5张图片         1.3---安全和卸载测试

        B/S架构不需要执行安装卸载测试,只有CS架构才需要安装卸。

软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第6张图片

软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第7张图片

        1.4--- 本地化和国际化测试、α/β测试、A/B测试、灰度测试、交叉测试、数据测试

 软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第8张图片

1.5---冒烟测试、回归测试、探索测试(错误推测法)、敏捷测试 

软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第9张图片 六、软件测试的主要原则

        1、所有的测试都应追溯到用户需求
            测试的是需求
            测试必须站在用户的角度进行测试
        2、穷举测试不可能
            所以说需要采用一些测试方法
            从而无法保证测试过的软件没有缺陷
        3、尽早和不断的测试
        4、缺陷集群性
            缺陷往往集中在某几个模块
            二八原则—80%的缺陷集中在20%模块里面
        5、杀虫剂悖论
            要随时更新测试用例
            测试用例不是一劳永逸的事情,是需要不断的升级和维护
        6、妥善保存一切测试过程文档
            测试过程中产生的文档
        7、程序员应避免检查自己的代码
            单元测试、代码检查
        8、尽量避免测试随意性
            需要有测试用例,不要想到哪测哪

 七、软件生命周期

        指软件从产生到报废或停止使用的生命周期。

        按阶段划分为:

        1、问题定义
            提出要解决的问题,即要做什么软件
        2、可行性研究
            经济可行性
            技术可行性
            解决到底要不要做这款软件
        3、需求分析
            软件要做成什么样子,具体有哪些功能
            万丈高楼平地,需求分析排第一
        4、概要设计(总体设计)
            设计软件的一个框架和结构
        5、详细设计
            完善每个具体的功能
        6、编码和单元测试
            代码的开发
                开发编写完代码后,需要进行单元测试,还有自测
            单元测试
                对程序中最小单元的测试,对代码层面进行测试
                要求对应的测试人员要有一定的代码基础
                实际一般由开发自己完成,但所有测试工作,最后是由测试完成
        7、综合测试
            测试
        8、软件维护
            产品上线后运维跟进这款软件的使用

 八、软件开发过程模型

        1.瀑布模型

        软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第10张图片

        需求分析
            开发、测试等根据需求文档进行需求分析
        设计
            包括概要设计、详细设计、UI设计、数据库结构设计
        优点
            ①开发的各个阶段比较清晰。
            ②当前一阶段完成后,只需关注后续阶段
        缺点
            ①依赖于早期的需求调查,不适应需求的变化。
            ②风险往往延至后期才显露,失去及早纠正的机会。
            ③前面未发现的错误会传递并扩散到后面的阶段,可能导致项目失败。
            ④瀑布模型开发周期长 

        2.增量模型

软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第11张图片

        增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。也就说,将软件先模块化,然后再逐一进行开发,每个模块在开发的时候,还是使用的瀑布模型,该模块开发完后,在集成到系统中,然后需要对整个系统进行测试。

        优点:
            ①将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展。
            ②以组件为单位进行开发降低了软件开发的风险。一个开发周期内的错误不会影响到整个软件系统。
            ③开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整。
        缺点:
            ①要求待开发的软件系统可以被模块化。如果待开发的软件系统很难被模块化,那么将会给开发带来很多麻烦。
            ②对管理人员的要求比较高

        3.敏捷模型
        以产品为中心,注重结果而不强调过程;快速响应需求变更,拥抱变化。
特点:
         个体交互重于过程和工具
                传统模型中,开发过程都会借助于各种流程和项目管理工具
                敏捷模型更强调面对面的沟通(有效)
         可用的软件重于完备的文档
                传统模型强调过程,该有的文档必须要有
                敏捷模型注重结果,不必要的文档可以不要
                必要的文档——需求
        客户协作重于合同谈判
                传统模型先签合同在开发
                敏捷模型边谈边开发
        响应变化重于遵循计划
               传统模型强调按照计划进行开发
               敏捷模型拥抱变化

   九、软件测试过程模型

        1.V模型

软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第12张图片               单元测试
               检测代码的开发是否符合详细设计的要求,依据详细设计说明书
        集成测试
               检测此前测试过的各组成部分是否能完好地结合到一起
        接口测试
               模块间的集成、可方法之间调用、也可系统之间调用,依据概要设计说明书
        系统测试
               检测已集成在一起的产品是否符合需求规格说明书要求,依据需求规格说明书
        验收测试
               则检测产品是否符合最终用户的需求,依据需求规格说明书

        优点:
        测试V模型即包含了底层测试又包含了高层测试;
                底层测试:检验源代码质量的测试,如:单元测试;
                高层测试:检验整个系统的需要,如:系统测试;
        V模型清楚地标识出了软件开发的阶段。
        整个开发过程分成不同阶段,每阶段工作明确,因此便于控制开发过程。
        缺点:
        测试介入太晚,到了测试阶段,程序已经完成,错误已经产生,很多前期的错误一直到测试阶段才发现,甚至无法发现,往往无从修改了。
        不适应需求的变更,实际的开发过程中,在需求阶段很难把用户的需求完全明确下来,因此,当需求变更时将会导致阶段反复,而且都要重复需求、设计、编码、测试等过程,返工量非常大,模型灵活性比较低。

        2.W模型

软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第13张图片

         优点:
         测试贯穿于整个开发周期,并且测试和开发是并行的关系,因此
                测试介入早,不仅仅对程序进行测试,还对需求、设计等文档进行测试
                可以及时发现需求、设计阶段产生的缺陷
                W模型有利于尽早地全面的发现问题,有利于降低开发成本
        缺点:
            需求分析、设计、编码是串行的关系,因此周期特别长,无法支持迭代
            测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作,因此,对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。

        3.敏捷测试模型

        是一套解决方案、一类测试操作与管理的框架、一组实践或由一定顺序的测试活动构成的特定的测试流程。
        内容:
            持续测试,不在关注测试阶段
            重点关注持续迭代地测试新功能,而不再强调严格的测试阶段。
        尽早测试:
            当某个功能模块开发完后,即可进行模块层面的单元测试,同时随着测试深入,持续进行回归测试保证之前测试过内容的正确性。

        4.V模型、W模型优缺点

软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第14张图片

        5. 传统模型与敏捷模型优缺点

软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第15张图片

十、ISO软件质量管理体系

软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第16张图片

十一、CMM软件能力成熟度模型

软件测试-相关概念(分类、软件生命周期、软件开发过程模型、软件测试过程模型、ISO软件质量管理体系、CMM软件能力成熟度模型及定义、目的等)_第17张图片

你可能感兴趣的:(软件测试,#功能测试,软件测试,测试类型)