软件测试相关概念以及原则(一)

时间:2024-01-24 09:00:23

软件测试:使用人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。

软件测试的测试对象:软件概要设计、软件详细设计、软件运行环境、可运行程序、软件源代码、软件需求

      五大要素:质量、人员、资源、流程、技术

      两大目标:测试覆盖率、测试效率

遵循的原则:1、测试显示缺陷的存在,但不能证明系统不存在缺陷

       2、穷尽测试是不可能的,应设定及时终止的条件

      3、测试应尽早进行

      4、缺陷具备群集特性

      5、不定期评审测试用例和方法,增加不同的测试方法

      6、二八原则:用百分之八十的时间和资源用在百分之二十的重点模块上面

      7、测试活动依赖于测试背景

 

软件测试的分类

--------------按测试阶段分类

单元测试:对软件中的最小可测试单元进行检测和验证。

  原则:1、尽可能保证各个测试用例是相互独立的

     2、一般由代码的开发人员来实施

  益处:1、能尽快发现缺陷

     2、有利于重构

     3、简化集成

     4、文档编写

     5、用户设计

  限制:1、不可能覆盖所有的执行路径

     2、每一行代码,一般需要3-5行测试代码才能完成单元测试,所以存在一个投入和产出的平衡

测试框架:Junit-Java  nunit-.net  PHPunit-php  CPPunit-c++

------

集成测试:是在单元测试的基础上,测试再将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中, 各部分工作是否达到或实现相应技术指标及要求的活动。

主要实施方案:1、bigbang:一次性集成,把大部分的开发模块都耦合起来形成一个完整的软件系统为系统的主要组成部分,

        并把他们拿来做集成测试,把所有的东西组装好

       2、自顶向下:这是一个递增的组装软件结构的方法

       3、自底向上(常用):从程序模块最底层开始逐层向上组装并逐层测试

         好处:针对已经组装过的测试不需要针对上一层装模块

         优点:比较好的锁定软件故障所在位置

       4、核心系统集成:先把核心软件系统挑选出来,并把这部分进行集成测试,在测试通过的基础上再逐步扩展到外围部件

       5、高频集成

集成测试和单元测试区别:1、测试对象的不同:单元测试针对的是软件基本单元,最小单元。集成测试以模块与子系统为单元,模块与模块之间接口的关系

            2、测试依据不同:单元测试针对软件详细设计,集成测试针对软件概要设计

            3、测试方法不同:集成测试关注接口之间集成,单元测试只关心在单元的类之间

------

系统测试:是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效的测试,以发现软件潜在的问题,保证系统正常运行。

关注点:1、系统本身的使用

    2、系统与其他相关系统之间的连通

    3、系统在不同使用压力下的表现

    4、系统在真实使用环境下的表现

系统测试和集成测试的区别:1、测试对象的不同:集成测试是由通过了单元测试的各个模块所集成起来的构件。系统测试除了软件外,还包括计算机硬件及相关的外围设备、数据采集和传输机构、支持软件、系统操作人员等整个系统

             2、测试时间:集成测试介于单元测试和系统测试之间,系统测试在集成测试之后

             3、测试内容:集成测试专注于各个单元模块之间的接口,系统测试专注于整个系统的功能和性能

             4、测试角度:集成测试偏于技术角度的验证,系统测试偏于业务角度的验证

------

验收测试:也成交付测试。针对用户需求,业务流程的正式测试,确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统

 

 --------------按测试手段分类

黑盒测试:黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试

优点:1、容易实施,不需要关注内部的实现

   2、更贴近用户的使用角度

缺点:1、测试覆盖率较低,一般只能覆盖到代码量的不到40%

   2、针对黑盒的自动化测试,复用率较低,维护成本较高

黑盒测试主要测试什么?

1、是否有不正确或遗漏的功能

2、在接口上,输入是否能正确接收,能否输出正确的结果

3、是否有数据结构错误或外部信息(例如数据文件)访问错误

4、性能上是否能满足要求

注:主要在系统测试阶段使用黑盒测试

黑盒测试主要设计方法:等价类划分法、边界值分析法、错误推测法、因果图法、正交实验分析法、状态迁移图法、流程分析法

-----

白盒测试:白盒测试又称结构化测试;是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试

优点:1、迫使测试人员去仔细思考软件的 实现、理解原理

   2、可以检验代码中的每条分支和路径

   3、揭示隐藏在代码中的错误

   4、对代码的测试比较彻底

缺点:1、昂贵:较高的覆盖率

   2、无法检测代码中遗漏的路径和数据敏感性错误

   3、不能直接验证需求的正确性

白盒测试的主要测试方法:代码检测法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法

-------

灰盒测试:介于黑盒、白盒测试之间的,关注输出对于输入的正确性,同时也关注内部

-------

静态测试: 是指无需执行被测程序,而是通过评审软件文档或代码,度量程序静态复杂度,检测软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率

-------

动态测试:是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率,正确性和健壮性等

-------

手工测试:由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。更适用针对深度的测试和强调主观判断的测试

------

自动化测试:使用单独的测试工具软件控件制测试的自动化执行以及对预期和结果进行自动检查

手工测试VS自动化测试

手工测试:1、易发现缺陷,容易实施

     2、创造性,灵活性

     3、覆盖量化难,重复测试效率低

     4、不一致性,可靠性低,人力资源依赖

自动化测试:1、高效率,速度快

      2、高复用性,覆盖率容易度量

      3、准确,可靠,不知疲劳

      4、机械,发现缺陷率低,一次性投入较大