软件测试方法和技术知识点简摘

文章目录

    • 〇、一点说明
    • 一、引论
    • 二、软件测试的基本概念
    • 三、软件测试方法
    • 四、软件测试流程和规范
    • 五、单元测试与集成测试
    • 六、系统测试
    • 七、验收测试
    • 八、软件本地化测试
    • 九、测试自动化及其框架
    • 十、关于白盒测试和黑盒测试

〇、一点说明

今晚,我们一起来粗过“测试”的知识要点。

一、引论

0. 软件测试的定义
同“软件工程”里面其它很多概念一样,“软件测试”的定义也是“众说纷纭”。我们这里取一个即可。
1983年Bill Hetzel 博士的定义:

软件测试就是一系列活动,这些活动是为了评估一个程序或软件系统的特性或能力,并确定其是否达到了预期效果。

1. 测试与开发的关系
明确一下,软件测试和软件开发在整个软件开发生命周期中交互协作,自始至终在一起工作,共同致力于同一个目标。
2. 测试和质量保证的关系
软件质量保证,即Software Quality Assurance。

  • SQA是一项管理工作,侧重于对流程的评审和监控。
  • 测试是一项技术性的工作,侧重对产品进行评估和验证。

二、软件测试的基本概念

0. 软件缺陷的定义

软件缺陷是指:计算机系统或者程序中存在的任何一种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷、瑕疵,其结果会导致软件产品在某种程度上不能满足用户的需求。

软件质量,我们这里简单提一下。说地简单些就是,软件产品满足使用需求的程度。
再来看看这一张图(一张不愿被缩小的图)
软件测试方法和技术知识点简摘_第1张图片
1. 软件测试的分类
当然了,按照不同的分类方法,软件测试也可以分很多。看看这张图,听说是盘古开天时流传下来的。
软件测试方法和技术知识点简摘_第2张图片
当然了,按照测试方法,我们还能分。(嗯——这么快就要引出第三章了?)

白盒测试(结构化测试或逻辑驱动),黑盒测试(功能测试或数据驱动测试方法)
静态测试,动态测试
主动测试,被动测试

关于静态测试和动态测试,我们来——了解一下。
动?静?几个意思?其实就是看程序是否运行。程序跑起来了就是动态,没有跑就是静态了。
事实上,

  • 静态测试包括对软件产品的需求和设计规格说明书的评审、对程序代码的审查以及静态分析等。
  • 动态测试是通过真正运行程序发现错误,通过观察代码运行过程,来获取系统行为、变量实时结果内存、堆栈、线程以及测试覆盖等各方面信息,来判断系统是否存在问题,或者通过有效的测试用例,对应的输入输出关系来分析被测程序的运行情况,来发现缺陷。

而黑白盒测试,是从哲学观点来看的。具体含义,咱这里不赘述了。

说地通俗些,
白盒测试,知道程序内部结构,具体测试。
黑盒测试,未知程序内部结构,直接测试。

2. 优秀测试工程师应具备的素质
这一点,不得不提。

注意,

  1. 责任感
  2. 沟通能力
  3. 技术能力
  4. 自信心
  5. 耐心
  6. 怀疑精神
  7. 适度的好奇心
  8. 洞察力
  9. 反向思维和发散思维能力
  10. 记忆力

三、软件测试方法

正如前面所言,按照测试方法我们还能分类。
动态、静态测试,按下不表。
来看黑与白。。。
0. 首先且最重要的
有没有听过,基于逻辑覆盖的测试方法?好,我们来复习白盒测试方法。

还记得有哪些覆盖吗?

  1. 语句覆盖
  2. 判定覆盖
  3. 条件覆盖
  4. 判定-条件覆盖
  5. 条件组合覆盖
  6. 基本路径覆盖

什么,不记得具体含义了?好好回忆一下,我们一会儿再做分解。

1. 其次
来看一看这几种方法。

  • 等价类划分法
  • 边界值分析法
  • 判定表方法
  • 因果图法
  • 正交试验法
  • 功能图法
  • 错误推测法

啊!又忘了?好好想想,我们一会分解。

2. 最后但同样重要的

  • 主动测试和被动测试。

主动测试方法:
    测试人员主动向被测试对象发送请求、或借助数据、事件驱动被测对象的行为,从而验证被测对象的反应或输出结果。

被动测试方法:
    测试人员不干预产品的运行,而是被动地监控产品在实际环境中运行,通过一定的被动机制来获得系统运行的数据,包括输入、输出数据。

软件测试方法和技术知识点简摘_第3张图片

四、软件测试流程和规范

