软件测试中的那些不可遗忘的基础知识

软件测试是一项批判性的工作,目的就是找出软件中的缺陷。这里暂时不去深究为什么要进行软件测试,以及软件测试带来的好处。只介绍软件测试中一些基本的测试方法。根据是否查看代码程序分为黑盒测试和白盒测试;根据是否运行软件又可分为静态测试和动态测试。

  黑盒测试:又叫功能测试或行为测试,只需考虑各个功能,不需要考虑整个软件的内部结构及代码。

  白盒测试:访问代码,通过检查代码的线索来协助测试。

  静态测试:测试软件不运行的部分,只是检查和审核。

  动态测试:使用和运行软件进行测试。

  1、静态黑盒测试:检查产品说明书,并在软件编写之前找出问题

 · 对产品说明书或软件需求报告进行高级审查:

  (1)站在一个设计者的角度进行审查,找出根本性问题或遗漏之处

  (2)站在客户(使用者)的角度来审查,因为软件质量的定义是满足客户的需求

  (3)研究现有的标准和规范,可以是公司习惯用语和约定、行业要求、GUI、安全标准;检查所用标准是否正确、遗漏,是否与标准和规范相抵触

  (4)审查和测试类似软件,检查它的规模、复杂性、测试性、质量和可靠性、安全性

  · 对产品说明书或软件需求报告进行低层次测试:

  一份优秀的产品说明 :书或者需求报告:必须是完整、准确、精确(不含糊、清晰)、一致、贴切、合理、代码无关、可测试性

  2、动态黑盒测试:在不了解软件如何工作的前提下进行测试

  两种基本方法:通过性测试和失效性测试

  选择测试用例:

等价类划分:把软件具有相似输入,相似输出,相似操作的分在一组。一个等价类或等价类划分是指测试相同目标或者暴露相同软件缺陷的一组测试用例。

  等价类划分的目标:把可能的测试用例集缩减到可控制且仍然足以测试软件的小范围内。

  (1)测试数据

  通过性测试:

  a) 边界条件:软件运行在计划操作界限的边界情况。测试边界包括测试临近边界的有效数据、测试最后一个可能有效的数据、测试刚超过边界的无效数据。

  b)次边界条件:典型的次边界条件:2的幂、ASCII表

  c)测试默认、空白、空值、零值和无这些数据

  失效性测试:

  d)测试非法、错误、不正确和垃圾数据

  (2)测试状态

  软件状态:软件当前所处的条件或者模式。

  状态测试:测试程序的状态及其转换。

  步骤:

