关闭

软件测试

标签: 软件测试测试
148人阅读 评论(0) 收藏 举报
分类:

软件测试的目标

Glen Myers关于软件测试目的提出以下观点:

- 测试是为了发现错误而执行程序的过程
- 测试是为了证明“程序有错”,而不能证明“程序正确”
- 一个好的测试用例在于能够发现至今未发现的错误
- 一个好的测试是发现了至今未发现的错误的测试

软件测试的原则

有如下几点:

- 应当把“尽早的和不断的测试”作为软件开发者的座右铭
- 程序员应避免检查自己的程序
- 测试从小规模开始,逐渐扩大到大规模
- 设计测试用例时,应包括合理的输入和不合理的输入,以及各种边界条件,特殊情况要制造极端状态和意外状态
- 充分注意测试中的聚集现象:测试过程中80%的错误,可能集中在20%的代码里
- 对测试结果要有确认过程
- 制定严格的测试方案,排除测试的随意性
- 注意回归测试的关联性,往往修改一个错误会导致更多错误
- 妥善保存一切测试过程文档,测试重现往往要靠测试文档

测试用例的定义

测试用例(Testing case):

- 测试用例是为特定的目的而设计的一组测试输入,执行条件和预期的结果。
- 测试用例是执行的最小测试实体。
- 测试用例就是设计一个场景,使软件程序在这种场景下,必须能够正常运行并且达到程序执行的预期结果。

测试用例的特征

- 最有可能抓住错误的。
- 不是重复的,多余的。
- 一组相似测试用例中最有效的。
- 既不是太简单,也不过于复杂

测试用例的设计原则

1. 测试用例的代表性:
    - 能够代表并覆盖各种合理的和不合理的,合法的和非法的,边界的和越界的以及极限的输入数据,操作和环境设置等。
2. 测试结果的可判定性:
    - 测试执行结果的正确性是可判定的,每一个测试用例都应有对应的预期结果。
3. 测试结果的可再现性:
    - 对同样的测试用例,系统的执行结果应是一样的。

软件测试人员

这里写图片描述


软件测试方法的分类

按实施步骤分:

- 单元测试(Unit Testing)
- 集成测试(Integration Testing)
- 确认测试(Validation Testing)
- 系统测试(System Testing)
- 验收测试(Verification Testing)

按使用的测试技术分:

- 静态测试: 走查 / 评审
- 动态测试: 白盒 / 黑盒

按软件组装策略分:

- 非增量测试:整体集成
- 增量测试:自顶向下、自底向上、三明治

1. 单元测试

定义:

- 单元测试是对软件基本组成单元的测试,有时也称为“组件测试”。
- 单元测试一般是由编写该单元代码的开发人员执行,该人员负责设计和运行一系列的测试以确保该单元符合需求。

目的:

    -  目的是验证开发人员所书写的代码是否可以按照其所设想的方式执行而产出符合预期值的结果,确保产生符合需求的可靠程序单元。

环境:

- 驱动模块(driver):模拟被测模块的上一级模块,接收测试数据,把这些数据传送给所测模块,最后再输出实际测试结果。
- 桩模块(stub):模拟被测单元需调用的其他函数接口,模拟实现子函数的一些功能。

2. 集成测试

- 在单元测试的基础上,将所有模块按照总体设计的要求组装称为子系统或者系统进行的测试。
- 集成测试的对象是模块间的接口,其目的是找出在模块接口上和系统体系结构上的问题。

集成测试策略:

- 基于层次的集成:自顶向下和自底向上
- 基于功能的集成:按照功能的优先级逐步将模块加入系统中
- 基于进度的集成:把最早获得的代码进行集成
- 基于使用的集成:通过类的使用关系进行集成

整体集成测试 , 增量式集成测试,三明治集成测试

3. 确认测试

- 检查软件能否按合同要求进行工作,即是否满足软件需求说明书中的确认标准。

4. 系统测试

- 系统测试是将已经集成好的软件系统作为一个元素,与计算机硬件,外设,某些支持软件,数据和人员等其他元素结合在一起,在实际运行环境下进行的一系列测试。

系统测试方法:

- 功能测试,协议一致性测试
- 性能测试,压力测试,容量测试,安全测试,恢复性测试
- 备份测试,GUI测试,健壮性测试,兼容性测试,可用性测试
- 可安装性测试,文档测试,在线帮助测试,数据转换测试

功能测试(Functional Testing):

- 功能测试是系统测试中最基本的测试,不理会软件内部的实现逻辑,主要根据软件需求规格说明和测试需求列表,验证产品的功能实现是否符合需求规格。
- 功能测试主要发现以下错误:
    1. 是否有不正确或者遗漏的功能?
    2. 功能实现是否满足用户需求和系统设计的隐藏需求?
    3. 能否正确的接受输入?能否正确的输出结果?
- 常用的测试技术:
    - 黑盒测试方法:等价类划分,边界值测试

压力测试(Press Testing)

- 压力测试是检查系统在资源超负荷情况下的表现,特别是对系统的处理时间有什么影响。
- 压力测试采用边界值和错误猜测方法,且需要工具的支持。

安全性测试(Security Testing):

- 安全性测试检查系统对非法入侵的防范能力。
- 安全测试期间,测试人员假扮非法入侵者,采用各种办法突破防线。

恢复测试(Recovery Testing):

- 恢复测试是检验系统从软件或者硬件失败中恢复中的能力,采用各种人工干预的方式使软件出错,从而检验系统的恢复能力。

