2007年12月 的存档

links for 2007-12-30

虚拟光驱导致系统死机

昨天也许是我人品极差的一天。在公司的时候工作机就开始跟我过不去,一进桌面系统就挂起不再给任何反应了,包括安全模式都不行。到后来看我重启的多了,索性连桌面都进不去了。还好我还有GHOST,总算是有惊无险地过了一关。

到了家里,一开电脑就傻眼了。怎么进入桌面之后也一动不动了呢?因为在刚进桌面的时候出提示说是搜狗的拼音没连上网络无法同步数据。先把搜狗的设置改了,还是不行。进安全模式,居然可以正常操作。觉得应该在启动项里有问题。于是乎把几个看起来有问题的启动项给禁用了。还是无功而返,期间已经重启电脑n次了。这时,英明神武的老婆大人提示说为什么不去系统事件查看一下呢? 打开日志果然看到好多个红叉叉。最可疑的就是这个"SPTD"服务没起来了。每次开机不久,就报这个错,同时就死机了。

那么SPTD是什么东西?上网搜了一下,应该是虚拟光驱的东东。

SPTD是一个底层的硬件驱动程序,可以通过它,直接操作底层的硬件设备,比如光驱,硬盘等等,但是会程序的人都知道,这样的程序可以自己写啊,为什么非得用这个SPTD程序来操作呢,这里我们来看看为什么deamon要用他:

SCSI Pass Through Direct (SPTD) layer (32 bit). Basically SPTD is similar to other access layers used by other programs who provide access to storage devices but it has a lot more features that make this interface unique.

实际上就是说,SPTD可以优先控制底层硬件,而将控制权提供给调用他的程序!!

聪明人到这就明白了,为什么deamon tools 要带这个软件的原因,因为deamon tools这样的虚拟光驱软件,向来都是破解游戏,破解软件虚拟光驱的好帮手,但SF防破解保护程序针对的就是DT这种工具,双方争夺的交点就是对底层硬件的控制权,谁抢先控制底层设备,谁就能胜利。。。。

大家明白了吧,SPTD就是在这里扮演抢夺者的角色!

 

手起刀落,在windows/system32/drivers下面删除了SPTD.sys之后,重新启动,OK一切顺利了。

这个故事告诉我们,很多时候,其实线索就在那里躺着,剩下的就是怎么发现的问题了。发现一个有用的线索,比在那里漫无目的地瞎忙效率要高好多。

Technorati Tags: ,,

links for 2007-12-29

测试的艺术第九章测试基于互联网的程序(The Art of Software Testing-Chapter9 Testing Internet Applications) 【5】

注:这一个系列是我在看原版的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.3.2 商务层的测试

商务层测试主要关注找到你网络程序的商业逻辑的错误。你会发现其实测试这个和测试其他的独立程序是一样的,你可以使用白盒和黑盒手段来进行。你要建立测试计划和步骤来检测程序在性能要求和数据收集还有交易进程的过程中的错误。

你要通过白盒测试来接近内部开发的组件,因为你可以知道程序的内部逻辑。然而,黑盒测试才是你在这一层测试的时候主要的技术手段。你要从开发测试驱动来组合测试独立的组件。(You will start by developing test drivers to unit-test the individual components.) 接下来你可以进行系统测试来检测你的组件在一起是不是可以很好的工作。当在这一层来领导一个系统测试时,你需要模仿用户购买产品或服务的步骤。比如,作为一个电子商务站点你可能需要建立一个测试驱动来查找清单,添加东西到购物车,还有支付。实事求是地为这些步骤来做模型是很有挑战的。( Pragmatically modeling these steps can prove challenging.)

你用来建立商业逻辑的技术指导你如何来建立和领导你的测试。有很多技术和手段你可以在这层的测试中用到,这使得没法建议你挑选一种唯一的测试方法。( There are numerous technologies and techniques you man use to build this layer, which makes it impossible to suggest a cookie-cutter testing method.)举例来说,你可能用一个向JBoss一样的专门的程序服务器建造你自己的解决方案。或者你可以用C或者Perl写一些标准的CGI模块。

不管你怎么接近,你程序中总有一个部分是你必须要测试的。比如下面列出来的那些:

