注:这一个系列是我在看原版的The Art of Software Testing时的一些翻译,因为没有得到作者和出版社的同意,这只是我自己的练习。请不要把本文中的内容用于商业用途。
测试的艺术第九章测试基于互联网的程序(The Art of Software Testing-Chapter9 Testing Internet Applications) 2nd Edition
作者:GLENFORD J. MYERS
Revised and updated by Tom Badgett and Todd M. Thomas with Corey Sandler
9.2 测试的挑战
在设计和测试基于互联网的程序是因为大量的你无法控制的元素和许多互相依存的组建,所以你将面对许多挑战。适当的测试你的程序需要你来制作一些你的客户如何使用你网站的环境假定。
一个基于互联网的程序有许多容易失败的地方,在你需要在设计测试用例的时候需要考虑好的。( An Internet-based application has many failure points that you should consider when designing a testing approach.) 下面的这个列表提供了一些测试基于互联网的程序相关联挑战的例子:
.有一个很大而且各式各样不同的用户群。你网站的用户技术的水平是不相同的,他们所使用的浏览器也是各式各样的,当然使用的操作系统和设备也不相同。你也应当考虑到,用户访问你网站的网络速度也是不一样的。不是每个人都有一条T1线路或者拥有宽带连接的。
.商业环境 如果你正在运营一个电子商务网站,那么你必须考虑到一些比如计算税收的问题,还要决定运费,完成交易财务处理和追踪客户的资料。
.发生的场地 用户可能定居在不同的国家,所以你需要处理一些国际化的问题,比如语言的翻译,时区的考虑和货币的换算等问题。
.测试环境 为了恰当地测试你的程序,你需要重现产品的环境。这表示你需要使用和正式上线的产品环境一样的web服务器,程序服务器和数据库服务器。为了得到最准确的测试结果,我们同样需要重现网络的基础设施,包括路由器,交换机和防火墙。
.安全 因为你的站点是面向全世界的,你必须保护自己的站点防止黑客的攻击。他们会用DoS攻击给你的站点带来令人难以忍受的停顿或者窃取你用户的信用卡资料。
即使在这个列表之外,当我们从一个非常多样化的开发和商务的角度来看待这个测试时,我们也需要添加许多考虑角度。( Even from this list, which could be expended considerably as we include viewpoints from a wide variety of developers and businesses) 你可以看到配置一个测试环境是电子商务开发的最富有挑战性的地方。测试财务交易的过程需要最大的精力和花费。你必须复制包括软件和硬件在内的所有组件,利用这个环境来测试程序得到符合要求的结果。配置如此一个测试环境是一个昂贵的努力。不仅设备会给你带来不菲的成本,同样人力成本也同样高昂。许多公司在制作预算的时候没有把这些成本计算进去。导致这个的原因通常包括过分低估时间和货币的需求。再说一点,测试环境还需要一个维护计划,用来保证程序的升级对它产生的影响。
另外一个在测试中有意义的挑战是当你面对浏览器的兼容性测试的时候。在市场上有许多种浏览器,而且他们的行为都不相同。虽然在浏览器的操作上具有一个标准,但是大多数的浏览器提供者为了吸引忠实用户而对浏览器做了很多增强的工作。很不幸的是,就是这些增强导致了浏览器变得不那么符合标准。我们会在本章的接下来环节在仔细阐述这个问题。
虽然在测试基于互联网的程序的时候将会面对那么多的挑战,你还是应该把你的测试精力集中到一些特定的环节。图表9.1定义了一些在测试中非常重要的部分,这个可以保证你的用户可以在你的网站上得到积极的体验。
因为第一印象是最重要的印象,你的一部分测试精力将会集中在测试可用性和面向人类的影响。(Because the first impression is the most important impression, some of your testing will focus on usability and human-factor concerns.) 这个区域主要专注在外观和对你程序的感觉上。在用户是不是会接受你的程序这个问题上,字体,颜色和图片将会在测试项目中扮演一个主要的角色。
系统的性能当然也会印象到用户的第一印象。就像我们在前面提到的那样,互联网的用户希望得到即时的满足。他们不希望为了等待页面载入或者完成处理而浪费很多时间。毫不夸张地说,几秒钟的延时就可能导致你的顾客去访问其他的网站了。低下的性能可能导致顾客怀疑你网站的可靠性。因此,你应该设定你希望的性能目标,而且设计一些可以暴露你的网站没法达到目标这样问题的测试用例。
当顾客在你的站点购买产品或者服务的时候,他们需要快速和正确地处理交易。他们绝对不会容许付费和运输上发生什么错误 (They do not, and should not, tolerate inaccurate billings or shipping errors.) 如果你的程序没办法进行正常的财务交易,发现你应该对更多的交易数量负责,比损失一个顾客要来的好些。(Probably worse than losing a customer is finding yourself liable for more that the transaction amount if your application does not process financial transactions correctly)
你的程序在完成交易或者电子邮件注册的时候都会收集一些信息。所以,你应该保证你收集的这些信息是有效的。比如说,保证电话号码,身份证号码,货币种类,电子邮件地址和信用卡号码这些号码的长度和格式都是正确的。再说一点,你应该检查你的数据的完整性。本土化的过程很容易导致数据因为字符集的不同而被截断,使得这些数据不能使用。
在互联网环境中,保证用户可以使用网站的服务是非常重要的。这需要你为了所以的支持程序和服务器开发和设计一份指导方针。比如Web服务器和RDBMS需要高等级的管理。你必须监控日志文件,系统资源和备份数据用以保证这些重要项不会出错。就像我们在第六章中说的那样,你希望用最小的覆盖达到最大的错误发现。
最后,你测试精力还要注意到其他地方网络的连接水平。也就是说,你要注意网络连接性能下降。( At some point, you can count on network connectivity going down) 失败的源头可能是因为网络本身——你的服务提供商或者你的内部网络造成的。所以,当损耗发生时,你需要为你的程序建立一些备选方案和基础设施来有条不紊地回应它。保证你测试的主题,那就是你需要制定一个测试用例来打破你的备选方案。
Technorati Tags: Art of test, internet application test, challenge