0. 软件开发模型
软件开发模型众多,以前学过,我们这里不再一一列举。

  • W模型
  • TMap NEXT

  是一种测试方法,讲述如何执行一个测试过程,如何建立一个测试战略,如何编写测试计划,如何设计测试用例。

1. 软件测试学派
当下,软件测试被分为五个学派。且看下图。软件测试方法和技术知识点简摘_第4张图片

  • 分析学派
    认为软件测试具有严格的技术性,可以用工具进行分析和建模。
  • 标准学派
    用于衡量进度的一种方式,强调成本度量和可重复的标准。
  • 质量学派
    强调过程,认为软件测试人员像警察一样,监督开发人员,又像守门员一样保证产品(软件)的质量。
  • 上下文驱动学派
    强调软件测试中人的作用,寻求利益相关的Bug,认为测试是开发的分支。
  • 敏捷学派
    认为测试是用户角色的一部分,使用软件测试来验证开发是否完成,强调测试的自动化。

五、单元测试与集成测试

0. 单元测试的目的

  • 尽可能早地发现软件中存在的错误,从而降低软件质量成本。
  • 减少后期集成测试带来的麻烦。

1. 驱动程序和桩程序

  • 驱动程序
    也称驱动模块,用以模拟被测模块的上级模块,能够调用被测模块。
  • 桩程序
    也称桩模块,用以模拟被测模块工作过程中所调用的下层模块。

2. 集成测试

  • 自顶向下集成方法
  • 自底向上集成方法
  • 混合策略

六、系统测试

那么,什么是系统测试呢?

系统测试是将经过集成测试过后的软件,作为计算机系统的一个部分,与计算机硬件、某些支持软件、数据和平台等系统元素结合起来,在真实运行环境下对计算机系统进行一系列的严格有效的测试来发现软件的潜在问题,保证系统的正常运行。

0. 功能测试

这个比较容易理解,主要是根据产品规格说明说,来检验被测试的系统是否满足各方面功能的使用要求。

它也包括部分的系统安全性测试(如用户登录、用户权限控制等功能的测试),而且功能测试需要针对不同的环境进行测试,一方面可以看作是系统环境的兼容性测试,另一方面可以看作不同配置下的功能测试。

1. 性能测试

性能测试就是为了发现系统性能问题或获取系统性能相关指标(如运行速度、响应时间、资源使用率等)而进行的测试。

系统的性能指标包括两个方面的内容

  • 系统资源(CPU、内存等)的使用率
  • 系统行为表现

2. 回归测试
要先明确另一个概念,回归缺陷。

在之前的程序缺陷被修复的情况下。
虽然已发现的的程序缺陷被修复了,但可能在其他受影响的区域出现新的软件缺陷,这就是回归缺陷。

为了发现这种回归缺陷而进行的测试,就是回归测试了。

3. 安全测试
两种级别的安全性

  • 应用程序级别的安全性
    核实操作者只能访问其所属用户类型已被授权访问的那些功能或数据。
  • 系统级别的安全性
    核实只有具备系统和应用程序访问权限的操作者才能访问系统和应用程序。

七、验收测试

0. 验收测试

验收测试是在软件产品完成了功能测试和系统测试之后、产品发布之前所进行的软件测试活动。它是技术测试的最后一个阶段,也称为交付测试。

0. α测试和β测试

  • α测试
    软件开发公司组织公司内部人员模拟各类用户对即将面市软件产品(成为α版本)进行测试,试图发现错误并修正。经过α测试调整的软件产品成为β版本。
  • β测试
    软件开发公司组织各方面的典型用户在日常工作中实际使用β版本,并要求用户报告异常情况、提出批评意见。

八、软件本地化测试

0. 软件本地化

软件本地化是将一个软件产品按特定国家或语言市场的需要进行全面定制的过程,包括翻译、重新设计、功能调整以及功能测试、是否符合各个地方的习俗、文化背景、语言和方言的验证等。

1. 软件国际化
为了解决软件能在各种不同语言、不同风俗的国家和地区使用的问题,对计算机设计和编程所做的某些规定。

九、测试自动化及其框架

0. 自动化测试

自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程,即模拟手工测试步骤,通过执行由程序语言编制的测试脚本,自动地完成软件的单元测试、功能测试、负载测试或性能测试等全部工作。

1. 自动化测试的优势

  • 自动运行的速度快、执行效率高,是手工无法相比的。
  • 永不疲劳。
  • 测试结果准确。
  • 可靠。
  • 可复用性。
  • 特别的能力。

2. 脚本技术

  • 线性脚本
  • 结构化脚本
  • 数据驱动脚本
  • 关键字驱动脚本

十、关于白盒测试和黑盒测试

不想写了,有空再说。

你可能感兴趣的:(期末考试)