.性能。 测试看看你的程序是否达到了文档上所标称的性能(通常是响应速度和传送率)
.数据校验。 测试看看从客户处收集的数据是否包含了错误。
.执行。 测试是否覆盖到了整个交易的全部过程,这个过程应该包括了信用卡,电子邮件验证,和计算消费税等等。

Technorati Tags: , ,

links for 2007-12-28

中国移动,你是优秀的服务还是糟糕的骚扰

一早上,短短的10分中之内被中国移动骚扰了3次。先是10086的电话,一直不停的响,我开的是震动还是受不了接了起来。告诉我余额不足20元了,要快点交钱了。接完电话还没几分钟,短信又来了,一看又是中国移动。还是那句,您的余额不足20元了,为了保证您的…blah blah 心想这次总该让我好好工作了吧,等我下班再去买卡充值。第二条短信又来了… 囧 一模一样的短信发两次。强忍着没把手里的手机扔出去,要不然就变成办公室3C掷远了

我明白,移动是怕我忘记交电话费,可是我不是还有20元的余额么 -___- 虽然全球通比较费钱,可是20元撑一下还是可以的吧。这么热情的提醒我缴费…我有欠过你移动钱么 -____-

确保用户能及时准确地收到消息是对的。但是密集的消息轰炸就有些过了,难道我不用干活每天都是等着移动的消息,然后屁颠屁颠地跑去充值么。

现在很多网站也是这样.经常一条通知发送n次。一般来讲这种服务我基本上都不会再去用它了。

Technorati Tags: ,

测试的艺术第九章测试基于互联网的程序(The Art of Software Testing-Chapter9 Testing Internet Applications) 【4】

注:这一个系列是我在看原版的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.3.1 展示层的测试

对展示层的测试由寻找图形界面上的错误和前台的错误所组成。这个关键的一层提供了减少对你站点投诉,所以发现和改正这一层上发现的问题对展示一个有质量,有活力的站点来说是至关重要的。( This important layer provides the curb appeal of your site, so detecting and correcting errors in this layer are critical to presenting a quality, robust website.) 如果你的顾客在这个层面遇到问题,他们可能不再回来了。他们会可能因为你网站上的拼写错误而离开,一个连拼写都没法保证正确的公司怎么能把信用卡信息交给他们呢?

简而言之,展示层的测试是劳动密集型的工作。如果你可以把你的互联网程序分割成分开的实体的话,你在测试展示层的时候也可以怎么做。下面的列表定义了展示层三个主要的区域:
1. 内容测试。 整体的美观,字体,颜色,拼写,内容的正确性,默认值的正确性。
2. 网站的结构。有没有死链接和不能显示的图片。
3. 用户环境。 浏览器的版本和操作系统设置会不会对网站正常显示造成影响?

内容测试需要检查网站的人机接口元素。你需要查找字体的类型和屏幕输出,颜色,图片的分辨率以及其他直接作用到最终用户的特性。另外,你需要检查你网站提供信息的准确性。防止出现语法正确,但是信息不准确,信息可以和其他图形界面的问题一样危害到你公司的可信度。不准确的信息还可能给你的公司造成法律上的问题。

测试网站的结构,是需要找到导航和构造上的问题。你需要查找坏掉的链接,不存在的页面和错误的文件或者其他一切将用户带往网站错误区域的东西。这些错误非常容易发生,特别是在动态的网站在开发或者升级的过程时候。只要有一个项目成员修改了一个文件的名字,那么指向它的那个超级链接就没用了。如果图片元素被重命名或者移除了,那么在你网页上因为找不到文件会留下一个“大洞”。你可以用一个检查每个页面的结构问题的组合测试来验证你网站的结构问题。最好的练习是,你把结构测试也同样迁移到回归测试中。很多工具都可以自动进行坏链和丢失文件的检查。

白盒测试的手段当测试网站结构的时候是非常有用的。就像程序组会有决定点和执行路径一样,网页也有。(Just as program units have decision points and execution path,  so do Web pages.) 用户可能用任何顺序来点击那些可以引导用户从一个页面到另一个页面的链接和按钮。对大型站点来说,他们有很多导航事件的组合会发生。复习我们在第四章提到的白盒测试和逻辑覆盖理论能了解更多。

