书籍详情
实用软件测试指南
作者:(美)James A.Whittaker著;马良荔,俞立军译;马良荔译
出版社:电子工业出版社
出版时间:2003-01-01
ISBN:9787505381605
定价:¥22.00
购买这本书可以去
内容简介
本书所给出的测试并非传统意义上基于书面测试计划实施的循规蹈矩的测试,也没有讨论艰深的测试理论,而是直接面向实际应用,使测试员进行“自由”的测试,提出了对软件进行攻击的思想,从软件的用户界面、文件系统接口和操作系统接口三个最易于攻击的方面来实施攻击,并利用了所开发的软件,帮助测试员简单地捕获异常并强制执行一般错误,最终能更快、更多地发现软件中的错误,改进软件,提高软件质量。本书可作为计算机专业高年级本科生、计算机专业研究生的软件测试教材或参考书,也可作为软件开发人员、软件测试人员和软件管理人员的参考手册。前言关于本书本书基本上没有包含测试理论。阐述测试理论的书很多,但讲述一个好的测试员如何开展实际测试的书基本上没有。所以我写了这样一本书。我试图进入我所遇到过的最佳测试员的大脑并把最好的技术形成文字,指出隐错在什么地方以及如何最有效地找到这些隐错的方式继而获得可发布的高质量产品。我写本书的第二个目的是使它阅读起来充满趣味性并且包含的技术应用起来也很有趣。我爱中断软件。我希望我的热情将为软件测试行业增添光彩的一页。关于本书读者听起来有点像推销,但每一个读者都可以从本书中获得一些他所需要的知识。它以一种吸引初学者的指导风格书写,而最老练的测试人员可能欣赏本书独特的内容。当然,目前我作为大学教授也意味着我在写作本书时要把学生放在心上。我把本书用于本科生和研究生测试课程。学会如何成为一个优秀的测试员并超越基础理论是很重要的。关于本书的例子本书给出了来自实际应用软件的真实错误消息和奇异行为(我敢说是“隐错”吗?)的屏幕显示。包含这些例子用来描述本书所讲述的攻击技术。其中有些是大隐错,而有些只是小麻烦。例子的主要目的是教学和说明。这并不意味着仅仅作为大隐错的例子(尽管其中的一些确实如此),也不意味着我们取笑生产该应用程序的公司。实际上,我精心选择了市场领头羊的应用程序,所以能够被绝大多数读者立即认可。更进一步,每个例子都来自我平常交往的、其开发实践和文化是我所推崇的公司生产的应用程序。我提醒读者在应用本书中的技术或再现屏幕显示的隐错时要谨慎。许多攻击会使应用程序崩溃。确信在尝试攻击之前保存了你的工作,确保不丢失任何重要的数据。关于本书的组织本书由四部分组成。第一部分是对软件中断研究领域的介绍,以适应讲授对软件和它所工作的复杂环境的理解。对软件测试人员而言,理解软件环境很重要,这样他们就注意到软件内部在做什么以及它是如何与环境交互的。没有这样的理解,很难成为一个成功的软件中断者。第二部分详细介绍了能通过用户接口应用的特定攻击。无论接口是GUI或是程序的API,这一部分将会给出如何从接口攻击软件,何时应用每个攻击,攻击在破坏软件时为什么会成功以及是怎样成功的。这一部分可能成为在对你的软件目标进行攻击行动时最常引用的部分。第三部分讨论了非人类系统接口的测试问题(即如何测试应用程序的文件系统、操作系统、软件接口)。讨论了攻击策略。介绍了一个新的称为HEAT的工具,即不利环境应用程序测试器(HostileEnvironmentApplicationTester)。你可以在本书选配光碟中找到“CannedHEAT”。CannedHEAT允许测试员以一种称为运行期故障植入的技术来测试系统接口。第四部分是结论,结论是软件测试永远不能真正地掌握。相反,它要求不断地学习并获取新的技能。这部分我们描述了在Florida技术学院发生的两件有趣的充满教训的事。你可以把它们用在你?氖笛槭依铩K潜Vつ馨蜒昂陀槔止餐谌氲饺魏稳砑馐苑绞街校?附录B~附录D为软件中断者提供了特定的资源。附录B讨论了运行期故障植入。附录C描述了CannedHEAT的使用,CannedHEAT是选配光碟上的一个易于使用的故障植入工具。附录D重印了在“IEEESoftware”上已发表过的一篇文章,它描述了一般的软件测试过程。这些附录补充了本书的内容,可以单独阅读或作为本书的附加材料阅读。附录A包含了常用编程术语的定义。关于本书的内容本书脱离了传统的测试。在传统测试中,测试员准备好书面测试规划并把它作为测试软件时的脚本,测试提前规划好并以一种机械的方式执行。本书中的测试技术是灵活的,而传统测试是严格的。如果在一个软件项目中,需求改变了,隐错变成特性,进度压力强制计划重新评估时,就需要灵活性。软件测试并不是可以预先确定测试什么、执行计划并按计划来实施的一门精确的科学,这需要上帝般的远见。不是靠计划,而是靠智能、洞察力、经验以及对隐错隐藏位置的敏锐判断等来指导测试人员。本书会帮助测试员开发这种洞察力。作为测试规划和自动测试执行的一个长期拥护者,我对这种自由形式测试的第一个感觉是怀疑。但是,事实简单地驳倒了我。聪明的人做的探索测试找到了所有我见过的最佳隐错。同样是这些聪明的人在最佳测试自动化上也做得更好,不是一个小的零头而是一个数量级。当项目需做困难的、认真的测试时,往往是调入最聪明的测试员而不是测试计划或测试自动化。当需要做出关键的运载决定时,聪明的管理员会忽略测试计划的部署而注重最有经验的测试员的意见。我不久就确信我那宏大的全自动测试研究议程需要认真地重新考虑。我对那些知道产品并找出了所有隐错的人表示出强烈的兴趣。我可以证实这些民间方法没有脚本并设法抛开了压在桌上文档下的正式的测试计划。被提问时,他们总是回答:“那份计划并未瞄准隐错所在之处。”本书中体现的技术不仅允许测试员脱离脚本,也鼓励他们这么做。不要盲目相信文档,它们可能是过期的或在产品可测试之前写的。相反,应该开动脑筋!睁大眼睛!想一点,测试一点,再想一点。但是,不要认为我反对计划或文档。本书简单地讲授测试中的紧张工作计划。不要认为测试自动化是令人沮丧的。有许多重复复杂的任务需要好的工具(确实,收录在本书选配光碟上的就是这样的工具)。但是,工具永远不能代替智能使用。测试员思考并使用工具收集数据,以帮助他们更加快速有效地探究应用程序。如果给本书一句题词,则可以是:熟悉你的产品,考虑你的步调,并让经验引导你。甚至可以更简单:开动脑筋,睁开眼睛……测试!我长期热衷于研究这样的测试。我通过观察人们以及研究他们的隐错来做这项工作。为找出隐错,最好的测试员在做些什么?最佳隐错有什么共同之处?有没有方法推广有经验的测试员的行动使得缺乏经验的测试员能做得更好?我的意图是捕捉我所遇到的最优秀的测试员的最好思想,并把这些思想形成文字,以这种方式使测试新手能够学到有用的知识并变得更好。如果本书内容未能达到这个目标,那只是因为我个人的沟通技巧不足所致,而不是我的研究主体本身的技巧的反映。本书中好的内容都出自同事们细致研究过的工作。我感谢他们公开了他们找出的隐错以及他们的洞察力。本书中的错误全都归咎于我。把测试的辉煌景象形成文字对于像我这样的凡人来说是很困难的事。关于本书的补充材料本书提供了一张选配光碟,它包含了两个非常有用的工具,它们是Florida技术学院的教员和学生编写的。CannedHEAT和HolodeckLite是运行期监视和故障植入工具,运行于WindowsNT系列的平台上。两个工具都很容易使用,在本书的第三部分和附录中有详细的解释。另外,www.HowToBreakSoftware.com是获得最近的工具更新、隐错故事和与破坏软件原理相关的技术公告等信息的在线通道。JamesA.WhittakerMelbourne,FloridaAugust2001
作者简介
James A.Whittaker博士是佛罗里达技术学院计算机科学系统软件工程研究中心的教授和主任。他也是一位出色的演说家和产业界顾问,经常出现在拥护的仅容立足的地方,为全球一流的企业讲演软件测试。他的工作已经赢得了无数“最佳表述”和“年度优秀教师”奖。
目录
献辞
译者序
前言
各章概要
致谢
第一部分引言
第1章 指导软件测试的故障模型
软件测试的目的
理解软件行为
理解软件环境
人类用户
文件系统用户
操作系统用户
软件用户
理解软件能力
测试输入
测试输出
测试数据
测试计算
总结和结论
练习
参考文献
第二部分 用户接口攻击
第2章 用户接口测试:输入和输出
使用故障模型指导测试
探究输入域
攻击l应用输入强制产牛所有错误信息
攻击2施加强制软件建立有默认值的输入
攻击3探究允许的字符集合和数据类型
攻击4输入缓冲区溢出
攻击5找出可能会相互作用的输人, 并测试输人值组
攻击6多次重复同样的输人或输人序列
探究输出
攻击7强制每个输入产牛不同的输出
攻击8强制产生无效输出
攻击9强制改变输出属性
攻击10强制屏幕刷新
结论
练习
参考文献
第3章 用户接口测试:数据和计算
盒内测试
探究存储的数据
攻击11使用不同的初始条件施加输入
攻击12强制数据结构存储过多或过少的值
攻击13考察修改内部数据约束的可选方法
探究计算和功能部件的交互作用
攻击14将无效操作数和操作符结合进行实验
攻击15强制函数进行递归调用
攻击16强制计算结果过大或过小
攻击门发现不充分地共享数据或交互的功能部件
结论
练习
第三部分 系统接口攻击
第4章 文件系统接口测试
从文件系统接口攻击软件
基于介质的攻击
攻击1按容量填满文件系统
攻击2强制介质忙或不可用
攻击3毁坏介质
基于文件的攻击
攻击4赋给无效文件名
攻击5改变文件访问许可
攻击6更改或破坏文件内容
结论
练习
第5章 软件/操作系统接口测试
从软件接口攻击软件
记录-仿真攻击
植入能执行所有错误处理代码并经历所有异常的故障
植入易于在测试实验室模拟的故障
植入在真实领域中可能出现的故障
观察-失效攻击
结论
练习
译者序
前言
各章概要
致谢
第一部分引言
第1章 指导软件测试的故障模型
软件测试的目的
理解软件行为
理解软件环境
人类用户
文件系统用户
操作系统用户
软件用户
理解软件能力
测试输入
测试输出
测试数据
测试计算
总结和结论
练习
参考文献
第二部分 用户接口攻击
第2章 用户接口测试:输入和输出
使用故障模型指导测试
探究输入域
攻击l应用输入强制产牛所有错误信息
攻击2施加强制软件建立有默认值的输入
攻击3探究允许的字符集合和数据类型
攻击4输入缓冲区溢出
攻击5找出可能会相互作用的输人, 并测试输人值组
攻击6多次重复同样的输人或输人序列
探究输出
攻击7强制每个输入产牛不同的输出
攻击8强制产生无效输出
攻击9强制改变输出属性
攻击10强制屏幕刷新
结论
练习
参考文献
第3章 用户接口测试:数据和计算
盒内测试
探究存储的数据
攻击11使用不同的初始条件施加输入
攻击12强制数据结构存储过多或过少的值
攻击13考察修改内部数据约束的可选方法
探究计算和功能部件的交互作用
攻击14将无效操作数和操作符结合进行实验
攻击15强制函数进行递归调用
攻击16强制计算结果过大或过小
攻击门发现不充分地共享数据或交互的功能部件
结论
练习
第三部分 系统接口攻击
第4章 文件系统接口测试
从文件系统接口攻击软件
基于介质的攻击
攻击1按容量填满文件系统
攻击2强制介质忙或不可用
攻击3毁坏介质
基于文件的攻击
攻击4赋给无效文件名
攻击5改变文件访问许可
攻击6更改或破坏文件内容
结论
练习
第5章 软件/操作系统接口测试
从软件接口攻击软件
记录-仿真攻击
植入能执行所有错误处理代码并经历所有异常的故障
植入易于在测试实验室模拟的故障
植入在真实领域中可能出现的故障
观察-失效攻击
结论
练习
猜您喜欢