测试理论基础一

一、软件测试行业的基本介绍


  1. 为什么需要软件测试
    • 一款软件从无到有会经历很多开发阶段由不同的人来参与开发,所以最终产出的软件功能会存在问题。因此为了保证软件的功能是可用的,我们必须进行测试
    • 当前的软件行业不在是以功能为主,用户不仅仅只盯着功能是否满足需求,还会对软件是否容易上手,执行效率是否OK等等一系列其他体验有了更高的要求,所以这也需要我们对软件进行大量的测试
  2. 为什么选择软件测试
    • 国内的软件行业对于专业的软件测试人员需求慢慢变大
    • 有些人喜欢创造世界所以他们选择了开发,而我们就是希望世界更加完美
  3. 为什么不让开发自己做测试
    • 当前行业有许多的测试从业人员本身之前都是开发岗
    • 专业度:软件测试和软件开发分别属于软件行业当中两个不同的技术方向。所以让专人做专事是对质量更加有保证
    • 思维定式:在软件的开发周期中,对于程序员来说他们大多数的时间都是思考如何实现具体的软件功能,而不会从用户的角度考虑如何去使用这些功能
    • 测试力度:相对于开发来说,产品相当于是他们的“孩子”,所以“下手”就不会那么狠

二、软件测试基本介绍


  1. 软件知识回顾:
    • 1.1 软件的组成:
      • 程序
      • 数据
      • 文档
    • 1.2 软件的分类:
      1. 按层次划分:系统软件,应用软件
      2. 按组织划分:商业软件,开源软件
      3. 按结构划分:单机软件,C/S结构(软件),B/S结构(浏览器)
  1. 软件测试定义
    使用人工或自动化手段运行程序,为了发现软件的错误而执行检验的一个过程
  2. 软件测试的目的
    以最少的人力、物力、时间找到软件中的缺陷并修改,从而回避风险
  1. 软件测试作用
    • 通过测试工作可以发现并修复软件当中存在的缺陷,从而提高用户对产品的使用信心;
    • 测试可以记录软件过程中产生的一些数据,从而为决策提供数据支持;
    • 测试可以降低同类型产品开发遇到问题的风险
  1. 软件测试的七个原则
    • 测试显示软件存在缺陷
    • 穷尽测试是不可能的
    • 测试尽早介入
    • 缺陷集群性(2/8原则)
    • 杀虫剂悖论
    • 测试活动依赖于测试内容
    • 没有错误是好事谬论

三、测试级别


软件的开发都会依据相应的开发模型,而测试级别指的就是在这个模型当中我们人为定义的开发步骤。其中对于测试来说我们最常见的级别分类如下:

  1. 单元测试:单元测试是完成最小的软件设计单元(一般就是类、函数、组件)的验证工作,目标是确保模块被正确的编码,通常情况下是白盒的,对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早的发现和解决不易显现的错误。
  2. 集成测试:通过测试发现与模块接口有关的问题。目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构,应当避免一次性的集成(除非软件规模很小),而采用增量集成。
  3. 系统测试:根据软件需求规范的要求进行系统测试,确认系统满足需求的要求,由测试人员充当用户的角色对软件的主体功能进行测试。
    • 回归测试:当发现并修改缺陷后,或在软件中添加新的功能后,重新测试。用来检查被发现的缺陷是否被改正,并且所做的修改没有引发新的问题。回归测试可以通过人工重新执行测试用例,也可以使用自动化的工具来进行。
  4. 验收测试
    • 配置审查:确保已开发软件的所有文件资料均已编写齐全,并分类编目。
    • Alpha测试:是由用户在开发者的场所来进行的,在一个受控的环境中进行测试。
    • Beta测试:由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者,开发者对系统进行最后的修改,并开始准备发布最终的软件。

四、测试软件分类


  1. 功能能测试:验证当前软件主体功能是否实现
  2. 兼容性测试:验证当前软件在不同的环境下是否还可以使用
  3. 安全测试:验证软件是否只是对授权用户提供功能使用。
  4. 性能测试:相对于当前于软件消耗的资源、产出能力、运行效率

五、常用系统测试方法

  1. 按测试对象分类
    • 白盒测试:软件底层代码功能实现,同时逻辑正确
    • 黑盒测试:测试软件外在功能是否可用(点点点)
    • 灰盒测试:介于两者之间(接口测试)
  2. 按测试对象是否执行分类
    • 静态测试:测试对象不运行,侧重文档和界面
    • 动态测试:讲软件运行在真实环境中

思考:黑盒测试属于动态还是静态?白盒呢?
黑盒测试有可能是动态测试(运行程序,看输入输出),也可能是静态测试(不运行只查看界面)
白盒测试有可能是动态测试(运行程序并分析代码结构),也有可能是静态测试(不运行程序只静态查看代码)
动态测试有可能是黑盒测试(运行,只查看输入输出),也有可能是白盒测试(运行程序并分析代码结构)
静态测试有可能是黑盒测试(不运行,只查看界面),也可能是白盒测试(不运行,只查看输入输出)

  1. 按测试手段分类
    • 手工测试
      由测试人员手动的对被测对象进行验证,有点就是可以灵活的改变测试操作和环境
    • 自动化测试
      两种形式:一种是自己写测试脚本,另外一种是通过第三方测试工具对被测试对象进行测试
      优点:高效率完成人不能做的测试

六、软件质量的特性

  1. 功能性:指软件在指定条件下使用时,满足用户明确和隐含需求的功能的能力
  2. 易用性:指在指定条件下使用时,软件被理解、学习、使用和吸引用户的能力
  3. 可靠性:可靠性是指软件在指定条件下使用时,维持规定的性能级别的能力。可靠性要求有两个
    重要的概念:平均故障修复时间(mean time to repair,MTTR)、平均无故障时间(mean time
    between failures,MTBF),MTTR值越小,说明故障修复时
  4. 效率性:效率是指在规定条件下,相对于所用资源的数量,软件可提供适当性能的能力。
  5. 可维护性:可维护性是指软件可被修改的能力。修改可能包括修正、改进或软件对环境、需求和功
    能规格说明变化的适应。
  6. 可移植性是指软件从一种环境迁移到另外一种环境的能力。

七、软件测试流程


  1. 需求分析评审
  2. 测试计划指定
  3. 测试用例设计
  4. 测试用例评审
  5. 执行测试用例
  6. 缺陷管理
    在开发阶段,测试人员最重要的产出就是缺陷。缺陷并不是数量越多,就越有价值。更应该关注缺
    陷的质量、缺陷的管理以及缺陷分析。
  7. 输出测试报告
  8. 产品发布
  9. 结束测试

总结:软件测试整个过程,关注的是在整个软件生命周期中,各个阶段的测试活动

你可能感兴趣的:(测试理论基础一)