软件测试

软件的特点

  • 逻辑实体、没有制造过程、没有磨损老化、随时间退化
  • 对计算机系统有依赖性
  • 没有摆脱手工开发方式、实现起来愈加复杂
  • 成本昂贵

软件分类

  • 按功能分类:1.系统软件 2.支持软件 3.应用软件
  • 按部署结构分类:1.单机版软件 2.分布式软件

按技术测试分类

黑盒测试

  • 黑盒测试是指不基于内部设计和代码的任何知识,而基于需求和功能性的的测试,黑盒测试也称功能测试或数据驱动测试。
软件测试_第1张图片
屏幕快照 2016-07-07 下午11.00.42.png

白盒测试

  • 白盒测试是基于一个应用代码的内部逻辑知识,基基于覆盖全部代码、分支、路径、条件的测试。
    白盒测试也称结构测试或逻辑驱动测试。
软件测试_第2张图片
屏幕快照 2016-07-07 下午11.01.27.png

两者对比

  • 白盒测试:测试依据:程序内部结构

  • 优点:能够对程序内部的特定部位进行覆盖测试

  • 缺点:无法检验程序的外特性,无法对为实现规格说明的程序内部欠缺部分进行测试

  • 黑盒测试:测试依据:需求规格说明书

  • 优点:能够站在用户的立场上进行测试

  • 缺点:不能测试程序背部特定部位,如果需求规格说明书有误,则无法发现。

按测试阶段分类

  1. 单元测试

  2. 集成测试

  3. 系统测试

  4. 验收测试

单元测试

  • 单元测试又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作

  • 单元测试的目的
    1. 验证单元代码和详细设计文档的一致性
    2. 发现在编码过程中引入的错误
    3. 减少开发人员的调试代码时间
    4. 大幅度减少后期缺陷的数量

  • 单元测试案例

    1. 求绝对值的一个方法Abs();

       Public int Abs(int x){
           if(x<=0)
               return x;
           else
               return -x;
       }
      
       分析:代码把x>=0写成了x<=0,就出现了与设计不相符的错误。但实际上该代码编译是没有问题的。
      

集成测试

集成测试是在单元测试的基础上,将所有模块按照概要设计要求(如根据流程图)组装成为子系统或者系统而进行的测试
  • 集成测试的目的

      1.验证各个子模块组合起来,能否达到预期要求的功能
      2.验证一个模块的功能是否会对另外一个模块的功能产生不利的影响
    

系统测试

系统测试的概念:系统测试是通过集成测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行全面的功能覆盖
  • 系统测试的目的

      验证软件产品是否满足用户需求
    
  • 系统测试包含:

      1. 功能测试:对产品的各个功能进行验证,检查产品是否达到了用户要求的功能
      2. 性能测试:通过自动化工具模式正常、峰值及异常负载条件,检查系统各项性能指标是否满足需求
      3. 安全性测试:验证应用程序的安全级别和识别潜在安全性缺陷
      4. 易用性测试:测试用户在使用软件时,软件交互的使用性、功能性和有效性
      5. 兼容性测试:测试软件在不同的平台、不同的网络环境、不同的应用软件之间能否友好的运行
    

验收测试

验收测试的概念:验收测试是软件产品交付用户正式使用前的最后一道工序,它是以用户为主的测试,软件开发和软件测试人员也应该参加。
  • 验收测试的目的

      确认系统是否满足用户需求并且能够发行
    
  • 验收测试的常用方法

      Alpha测试
      Alpha测试是由软件开发公司组织内部人员模拟各类用户对即将面市软件产品(称为Alpha版本)进行测试,试图发现错误并修正。俗称“内部测试”。
      Beta测试
      Beta测试是由软件的最终用户们在一个或多个场所进行。定期将这些问题报告给开发者,开发者对软件产品进行必要的修改,并准备向全体客户发布最终的软件产品。俗称“公开测试”。
    

阶段测试的关系

软件测试_第3张图片
屏幕快照 2016-07-07 下午11.09.23.png