1)建立状态转换图

  2)减少要测试的状态及其转换的数量

  a. 每一种状态至少访问一次

  b. 测试状态之间最不常用的分支

  c. 测试所有错误状态及其返回值

  d. 测试随机状态转换

  e. 测试看起来是最常见和普遍的状态转换

  通过性状态测试:审查软件,描绘状态,尝试各种合法可能性,确认状态及其转换正常。

  失效性状态测试:竞争条件、重复(检查内存泄漏)、压迫(在不够理想条件下运行:内存小,磁盘空间少...尽量限制软件的必要条件)、重负(提供条件任其发挥)。

  3、静态白盒测试:在不执行软件的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程

  (1) 编码标准和规范:可靠性、可读性/可维护性、可移植性

  (2)通用代码审查清单:

  a. 数据引用错误  ->   缓存区溢出

  b. 数据声明错误  <-  不正确地声明和使用变量和常量

  c. 计算错误

  d. 比较错误    <-  边界条件问题

  e. 控制流程错误  <-  循环等控制结构未按预期方式工作,由计算或比较错误间接引起

  f. 子程序参数错误 <-  子程序不正确地传递数据

  g. 输入/输出错误

  h. 其他检查    ->  编码、可移植、兼容

  4、动态白盒测试:结构化测试,检查代码并观察运行状况,利用查找代码功能和实现方式得到的信息来确定哪些需要测试,哪些不需要,如何开展测试,包括如下内容:

  (1) 直接测试底层函数过程,子程序和库(API)

  (2) 以完整程序的方式从顶层测试软件,根据对软件运行的了解调整测试用例

  (3)从软件获得读取变量和状态信息的访问权,确定测试与预期结果是否相符,强制软件以正常测试难以实现的方式运行

  (4) 估算执行测试时命中的代码量和具体代码,调整测试,去掉多余的测试用例,补充遗漏的用例

  动态白盒测试与调试的区别:都包括处理软件缺陷和查看代码的过程,但是它们的目标不同:测试的目标是寻找软件缺陷;调试的目标是修复缺陷

  测试方法:分段测试(单元测试和集成测试)、数据覆盖、代码覆盖

  数据覆盖:

  数据流覆盖,在软件中完全跟踪一批数据。

  次边界:与动态黑盒测试类似。

  公式和等式:类似除法运算中,考虑除数为0的情况。

  错误强制:迫使软件中的所有错误提示信息显示出来。

  代码覆盖:测试程序的状态以及程序的流程,设法进入和退出每一个模块,执行每一行代码,进入软件每一条逻辑和决策分支

  代码覆盖包括:程序语句和代码行覆盖、分支覆盖(比如判断语句中if分支和else分支)、条件覆盖(一个条件中可能包含几个子条件,要覆盖每一个子条件及它们的组合)。

  软件测试其实就是在用户之前使用和运行软件,尽早找出软件中存在缺陷。我们不可能对软件进行完全测试,只可能在测试有限的用例后使得软件仍然存在bug的概率尽可能小。以上所述仅仅只是一点皮毛,软件测试覆盖的知识面很广,需要学习的还有很多!

转载至:http://mp.weixin.qq.com/s?__biz=MjM5Mjg0MzMzMw==&mid=212491169&idx=3&sn=c4da844a5b7f7ed39bc56ba04bb76c1e&scene=0#rd

时间: 2024-12-26 02:15:58

软件测试中的那些不可遗忘的基础知识的相关文章

软件測试中的那些不可遗忘的基础知识

软件測试是一项批判性的工作,目的就是找出软件中的缺陷. 这里临时不去深究为什么要进行软件測试,以及软件測试带来的优点. 仅仅介绍软件測试中一些主要的測试方法.依据是否查看代码程序分为黑盒測试和白盒測试:依据是否执行软件又可分为静态測试和动态測试. 黑盒測试:又叫功能測试或行为測试,仅仅需考虑各个功能.不须要考虑整个软件的内部结构及代码. 白盒測试:訪问代码,通过检查代码的线索来协助測试. 静态測试:測试软件不执行的部分,仅仅是检查和审核. 动态測试:使用和执行软件进行測试. 1.静态黑盒測试:检

【转载】App测试中的那些不可遗忘的基础知识

App测试是一项批判性的工作,目的就是找出软件中的缺陷.这里暂时不去深究为什么要进行App测试,以及App测试带来的好处.只介绍App测试中一些基本的测试方法.根据是否查看代码程序分为黑盒测试和白盒测试:根据是否运行软件又可分为静态测试和动态测试. 黑盒测试:又叫功能测试或行为测试,只需考虑各个功能,不需要考虑整个软件的内部结构及代码. 白盒测试:访问代码,通过检查代码的线索来协助测试. 静态测试:测试软件不运行的部分,只是检查和审核. 动态测试:使用和运行软件进行测试. 1.静态黑盒测试:检查

.net中的并行编程系列-1.基础知识

