词条 | .NET软件测试自动化之道 |
释义 | 本书主要讲解在。NET环境下编写轻量级软件测试自动化程序的实用技术。全书内容由WindowsUI测试、Web应用程序测试和存储过程及XML测试三部分组成,全面介绍了如何利用。NET平台提供的一系列技术(而不是依赖于第三方的商业自动化测试工具),采用C#语言编写轻量级的、功能强大的自动化测试程序。本书各个章节所提供的示例代码适用于单元测试(UnitTest)、集成测试(IntegrationTest)等软件开发过程中的各个测试环节。本书适合于所有在。NET平台上从事应用程序开发的程序员、测试人员以及自动化测试工具开发人员。 作者:(美)麦克卡佛瑞 著,刘晓伟 译 ISBN:10位[7121040611]13位[9787121040610] 出版社:电子工业出版社 出版日期:2007-1-1 定价:¥49.80元 内容提要本书主要讲解在.NET环境下编写轻量级软件测试自动化程序的实用技术。全书内容由WindowsUI测试、Web应用程序测试和存储过程及XML测试三部分组成,全面介绍了如何利用.NET平台提供的一系列技术(而不是依赖于第三方的商业自动化测试工具),采用C#语言编写轻量级的、功能强大的自动化测试程序。本书各个章节所提供的示例代码适用于单元测试(UnitTest)、集成测试(IntegrationTest)等软件开发过程中的各个测试环节。本书适合于所有在.NET平台上从事应用程序开发的程序员、测试人员以及自动化测试工具开发人员。 编辑推荐本书内容简洁明了,体例实用方便,为.NET开发者量身定做 资深.NET专家之经验汇集,应有尽有 开发高质量.NET应用,做优秀.NET开发者 作者简介JAMESMCCAFFREY博士任职于VoltInformationSciences公司。他拥有南加州大学的博士学位、夏威夷太平洋大学信息系统专业的硕士学位、加州州立大学Fullerton分校数学专业的学士学位,以及加州大学Irvine分校心理学专业的学士学位。他曾是夏威夷太平洋大学的教授,并在微软公司作为主程序员参与过IE浏览器和MSNSearch等关键产品的开发。 目录关于作者 关于技术审校 致谢 导读 第1部分Windows应用程序测试 第1章API测试 1.0导读 1.1存储用于测试用例的数据 1.2读入测试用例数据 1.3解析测试用例 1.4把数据转换为合适的类型 1.5判定测试用例通过与否 1.6记录测试用例结果 1.7给测试用例结果加上时间戳 1.8通过计算对测试结果进行总结 1.9获得测试运行的总时间 1.10处理输入为空或期望值为空的情况 1.11处理“方法抛出异常”的情况 1.12处理输入参数为空字符串的情况 1.13编写程序,在测试用例失败时发送警告邮件 1.14自动运行测试套件 1.15示例程序:ApiTest 第2章基于反射的UI测试 2.0导读 2.1运行待测程序 2.2设置窗体的属性 2.3获得窗体属性 2.4设置控件的属性 2.5访问控件的属性 2.6方法调用 2.7示例程序:ReflectionUITest 第3章基于Windows的UI测试 3.0导读 3.1运行待测程序 3.2获得待测程序主窗体的句柄 3.3获得有名字控件的句柄 3.4获得无名控件的句柄 3.5发送字符给控件 3.6鼠标单击一个控件 3.7处理消息对话框 3.8处理菜单 3.9检查应用程序的状态 3.10示例程序:WindowsUITest 第4章测试套件设计模式 4.0导读 4.1创建使用文本文件存储数据并采用Streaming模型的测试套件 4.2创建使用文本文件存储数据并采用Buffered模型的测试套件 4.3创建使用XML文件存储数据并采用Streaming模型的测试套件 4.4创建使用XML文件存储数据并采用Buffered模型的测试套件 4.5创建用于轻量级自动化测试数据存储的SQL数据库 4.6创建使用SQL存储数据并采用Streaming模型的测试套件 4.7创建使用SQL数据并采用Buffered模型的测试套件 4.8发掘关于待测系统的信息 4.9示例程序:PokerLibTest 第2部分Web应用程序测试 第5章请求-响应测试 5.0导读 5.1发送一个简单的HTTPGET请求并且取回响应 5.2发送带有认证信息的HTTP请求并取回响应 5.3发送复杂的HTTPGET请求并且取回响应 …… 第6章基于脚本的WebUI测试 第7章底层的WebUI测试 第8章WebService测试 第3部分部分数据测试 第9章SQL存储过程测试 第10章排列与组合 第11章ADO.NET测试 第12章XML测试 索引 本书概述(导读)●本书讲的是什么 本书讲解的是在NET环境下编写轻量级软件测试自动化程序的实用技术。如果你从事的是NET软件的开发、测试或管理工作,那么这本书就是为你而写的。在NET之前,编写自动化测试程序往往和编写待测程序一样困难。有了NET,只需要以前几分之一的时间就可以编写出轻量级、定制的自动化测试程序。说到轻量级的自动化测试程序,我的意思是源代码通常不超过两页或者编写时间不超过两个小时、小型、专用的测试套件。本书的重点在于介绍可以直接应用到日常工作的那些实用技术。 ●本书适合哪些人 本书的读者定位是采用NET技术的软件开发者、测试人员和管理人员。阅读本书的前提是要基本熟悉NET,但是对具体的熟练程度并没有特殊的要求。书中的例子已经在一些讲座中成功地得到应用,这些讲座的听众既有初级程序员,又有高级的系统程序员,背景千差万别。另外,本书的内容也曾针对一些学习中级NET编程的学生进行过讲授,实践证明这些内容是非常有效的。 ●轻量级自动化测试的优点 本书所讲述的自动化测试技术是为了补充其他测试的不足,比如手工测试、测试驱动开发(test-driven development)、基于模型的测试(model-based testing)、开源测试框架、商业测试框架等等,而不是为了替代这些测试。软件测试自动化(包括本书所讲解的技术)相比于手工测试有5个优点。有时候我们把自动化测试相比于手工测试的这些优点概括为SAPES:更快的速度(Speed),更高的准确性(Accuracy)、精度(Precision)以及效率(Efficiency),并且更有利于测试者提升自身技能(Skill-Building)。此外,与开源测试框架和商业框架相比,轻量级的自动化测试没有前者那么陡峭的学习曲线(有些框架甚至要求你学习一门专用的脚本语言)。与商业自动化测试框架相比,轻量级的自动化测试花费相对便宜并且很容易进行定制。与开源测试框架相比,轻量级的自动化测试不会有太多版本更新和bug修复,从而更为稳定。轻量级的自动化测试套件与商业测试框架和开源测试框架相比,最大的优点是可以调动测试者的主观能动性;轻量级的自动化测试积极鼓励编写有创造性的测试程序,而商业框架和开源框架常常限制你只须编写框架支持良好的那些测试类型。轻量级的自动化测试唯一的缺点是不太容易维护。因为轻量级的测试套件编写起来非常容易,如果不小心处理,所创建的大量测试套件、测试用例数据和测试用例结果文件可能使你不堪重负。测试过程管理超出了本书的范围,但是在编写轻量级的自动化测试程序时,这却是一个不容低估的有挑战性的问题。 ●关于代码 本书所有代码都采用C#语言编写。因为底层的NET框架为各种编程语言提供了统一的平台,如果有需要,不用费太大力气就可以把书中的这些代码改写成Visual Basic NET代码。书中的所有代码都经过了测试,并且在Windows XP Professional (SP2)和Windows Server 2003上采用Visual Studio NET 2003(with Framework 1.1)和SQL Server 2000成功运行。这些代码也针对Visual Studio 2005 (with Framework 2.0)和SQL Server 2005进行了测试。但是如果你的工作环境是后者,则需要对这些代码进行一些细微的改动。这些代码针对的是32位的操作系统,并没有针对64位的系统进行过测试。 如果你对软件测试自动化还不是很熟悉,你可能很快就会发现,作为一个测试人员编写代码与作为开发人员编写代码有着明显的不同。本书中的大部分代码都采用传统、脚本风格的编码方式,而没有采用面向对象的风格。我觉得采用脚本风格编写的自动化测试代码更容易理解,但这只是我个人的看法。 另外,很多示例代码并没有引入很多参数,也没有封装成方法。这么做是为了让代码更为简洁明了。大多数通常的错误检查代码(比如针对方法的输入参数进行检查)都被省略掉了。错误捕获对于产品级的自动化测试代码来说是至关重要的(毕竟,我们是在通过代码找出错误),但是用于错误检查的代码经常是核心代码的三四倍。你可以很容易地对本书中的代码进行修改,比如封装成方法、添加错误检查、集成到其他测试框架以及封装到工具类或者程序库。本书大部分章节所测试的都是出于演示目的的小程序。从设计上来说,这些小程序并不是好的编程风格的范例,而且这些待测程序经常还包含故意制造的一些错误。这么做是为了保持演示程序不至于过大并且也模拟了在开发过程中出于尚待完善状态的应用程序。例如,我通常使用textBox1这样的默认控件名称,而没有采用更具说明性的名称,局部变量名称我也取得很短(比如用s表示一个字符串变量),有时候我还会把多个语句写在同一行上,等等,不一而足。我在本书的插图中还留下一些;严重等级为4;的bug(印刷错误);试试看你能不能找到它们。大多数时候,我都尽量让自己使用的术语尽可能地准确。例如,当某个子程序是C#类的成员函数时,我使用术语方法(method),当指代Win32 API库的C++子程序时,我使用术语函数。但是,有时候当我觉得使用意思相近的术语可能更容易理解或者更容易让别人读懂,我也会使用那些稍有偏差的术语。例如,有时候我使用术语字符串变量(string variable)而不是更为准确的字符串对象(string object)来指代C#的字符串。 本书采用了提出问题并给出解决方案(problem-solution)的组织结构。这种方法的优点是可以方便地组织各种各样的自动化测试任务。但是为了让本书的篇幅限制在合理的范围内,大多数解决方案并不是完整并且独立的代码段。我的意思是说,我经常会省略掉变量声明,或者不会一再地讨论解决方案中所用到的命名空间和工程引用,等等。许多解决方案经常会用到同一章中的其他解决方案,所以你应该仔细考虑一下它们之间的依赖关系,以及如何才能利用它们写出完整的测试套件。为了帮助读者理解一章的各个小节是如何一起工作的,每章的最后一个小节我都给出了完整的独立的程序代码。 ●本书内容 大多数计算机书籍,都会在导读部分概要性地介绍一下书中的内容。我不打算采取这种做法,我觉得要知道一本书的内容最好的方法是浏览一下它的目录;我自己通常就是这样做的。尽管如此,我还是想提一下本书的4个特定主题,这4个主题在我的同事中间激发了巨大的兴趣。第1章,API测试;从很多方面来说都是软件测试最基本的类型。如果你对软件测试还不是很熟悉,你不但可以学到有用的测试技术,而且还能了解到软件测试中的许多基本原则。第3章,;基于Windows的UI测试;介绍了通过用户界面对应用程序进行操纵的技术。即使有很多年经验的软件测试人员也会惊叹于通过.NET和第3章所讲述的技术,UI测试能变得如此的容易。第5章;请求-响应测试;讲解了用于测试Web程序的基本技术。Web开发人员和测试人员经常也会惊叹于在环境下,这些技术是如此的强大。第10章&l;排列与组合;介绍了如何通过编写程序生成把输入值的所有排列或组合考虑在内的测试用例。有经验的测试人员和测试新手都觉得组合数学和.NET结合起来大大提高了测试用例的生成效率。 ●使用书中的代码 本书旨在为从事软件开发和测试的人员提供实际的帮助。很自然地,这就意味着你可以在你的系统或文档里使用本书给出的代码。但是这种授权并不包括在网站上或杂志文章中大段地复制本书中的代码,或者在会议讲演中使用本书给出的例子,等等。大多数作者(包括我在内)都会希望,如果您在书中或杂志中用到了他们书中给出的例子,那么最好能指明所援引例子的原作者。另外,作者对使用这些示例代码可能造成的后果不承担任何责任。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。