按实施组织分类

  • 开发商测试

      开发商测试指的是软件开发部门与软件测试部门隶属于同一个公司。本公司开发的产品由本公司负责测试发布维护。
    
  • 外包测试

      外包测试是企业把一套成型的产品交给专门的测试组织进行测试,检查产品是否达到用户的使用标准。
    

软件开发模型

  • 软件开发模型是指软件开发全部过程、活动和任务的结构架构。它能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务。
软件测试_第4张图片
屏幕快照 2016-07-08 下午2.16.56.png

瀑布模型

  • 瀑布模型的特征
    1.软件开发的各项活动严格按照线性方式进行
    2.当前活动接受上一项活动的工作结果
    3.当前活动的工作结果需要进行验证
  • 瀑布模型的缺点
    1.由于开发模型是线性的,增加了开发的风险
    2.早期的错误可能要等到开发后期的阶段才能发现

V模型

“V”的左端表示传统的瀑布开发模型,而“V”的右端表名相应的测试阶段

软件测试_第5张图片
屏幕快照 2016-07-08 下午2.18.01.png

敏捷模型

软件测试_第6张图片
屏幕快照 2016-07-08 下午2.18.41.png

软件开发人员配备与职责

软件测试_第7张图片
屏幕快照 2016-07-08 下午2.19.23.png

测试用例的概念

  • 测试用例(Test Case)是指为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定的集合。
  • 测试用例贯穿于整个测试的执行过程,是软件测试的重要组成部分。

测试用例的依据

  • 如果是需求明确则是软件需求规格说明书,如果是需求不明确则是阅读其他可参考文档咨询相关人员
软件测试_第8张图片
屏幕快照 2016-07-17 下午2.14.28.png
软件测试_第9张图片
屏幕快照 2016-07-17 下午2.14.38.png

测试用例的更新维护

测试用例更新

  • 需求简单,用例随着需求细化也需要不断细化
  • 需求变化,导致用例变化

测试用例维护

  • 一个持续的过程
  • 使用配置管理工具

测试用例的作用

  • 实施测试指导

    测试人员在执行测试的过程中严格按照测试用例的测试步骤逐一测试

  • 指导测试数据的规划

    对数据正确性要求较高的测试(例如:报表),需要对数据进行规划,测试操作才能幽暗可查。

  • 分析缺陷的基准

测试用例的作用

  • 提高功能测试覆盖率

要确保所开发的软件能让最终用户满意,最好的办法就是明确阐述最终用户的期望(用户需求),对这些期望进行核实并确认其有效性,测试用例直接反映了这些要核实的需求,令测试的实施明确、有依据,减少了软件功能漏测现象

  • 指导脚本编写

软件测试行业由原来的人工测试逐步向人工测试和自动化测试并行的方向发展。而自动化测试的核心就是脚本测试,自动化测试所使用的测试脚本编写的依据就是测试用例

测试用例的设计方法

1. 等价类划分法
2. 边界值分析法
3. 判定表分析法
4. 因果图分析法
5. 正交实验法
6. 状态图分析法
7. 场景分析法

等价类划分法

  • 加法器程序需求

    输入两个两位整数,相加后,结果正确显示。要求:1、输入的整数值在-99到99之间(包含-99和99)2、非法输入应被拒绝,并显示错误信息
    

等价类划分法

1. 是一种最为典型的黑盒测试方法
2. 把程序的输入划分成若干个部分,从每个部分中选取少数代表性数据作为测试用例
3. 每一类的代表性数据在测试中的作用等价于这一类中的其他值

设计测试用例

  • 设计一个测试用例,使它能够尽量覆盖尚未覆盖的有效等价类。重复该操作,从而使所有有效等价类均被覆盖。
  • 设计一个测试用例,使它能够覆盖一个无效等价类。重复该操作,从而使所有无效等价类均被覆盖

边界值分析法

  • 应当选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据
  • 重点测试追后一个肯定合法的数据和刚刚超过边界的非法数据
  • 通常和等价类划分一起使用,产生一套完整的测试用例

你可能感兴趣的:(软件测试)