TA的每日心情 | 无聊 2017-10-24 13:40 |
---|
签到天数: 4 天 连续签到: 1 天 [LV.2]测试排长
|
Roger S. Pressman
许多基于计算机的系统必须在一定的时间内从错误中恢复过来,然后继续运行。
在有些情况下,一个系统必须是可以容错的,这就是说,运行过程中的错误不能使整个
系统的功能都停止。在其他情况下,一个系统错误必须在一个特定的时间段之内改正,
否则就会造成严重损失。
恢复测试是通过各种手段,让软件强制性地发生故障,然后来验证恢复是否能正常进行
的一种系统测试方法。如果恢复是自动的(由系统本身来进行的),重新初始化、
检查点机制、数据恢复和重启动都要进行正确验证。如果恢复是需要人工干预的,
那么要估算修复的平均时间是否在可以接受的范围之内。
系统测试方法之安全测试
Roger S. Pressman
任何管理敏感信息或者能够对个人造成不正当伤害的计算机系统都是不正当或非法侵入的目标。
侵入包括了范围很广的活动:只是为练习而试图侵入系统的黑客;为了报复而试图攻破系统的
有怨言的雇员;还有为了得到非法的利益而试图侵入系统的不诚实的个人。
安全测试用来验证集成在系统内的保护机制是否能够在实际中保护系统不受到非法的侵入。
引用 Beizer 的话来说: “ 系统的安全当然必须能够经受住正面的攻击 —— 但是它也
必须能够经受住侧面的和背后的攻击。 ”
在安全测试过程中,测试者扮演着一个试图攻击系统的个人角色。测试者可以尝试去通过外部
的手段来获取系统的密码,可以使用可以瓦解任何防守的客户软件来攻击系统;可以把系统
“ 制服 ” ,使得别人无法访问;可以有目的地引发系统错误,期望在系统恢复过程中侵入系统;
可以通过浏览非保密的数据,从中找到进入系统的钥匙;等等。
只要有足够的时间和资源,好的安全测试就一定能够最终侵入一个系统。系统设计者的任务就
是要把系统设计为想要攻破系统而付出的代价大于攻破系统之后得到的信息的价值。
系统测试方法之压力测试
Roger S. Pressman
在较早的软件测试步骤中,白盒和黑盒技术对正常的程序功能和性能进行了详尽的检查。
压力测试( Stree Testing )的目的是要对付非正常的情形。在本质上说,进行压力测试的
人应该这样问: “ 我们能够将系统折腾到什么程度而又不会出错? ”
压力测试是在一种需要反常数量、频率或资源的方式下运行系统。例如,
( 1 )当平均每秒出现 1 个或 2 个中断的情形下,应当对每秒出现 10 个中断的情形来进行
特殊的测试;
( 2 )把输入数据的量提高一个数量级来测试输入功能会如何响应;
( 3 )应当执行需要最大的内存或其他资源的测试用例;
( 4 )运行一个虚拟的操作系统中可能会引起大量的驻留磁盘数据的测试用例。
从本质上来说,测试者是想要破坏程序。
压力测试的一个变种是一种被成为是敏感测试的技术。在有些情况(最常见的是在数学算法中)下,
在有效数据界限之内的一个很小范围的数据可能会引起极端的甚至是错误的运行,或者引起性能的
急剧下降,这种情形和数学函数中的奇点相类似。敏感测试就是要发现在有效数据输入里可能会
引发不稳定或者错误处理的数据组合。
系统测试方法之性能测试
Roger S. Pressman
在实时系统和嵌入式系统中,提供符合功能需求但不符合性能需求的软件是不能被接受的。
性能测试就是用来测试软件在系统中的运行性能的。性能测试可以发生在各个测试阶段中,
即使是在单元层,一个单独模块的性能也可以使用白盒测试来进行评估,然而,只有当整个
系统的所有成分都集成到一起之后,才能检查一个系统的真正性能。
性能测试经常和压力测试一起进行,而且常常需要硬件和软件测试设备,这就是说,常常有
必要的在一种苛刻的环境中衡量资源的使用(比如,处理器周期)。外部的测试设备可以监测
测试执行,当出现情况(如中断)时记录下来。通过对系统的检测,测试者可以发现导致效率
降低和系统故障的原因。
系统测试方法之功能测试
功能测试又称正确性测试,它检查软件的功能是否符合规格说明。由于正确性是软件最重要的质量因素,
所以其测试也最重要。
基本的方法是构造一些合理输入,检查是否得到期望的输出。这是一种枚举方法。测试人员一定要设法
减少枚举的次数,否则测试投入太大。关键在于寻找等价区间,因为在等价区间中,只需用任意值测试
一次即可。等价区间的概念可表述如下:记( A , B )是命题 f(x) 的一个等价区间,在( A , B )
中任意取 x1 进行测试。如果 f (x1) 错误,那么 f (x) 在整个( A , B )区间都将出错。
如果 f (x1) 正确,那么 f (x) 在整个( A , B )区间都将正确。上述测试方法称为等价测试,
来源于人们的直觉与经验,可令测试事半功倍。
还有一种有效的测试方法是边界值测试。即采用定义域或者等价区间的边界值进行测试。
因为程序员容易疏忽边界情况,程序也 “ 喜欢 ” 在边界值处出错。例如测试平方根函数的一段程序。
凭直觉输入等价区间应是( 0 , 1 )和( 1 , +∞ )。可取 x=0 。 5 以及 x=2 。 0 进行等价测试。
再取 x=0 以及 x=1 进行边界值测试。
有一些复杂的程序,我们难以凭直觉与经验找到等价区间和边界值,这时枚举测试就相当有难度。 |
|