最近半年一直研究用.net进行并行程序的开发与设计,再研究的过程中颇有收获,所以画了一个图总结了一下并行编程的基础知识点,这些知识点是并行编程的基础,有助于我们编程高性能的程序,里面的某些结构实现机制也蕴含着丰富的软件设计思想,在后续的文章中我会对图里面提到某些数据结构或同步机制的源码进行分析. 注:虽然使用的平台是.net ,但大部分知识点和平台以及语言无关,相关数据结构其他相关平台都有实现,包括优化手段都非常相似. .net中的并行编程系列-1.基础知识,布布扣,bubuko.com

javascript中关于日期和时间的基础知识

× 目录 [1]标准时间 [2]字符串 [3]闰年[4]月日[5]星期[6]时分秒 前面的话 在介绍Date对象之前,首先要先了解关于日期和时间的一些知识.比如,闰年.UTC等等.深入了解这些,有助于更好地理解javascript中的Date对象.本文将介绍javascript关于日期和时间的基础知识 标准时间 一般而言的标准时间是指GMT和UTC,以前是GMT,现在是UTC GMT 格林尼治标准时间(GMT)是指位于伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线

Android中直播视频技术探究之---基础知识大纲介绍

一.前言 最近各种视频直播app到处都是,各种霸屏,当然我们也是需要体验的,关于视频直播的软件这里就不介绍了,在不是技术的人来看,直播是一种潮流,是一种娱乐方式,但是作为一个高技术的,我们除了看看,更重要的是学习技术,其实Android中的视频技术没什么说的,因为网上的资料很多,但是之前的视频技术大部分都出现在了视频播放,就是主流的视频播放器,那个最重要的一个技术就是视频的编解码,这个也会在后续文章中详细介绍视频的处理技术.但是现在直播的技术是在之前的视频技术上又有了一个要求就是视频录制,现在录

关于Java中基本类型的长度相关基础知识

1.  用HeapByteBuffer放int占几个byte? 占4个.而且不论你是放1还是-1还是0xffff. 因为int的长度是4个byte,HeapByteBuffer的存储又是byte数组. 2. 用HeapByteBuffer放char占几个byte? 同1,是两个,因为java中char的长度是2byte. 同样,不论是存英文字符还是存中文字符,都占用2个byte. 示例代码 ByteBuffer buff = ByteBuffer.allocate(1024*1024); buf

Nodejs进阶:crypto模块中你需要掌握的安全基础知识

一. 文章概述 互联网时代,网络上的数据量每天都在以惊人的速度增长.同时,各类网络安全问题层出不穷.在信息安全重要性日益凸显的今天,作为一名开发者,需要加强对安全的认识,并通过技术手段增强服务的安全性. crypto模块是nodejs的核心模块之一,它提供了安全相关的功能,如摘要运算.加密.电子签名等.很多初学者对着长长的API列表,不知如何上手,因此它背后涉及了大量安全领域的知识. 本文重点讲解API背后的理论知识,主要包括如下内容: 摘要(hash).基于摘要的消息验证码(HMAC) 对称加

初识Java及基础知识

java不仅仅是一种程序设计语言,他还是一个完整的平台,有一个庞大的代码库.首先你要做的,可能需要下载 jdk 包,下载和安装,自行百度. 下载完 jdk 之后,JDK目录树如下:  目录结构 描述 bin 编译器和工具 demo 演示 docs HTML格式的类库文档(解压 2sdkversion-doc.zip 之后j) include 用于编译本地方法的文件 jre Java 运行环境 lib 类库文件 src 类库源文件 java 中基本程序设计会用的基础知识:数据类型.变量.运算符.字

转载 前端基础知识体系 一个新手的学习之路

原帖地址:  转载的原因是我学习前端和php已经4个多月了.看看自己还有那些不足.自己得努力学习,牛人太多.红色是我会的,或者学过的.希望今天把大部分飘红. 一.HTML 标签的分类 标签表示一个元素 按性质划分: Block-Level和Inline-Level 按语义划分: Headings: h1, h2, h3, h4, h5, h6 Paragraphs: p Text Formatting: em, strong, sub, del, ins, small Lists: ul, li