就像早先提到的那样,测试最终用户的环境,也就是说浏览器兼容性测试,是测试基于互联网程序的非常具有挑战性的方面。浏览器和操作系统的组合有很多很多。不只是你需要测试每种浏览器的设置,你还要测试同一浏览器的不同版本。浏览器的供应商经常会在版本升级的时候对一些特性进行改进,也就是说这些改进很有可能会对就的浏览器兼容性造成影响。

如果你的程序严重依靠于客户端的脚本运行,你的用户环境测试将会变得非常复杂。每个浏览器都回有不同的脚本引擎,或者虚拟机来运行脚本,而且代码是在客户的电脑上。如果你使用了下列技术,那么你在测试浏览器兼容性测试的时候请特别注意:

. Active X 控制
. JavaScript
. VBScript
. Java控件

你使用一份定义的很好的功能需求书,可以很好的克服大部分和浏览器兼容性测试关联的挑战。比如,在要求收集的阶段,你的市场部可能会决定程序需要确认在某个特定的浏览器下可以运行。这个要求消除了很多测试因为你定义了你需要测试的平台。

Technorati Tags: , ,

测试的艺术第九章测试基于互联网的程序(The Art of Software Testing-Chapter9 Testing Internet Applications) 【3】

注:这一个系列是我在看原版的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.3 测试的战略

开发一个测试基于互联网的程序的战略要求踏实地了解组成这个程序的每个硬件和软件。因为这是是否能成功地测试程序的重要标准,需要一份描述你的网站期望的功能和性能的测试需求文档。如果没有文档,你没法设计合适的测试用例。

你需要测试内部开发的组件以及向外部购买的第三方组件。对自己开发的组件,你可以使用之前几章我们介绍的那些手段。包括了设计组合/模块化的测试用例以及代码审查。只有在你检查过这些组件达到了你的文档中提到的设计标准和功能需求之后,你才能把他们集成到整个系统中去。

如果你购买了第三方的组件,那么你要设计一系列的系统测试来检验这个组件是否可以正常地独立地运行于你的程序中。不要用你供应商的质量控制程序在这个组件中来发现的错误在作为测试的结果。比较完美的是你需要自己独立地完成你对程序的测试。只有当你决定他们表现出了可以接受水平之后,你才能把他们集成到程序中去。对于你程序结构中的非功能性的第三方组件,很难用测试结果来解释和定义出错误的源头。通常,你需要用到黑盒测试来检验第三方的组件,因为你几乎不知道这个组件内部是怎么实现的。

测试基于互联网的程序,最方便的方法是用分而治之的方法来达到效果。幸运的是,基于互联网的应用程序的结构可以允许你来定义描述区域来运用测试用例(Fortunately, the architecture of Internet applications allows you to identify discrete areas to target testing.) 图标9.1已经表达了一些互联网程序的基本结构。那么图标9.2将会为每一层提供更多更仔细的视角。

Photo sharing and image hosting

就像我们在本章的早些时候提到的那样,基于互联网的程序可以被看做是三层的C/S结构。在图标9.2中对每一层是怎么定义的:
.展示层 这一层互联网程序提供了图形界面。
.商业逻辑层 这一层为你提供了用户认证和交易处理等的商业模式
.数据层 这一层容纳了你的程序需要使用的或者是从用户那里收集来的数据

每一层都有它自己的特性,他们促进了测试的细化。如果你每个层分开独立测试,那么你将会在系统测试开始之前更容易地定义问题和错误。如果你只是依赖于系统测试,那么你可能会将时间浪费在定位一个造成问题的特定组件上。

图表9.2列出了你在每一个层面必须测试的项目。这个列表并不完整,但是为你设计自己的测试标准提供了一个出发点。在这一章的接下来部分我们会为怎么测试每一个层面提供更详细的指导。

Technorati Tags: , ,

links for 2007-12-26

测试的艺术第九章测试基于互联网的程序(The Art of Software Testing-Chapter9 Testing Internet Applications) 【2】

注:这一个系列是我在看原版的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定义了一些在测试中非常重要的部分,这个可以保证你的用户可以在你的网站上得到积极的体验。

Photo sharing and image hosting

因为第一印象是最重要的印象,你的一部分测试精力将会集中在测试可用性和面向人类的影响。(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: , ,