GUI测试(Graphic User Interface Testing):

- GUI测试一是检查用户界面实现与设计的符合情况,二是确认用户界面处理的正确性。
- GUI测试提倡界面与功能的设计分离,其重点关注在界面层和界面与功能接口层上。
- GUI自动化测试工具
    • WinRunner,QARun,QARobot,Visual Test
- 常用的测试技术
    • 等价类划分、边界值分析、基于状态图方法、错误猜测法

安装测试(Installation Testing):

- 系统验收之后,需要在目标环境中进行安装,其目的是保证应用程序能够被成功的安装。

5. 验收测试

- 验收测试是以用户为主的测试,一般使用用户环境中的实际数据进行测试。
- 在测试过程中,除了考虑软件的功能和性能外,还应对软件的兼容性,可维护性,错误的恢复功能等进行确认。

α 测试与β 测试

- α测试与β测试是产品在正式发布前经常进行的两种测试;
    • α测试是由用户在开发环境下进行的测试;
    • β测试是由软件的多个用户在实际使用环境下进行的测试。

6. 回归测试

– 回归测试是验证对系统的变更没有影响以前的功能,并且保证当前功能的变更是正确的。
– 回归测试可以发生在软件测试的任何阶段,包括单元测试、集成测试和系统测试,其令人烦恼的原因在于频繁的重复性劳动。
– 回归测试应考虑的因素:
    • 范围:有选择地执行以前的测试用例;
    • 自动化:测试程序的自动执行和自动配置、测试用例的管理和自动输入、测试结果的自动采集和比较、测试结论的自动输出。
1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

软件测试常考面试题-软件测试面试宝典

问:你在测试中发现了一个  bug ,但是开发经理认为这不是一个  bug ,你应该怎样解决。 首先,将问题提交到缺陷管理库里面进行备案。 然后,要获取判断的依据和标准: 根据需求说明书、产品说明、设...
  • MJ813
  • MJ813
  • 2016-09-06 16:43
  • 74695

软件测试自学指南---从入门到精通

近来,软件测试行业发展迅速,企业越来越重视测试了。越来越多的人加入了测试大军中,很多人也想通过自学来学习软件测试技术加入这个行业,但是现在软件测试的书籍越来越多,也良莠不齐,而且软件测试涉及的技术也越...
  • xc5683
  • xc5683
  • 2013-07-24 13:30
  • 171183

推荐几本软件测试方面的经典书籍

第1《软件测试》 作者:(美)Ron Patton 译者:周予滨 姚静 出版社:机械工业出版社 原出版社: SAMS 我所见过的最好最经典的软件测试入门书,有一个别名叫“软件测试的本质”。书中没有讨论...
  • wauit
  • wauit
  • 2015-01-27 13:46
  • 3157

万树IT:软件测试用例的设计

对于测试人员来说测试用例的设计编写是一项必须掌握的能力,但有效的设计和熟练的编写却是一个十分复杂的技术,它需要你对整个软件不管从业务还是从功能上都有一个明晰的把握。     一、问题   ...
  • hnwsqy
  • hnwsqy
  • 2018-01-10 18:19
  • 20

软件测试方法的分类及工具推荐

概述:最近有一些测试新手在问软件测试的方法分为哪几种,借此机会我也将自己对软件测试的一些经验和认识与大家一起分享一下吧。实际上,软件测试的方法很多,口述出来的话,感觉比较混乱,本文中我讲一些常用的软件...
  • u011537073
  • u011537073
  • 2018-01-09 22:05
  • 28

软件测试面试题及解析(十一)

问题十二:BUG管理工具的跟踪过程        用BugZilla为例子       测试人员发现了BUG,提交到Bugzilla中,状态为new,BUG的接受者为开发接口...
  • hualusiyu
  • hualusiyu
  • 2012-10-31 13:34
  • 1361

【软件测试】操作系统篇:第四章 存储管理

第四章存储管理1、存储管理的基本概念1)逻辑地址与物理地址在具有地址变换机构的计算机中,允许程序中编排的地址和信息实际存放在内存中的地址有所不同。前者叫逻辑(相对)地址,后者叫物理(绝对)地址。2)重...
  • lwlliang
  • lwlliang
  • 2011-02-28 00:34
  • 954

版本发布后软件测试人员要做的工作

我在这里讨论的方法主要是针对互联网企业的测试,可能对传统企业的测试来说会有点不同,但是大体上是适用所有公司的测试情况的。 版本发布后大部分测试人员的意识里面都会认为该要好好休息一下了,放几天羊,做做...
  • xia_xia0919
  • xia_xia0919
  • 2016-01-28 14:21
  • 1389

软件测试技术常见问题汇总

 一、常见问题 1、 单元测试主要内容是什么? 单元测试大多数由开发人员来完成,测试人员技术背景较好或者开发系统软件时可能会安排测试人员进行单元测试,大多数进行的单元测试都是开发人员调试程序...
  • morwind
  • morwind
  • 2015-04-01 10:02
  • 2354

【全6套视频】第一部,软件测试基础

第一讲 软件测试理论体系模型? 主要内容:    软件测试技术按照划分         软件开发过程一般包括六个阶段,软件测试贯穿于软件开发过程的整个期间。         在这个过程中,测...
  • yujingbo1023
  • yujingbo1023
  • 2015-01-08 13:07
  • 766
    个人资料
    • 访问:1304次
    • 积分:61
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档