掌握有效测试软件的方法与技术(二)
作者:网络转载 发布时间:[ 2011/12/30 9:47:18 ] 推荐标签:
6. 软件系统的主要测试内容及技术
6.1 接口与路径测试
u 数据一般通过接口输入和输出,所以接口测试是白盒测试的第一步。每个接口可能有多个输入参数,每个参数有“典型值”、“边界值”、“异常值”之分,所以输 入的组合数可能并不少。根据接口的定义,可以推断某种输入应当产生什么样的输出。输出包括函数的返回值和输出参数。如果实际输出与期望的输出不一致,那么 说明程序有错误。白盒方式的接口测试和黑盒方式的功能测试,其方法十分相似。
u 一个函数体内的语句可能只有十几条,但逻辑路径可能有成千上万条。想遍历测试几乎是不可能的,不测试或者胡乱找几条路径测试却又不行。
u 对于非严格系统而言,在分析路径方面化费很多精力是不值得的。我认为在构造接口测试的同时已经建立了测试路径。因为每一种输入将产生的输出,输入与输 出之间的路径也是的。由于接口测试中的输入是有代表性的,因此相应的路径也具有代表性,不用得着费煞苦心地去找测试路径。
u 路径测试的检查表
数据类型、变量值、逻辑判断、循环、内存管理、文件I/O、错误处理
u 由于接口测试是枚举的,有可能漏掉某些状况,导致一些重要的路径没有被测试。预防措施有:
观察是否有程序语句从来没有被执行过。如果发生在这种情况,要么是程序有错误,存在无用的代码;要么是接口测试不充分,漏掉了一些路径。
要特别留意函数体内的错误处理程序块(如果存在的话),这是易被人疏忽的路径,隐患多。
6.2 功能测试
u 功能测试的基本方法是构造一些合理输入(在需求范围之内),检查输出是否与期望的相同。如果两者不一致,即表明功能有误。也有例外的情况,如《需求规格说明书》中的某个功能写错了,而实际上软件的功能却是正确的,这时要更改的是《需求规格说明书》。
u 功能测试看起来比较简单,只要看得懂《需求规格说明书》,谁都会做。难点在于如何构造有效的输入。由于输入空间通常是无限的,穷举测试显然行不通。那么随便输入一些东西,碰运气行不行?
u 功能测试有两种比较好的测试方法:等价划分法和边界值分析法。
等价划分是指把输入空间划分为几个“等价区间”,在每个“等价区间”中只需要测试一个典型值可以了。等价划分法来源于人们的直觉与经验,可令测试事半功倍。
“缺陷遗漏在角落里,聚集在边界上”。边界值测试法是对等价划分法的补充。如果A和B是输入空间的边界值,那么除了典型值外还要用A和B作为测试用例。
例如测试函数。凭直觉,等价区间应是(0, 1)和(1, +∞)。可取典型值x=0.5以及x=2.0进行“等价划分”测试。再取 x=0以及x=1进行“边界值”测试。
6.3 健壮性测试
u 健壮性是指在异常情况下,软件还能正常运行的能力。健壮性有两层含义:一是容错能力,二是恢复能力。
u 容错性测试通常构造一些不合理的输入来引诱软件出错,例如:
(1)输入错误的数据类型。如“猴”年“马”月。
(2)输入定义域之外的数值。如上海人常说的“十三点”
u 粗暴一些方式俗称“大猩猩”测试法。除了不能拳打脚踢嘴咬外,什么招术都可以使出来。例如在测试客户机-服务器模式的软件时,把网络线拔掉,造成通信异常中断。
u 恢复测试重点考察一下几项:
(1)系统能否重新运行;
(2)有无重要的数据丢失;
(3)是否毁坏了其它相关的软件硬件。
6.4 性能测试
u 性能测试即测试软件处理事务的速度,一是为了检验性能是否符合需求,二是为了得到某些性能数据供人们参考(例如用于宣传)。
u 有时人们关心测试的“值”,如数据送输速率是每秒多少比特。有时人们关心测试的“相对值”,如某个软件比另一个软件快多少倍。
u 在获取测试的“值”时,我们要充分考虑并记录运行环境对测试的影响。例如网络环境、计算机主频,总线结构和外部设备都可能影响软件的运行速度。
u 性能测试的一些注意事项:
不要试图让人拿着钟表去测时间,应当编写一段程序用于计算时间以及相关数据。
应当测试软件在标准配置和低配置下的性能。
为了排除干扰,应当关闭那些消耗内存、占用CPU的其它应用软件(如杀毒软件)。
不同的输入情况会得到不同的性能数据,应当分档记录。例如传输文件的容量从100K到1M可以分成若干等级。
由于环境的波动,同一种输入情况在不同的时间可能得到不同的性能数据,可以取其平均值。
6.5 用户界面测试
u 绝大多数软件拥有图形用户界面。图形用户界面的测试重点是正确性、易用性和视觉效果。在评价易用性和视觉效果时,主观性非常强,应当考虑多个人的观点。
6.6 信息安全测试
u 信息安全性(security)是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。
u 信息安全性测试有如下步骤:
(1)为非法入侵设立目标,例如“盗窃某个文件”或“更改数据库记录”等。
(2)邀请(或悬赏)一些人扮演黑客,让他们想尽办法入侵系统,实现“目标”。
(3)如果有人成功了,请他详述入侵的过程。别忘了给予奖励。
6.7 压力测试
u 压力测试也叫负荷测试,即获取系统能正常运行的极限状态。了解“极限”是很有价值的,例如潜艇下潜极限深度…。
u 压力测试的主要任务是:构造正确的输入,使劲折腾系统却让它刚好不瘫痪。
u 压力测试的一个变种是敏感测试。在某种情况下,微小的输入变动会导致系统的表现(如性能)发生急剧的变化。敏感测试目的是发现什么样的输入可能会引发不稳定现象。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11