﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-WINDONE！第三块石头，相信自己能行，那你就一定能行！-随笔分类-软件测试</title><link>http://www.cnitblog.com/windone0109/category/6567.html</link><description>交流！共享！
既然选择了远方，便只管风雨兼程。
软件测试有所长进！自动化测试正在尝试！白盒测试希望介入！
                                    
欢迎各位朋友和我联系。 联系方式: QQ：70566744 Email：windone0109@yahoo.com.cn </description><language>zh-cn</language><lastBuildDate>Tue, 27 Sep 2011 14:57:37 GMT</lastBuildDate><pubDate>Tue, 27 Sep 2011 14:57:37 GMT</pubDate><ttl>60</ttl><item><title>讨论内存不能为“read”的一些可能原因和解决方法</title><link>http://www.cnitblog.com/windone0109/archive/2008/04/19/42522.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Sat, 19 Apr 2008 02:56:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2008/04/19/42522.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/42522.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2008/04/19/42522.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/42522.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/42522.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">经常遇到有朋友在正在运行一些程序时，突然弹出<strong>该内存不能为&#8220;read&#8221;或&#8220;written&#8221;</strong>，接着程序就死掉退出；更甚者，整个系统蓝屏。以下是一些代码提示：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&#8220;0x????????&#8221;指令引用的&#8220;0x????????&#8221;内存。该内存不能为&#8220;read&#8221;。&#8220;0x????????&#8221;指令引用的&#8220;0x????????&#8221;内存，该内存不能为&#8220;written&#8221;。（0x后面内容有可能不一样。） </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">一般出现这个现象有方面的，一是硬件，即内存方面有问题，二是软件，这就有多方面的问题了。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><strong>1、微软IE缓冲溢出漏洞引起</strong></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">2、<strong>内存或虚拟内存地址使用冲突</strong>造成程序的运行需要分配一定的内存地址给程序使用，当程序结束时释放留出空间让给新的程序使用，win是多任务的系统有时前程序未结束 又有新的任务开始到底要多少内存或虚拟内存来保证我们同时运行的工作任务呢?也许win在这个问题上没弄好，所以有此错误常常发生，一般运行大型软件或多媒体后出现这种情况</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">3、<strong>劣质内存条</strong>也会出现这个问题一般来说，内存出现问题的可能性并不大，主要方面是：内存条坏了、内存质量有问题，还有就是2个不同牌子不同容量的内存混插，也比较容易出现不兼容的情况，同时还要注意散热问题，特别是超频后。你可以使用MemTest这个软件来检测一下内存，它可以彻底的检测出内存的稳定度。假如你是双内存，而且是不同品牌的内存条混插或者买了二手内存时，出现这个问题，这时，你就要检查是不是内存出问题了或者和其它硬件不兼容。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">4、<strong>微软WINDOWS系统的漏洞</strong>，windows把内存地址0X00000000到0X0000ffff指定为分配null指针的地址范围,如果程序试图访问这一地址，则认为是错误。c/c++编写的程序通常不进行严格的错误检查，当采用malloc来分配内存而可供分配的地址空间不够的情况下返回null指针。但是代码不检查这种错误，认为地址分配已经成功，于是就访问0X00000000的地址，于是就发生内存违规访问，同时该进程被终止。ASCII字符填充组成的pif文件时会出现以下情况：一个非法的pif文件（用ascii字符\''x\''填充）至少要369字节，系统才认为是一个合法的pif文件，才会以pif的图标[pifmgr.dll,0]显示，才会在属性里有程序、字体、内存、屏幕&#8221;等内容。而且仅仅当一个非pif文件的大小是369字节时察看属性的&#8220;程序&#8221;页时，不会发生程序错误，哪怕是370字节也不行。当对一个大于369字节的非法pif文件察看属性的&#8220;程序&#8221;页时，Explorer会出错，提示：\''***\''指令引用的\''***\''内存。该内存不能为\''read\'' ，问题出在pif文件的16进制地址：0x00000181[0x87]0x00000182[0x01]和 0x00000231[0xC3]0x00000232[0x02]即使是一个合法pif文件，只要改动这四处的任意一处，也会引起程序错误。而只要把0x00000181和0x00000182的值改为[0xFF][0xFF]，那么其它地址任意更改都不会引起错误。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">5、可能<strong>没有完全正确安装apache服务</strong>，且启动了它的原故; 把服务中OracleOraHomeXXHTTPServer改成停 止</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">6、<strong>应用程序没有检查内存分配失败程序</strong>需要一块内存用以保存数据时，就需要调用操作系统提供的&#8220;功能函数&#8221;来申请，如果内存分配成功，函数就会将所新开辟的内存区地址返回给应用程序，应用程序就可以通过这个地址使用这块内存。这就是&#8220;动态内存分配&#8221;，内存地址也就是编程中的&#8220;指针&#8221;。内存不是永远都招之即来、用之不尽的，有时候内存分配也会失败。当分配失败时系统函数会返回一个0值，这时返回值&#8220;0&#8221;已不表示新启用的指针，而是系统向应用程序发出的一个通知，告知出现了错误。作为应用程序，在每一次申请内存后都应该检查返回值是否为0，如果是，则意味着出现了故障，应该采取一些措施挽救，这就增强了程序的&#8220;健壮性&#8221;。若应用程序没有检查这个错误，它就会按照&#8220;思维惯性&#8221;认为这个值是给它分配的可用指针，继续在之后的运行中使用这块内存。真正的0地址内存区保存的是计算机系统中最重要的&#8220;中断描述符表&#8221;，绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS)，写数据到这个地址会导致立即死机，而在健壮的操作系统中，如Windows等，这个操作会马上被系统的保护机制捕获，其结果就是由操作系统强行关闭出错的应用程序，以防止其错误扩大。这时候，就会出现上述的&#8220;写内存&#8221;错误，并指出被引用的内存地址为&#8220;0x00000000&#8221;。内存分配失败故障的原因很多，内存不够、系统函数的版本不匹配等都可能有影响。因此，这种分配失败多见于操作系统使用很长时间后，安装了多种应用程序(包括无意中&#8220;安装&#8221;的病毒程序)，更改了大量的系统参数和系统文件之后。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">7、<strong>应用程序由于自身BUG</strong>引用了不正常的内存指针在使用动态分配的应用程序中，有时会有这样的情况出现：程序试图读写一块&#8220;应该可用&#8221;的内存，但不知为什么，这个预料中可用的指针已经失效了。有可能是&#8220;忘记了&#8221;向操作系统要求分配，也可能是程序自己在某个时候已经注销了这块内存而&#8220;没有留意&#8221;等等。注销了的内存被系统回收，其访问权已经不属于该应用程序，因此读写操作也同样会触发系统的保护机制，企图&#8220;违法&#8221;的程序唯一的下场就是被操作终止运行，回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊！像这样的情况都属于程序自身的BUG，你往往可在特定的操作顺序下重现错误。无效指针不一定总是0，因此错误提示中的内存地址也不一定为&#8220;0x00000000&#8221;，而是其他随机数字。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><br>如果系统经常有所提到的错误提示，下面的建议可能会有帮助：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">1.<strong>查看系统中是否有木马或病毒</strong>。这类程序为了控制系统往往不负责任地修改系统，从而导致操作系统异常。平常应加强信息安全意识，对来源不明的可执行程序绝不好奇。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">2.<strong>更新操作系统</strong>，让操作系统的安装程序重新拷贝正确版本的系统文件、修正系统参数。有时候操作系统本身也会有BUG，要注意安装官方发行的升级程序。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">3.试用<strong>新版本的应用程序</strong>。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">4、删除然后重新创建　WINDOWS\Wbem\Repository　文件夹中的文件：在桌面上右击我的电脑，然后单击管理。在"服务和应用程序"下，单击服务，然后关闭并停止 Windows Management Instrumentation 服务。删除 WINDOWS\System32\Wbem\Repository 文件夹中的所有文件。（在删除前请创建这些文件的备份副本。） 打开"服务和应用程序"，单击服务，然后打开并启动 Windows Management Instrumentation 服务。当服务重新启动时，将基于以下注册表项中所提供的信息重新创建这些文件：HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\Autorecover MOFs</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">下面我从几个例子给大家分析：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><strong>例一</strong>：打开IE浏览器或者没过几分钟就会出现"<strong>0x70dcf39f"指令引用的"0x00000000</strong>"内存。该内存不能为&#8220;read&#8221;。要终止程序，请单击&#8220;确定&#8221;的信息框，单击&#8220;确定&#8221;后，又出现&#8220;发生内部错误，您正在使用的其中一个窗口即将关闭&#8221;的信息框，关闭该提示信息后，IE浏览器也被关闭。 <br>解决方法：修复或升级IE浏览器，同时打上补丁。看过其中一个修复方法是，Win2000自升级，也就是Win2000升级到Win2000，其实这种方法也就是把系统还原到系统初始的状态下。比如你的IE升级到了6.0，自升级后，会被IE5.0代替。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><strong>例二</strong>：在windowsxp下双击光盘里面的&#8220;AutoRun.exe&#8221;文件，显示<strong>&#8220;0x77f745cc&#8221;指令引用的0x00000078&#8221;</strong>内存。该内存不能为&#8220;written&#8221;，要终止程序，请单击&#8220;确定&#8221;，而在Windows 98里运行却正常。<br>解决方法：这可能是系统的兼容性问题，winXP的系统，右键&#8220;AutoRun.exe&#8221;文件，属性，兼容性，把&#8220;用兼容模式运行这个程序&#8221;项选择上，并选择&#8220;Windows 98/Me&#8221;。win2000如果打了SP的补丁后，只要开始，运行，输入：regsvr32 c:\winnt\apppatch\slayerui.dll。右键，属性，也会出现兼容性的选项。 　　</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><strong>例三</strong>：RealOne Gold关闭时出现错误，以前一直使用正常，最近却在每次关闭时出现&#8220;0xffffffff&#8221;指令引用的&#8220;0xffffffff&#8221;内存。该内存不能为&#8220;read&#8221; 的提示。<br>解决方法：当使用的输入法为微软拼音输入法2003，并且隐藏语言栏时（不隐藏时没问题）关闭RealOne就会出现这个问题，因此在关闭RealOne之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><strong>例四</strong>：我的豪杰超级解霸自从上网后就不能播放了，每次都提示<strong>&#8220;0x060692f6&#8221;（每次变化）指令引用的&#8220;0xff000011&#8221;</strong>内存不能为&#8220;read&#8221;，终止程序请按确定。<br>解决方法：试试重装豪杰超级解霸,如果重装后还会，到官方网站下载相应版本的补丁试试。还不行，只好换就用别的播放器试试了。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><strong>例五</strong>：双击一个游戏的快捷方式，<strong>&#8220;0x77f5cd0&#8221;</strong>指令引用&#8220;0xffffffff&#8221;内存，该内存不能为&#8220;read&#8221; ，并且提示Client.dat程序错误。<br>解决方法：重装显卡的最新驱动程序，然后下载并且安装DirectX9.0。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">例六：一个朋友发信息过来，我的电脑便出现了错误信息<strong>:&#8220;0x772b548f&#8221;指令引用的&#8220;0x00303033&#8221;</strong>内存，该内存不能为&#8220;written&#8221;,然后QQ自动下线，而再打开QQ，发现了他发过来的十几条的信息。 <br>解决方法：这是对方利用<strong>QQ的BUG</strong>，发送特殊的代码，做QQ出错，只要打上补丁或升级到最新版本，就没事了。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">例七：我的笔记本电脑用的XP系统，有时关闭网页时会弹出tbrowser.exe遇到问题需要关闭，然后有弹出<strong>0x03e7c738</strong>指令引用的<strong>0x03e7c738</strong>内存，该内存不能为read,请问是怎么回事？<br>解决方法：先查杀一下病毒，另外如果你安装了浏览增强之类的软件，请卸掉。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">例八：从桌面或开始菜单中打开任何一个程序, 出现错误提示："0x........"指令引用的<strong>"0x00000000"内存,该内存不能为"read"。</strong>省略号代表可变值。而从运行中打开程序没问题。<br>解决方法：运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks下，应该只有一个正常的键值"{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除(默认键值当然不要删除)。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">例九：我三个月前配了台机子。系统比较不稳定，三个月内已经重装过多次系统，四五天前刚装过系统，可是经常随机地出现Explorer-应用程序错误，<strong>&#8220;0x4a01259d&#8220;指令引用的&#8220;0x00000000"</strong>内存。该内存不能为&#8220;read"。要终止程序，请单击&#8220;确定&#8220;。要调试程序，请单击&#8220;取消&#8221;。如果点确定，windows桌面就不见了。这种问题在之前的系统也出现过，不知道是不是硬件的问题？<br>解决方法：内存的兼容性问题！遇到这类问题，用户可以自行打开机器把内存的位置调动一下，看问题是否可以解决，如果问题依旧，可与你的朋友调换内存使用。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">通过上面的几个例子，可以看到，出现故障的原因有好多种，下面列出已经提到和有可能发生的原因，方便查阅。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><strong>问题产生原因原因</strong>－－<strong>解决方法</strong></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">内存条坏了－－更换内存条</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">双内存不兼容－－使用同品牌的内存或只用一条内存</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">内存质量问题－－更换内存条</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">散热问题－－加强机箱内部的散热</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">内存和主板没插好或和其它硬件不兼容等－－重插内存或换个插糟</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">硬盘有问题－－更换硬盘</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">驱动问题－－重装驱动。如果是新系统，要先安装主板驱动</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">软件损坏－－重装软件</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">软件有BUG－－打补丁或用最新的版本。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">软件和系统不兼容－－给软件打上补丁或者试试系统的兼容模式</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">软件和软件之间有冲突－－如果最近安装了什么新软件，卸载了试试</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">软件要使用到其它相关的软件有问题－－重装相关软件。比如播放某一格式的文件时出错，可能是这个文件的解码器有问题</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">病毒问题－－杀毒</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">杀毒软件与系统或软件冲突－－由于杀毒软件是进入底层监控系统的，可能与一些软件冲突，卸载了试试</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">系统本身有问题－－有时候操作系统本身也会有BUG，要注意安装官方发行的升级程序，像SP的补丁，最好要打上。如果还不行重装系统或更换其它版本的系统了。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><strong>另注：</strong>在控制面板的添加/删除程序中看看你是否安装了微软<strong>NET.Framework</strong>，如果已经安装了，可以考虑卸载它，当然如果你以后在其它程序需要NET.Framework时候，可以再重新安装。 <br>另外，如果你用的是ATI显卡并且你用的是SP2的补丁（一些ATI的显卡驱动需要在NET.Framework正常工作的环境下）。这种情况你可以找一款不需要NET.Framework支持的ATI显卡驱动。 <br>如果以上两种方法并不能完全解决问题，你试着用一下&#8220;IE修复&#8221;软件，并可以查查是否有病毒之类的。〔微软NET.Framework升级到1.1版应该没问题了〕</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><strong>其它讨论：</strong></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">方法一：微软新闻组的朋友指点:开始--运行：regsvr32 jscript.dll 开始--运行：regsvr32 vbscript.dll </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">不过没解决---但提供了路子-----<a href="http://www.linwan.net.cn/archives/2071.html" target=_blank><font color=#0000ff size=+0><strong><u>一次注册所有dll文件</u></strong></font></a>，这个办法，曾经解决过<a href="http://www.linwan.net.cn/archives/2534.html" target=_blank><u><font color=#0000ff>&#8220;无法登陆&#8221;问题</font></u></a></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">运行 输入cmd 回车在命令提示符下输入 <br>for %1 in (%windir%\system32\*.ocx) do regsvr32 /s %1<br>for %1 in (%windir%\system32\*.dll) do regsvr32 /s %<br>这个命令老兄你慢慢输 输入正确的话会看到飞快地滚屏 否则&#8230;&#8230;否则失败就是没这效果。回车后慢慢等（需要点时间1-2分钟） 都运行完再打开看</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">方法二：<br>一般来讲就是给系统<strong>打上补丁</strong>和<strong>更换内存</strong>、给<strong>内存换个插槽</strong>这3种方法来解决。[系统补丁只要到Microsoft Update网站在线更新就可以了] </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><strong>更多相关讨论</strong></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">造成这种问题的原因很多，不能单纯的下结论，尽量做到以下几点可能对你有帮助：<br>1。确保使用的是<strong>未修改过的软件</strong>（非汉化、破解版）<br>2。使用改软件时尽量不要运行其他软件。（这是个临时文件，可能某些软件也在使用临时文件夹，所以产生干扰）<br>3。把那些什么桌面工具，内存整理工具通通关掉（你至少有2个类似的工具在运行）&#8221;</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">处理方法：<br>运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks下，应该只有一个正常的键值"{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">曾验证解决办法：尝试了多种办法，最后我发现问题出在微软的NET.Framework上面。我升级了这个软件，并打齐了补丁，短暂平安后，有出现&#8220;内存不能为read&#8221;的情况。后来我受上面文章的启发，<strong>卸载了微软的NET.Framework1.0和1.1</strong>,世界太平了。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">另外：如果是打开&#8220;我的电脑&#8221;、&#8220;我的文档&#8221;等的时候出现上述情况，还有一种可能，就是你的<strong>右键菜单太臃肿</strong>了，此时只要清理右键菜单问题就解决了。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">上面的方法，最管用、最彻底的方法是这个：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">运行 输入cmd 回车在命令提示符下输入 <br><strong>for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1</strong></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><strong>技巧：</strong>如果怕输入错误的话，可以复制这条指令，然后在命令提示框点击左上角的c：\，使用下面的&#8220;编辑－粘贴&#8221;功能就不容易输错了。在飞速滚屏完全静止之后，别着急启动其他程序，先耐心等一会儿，因为此时dll们还在找位置。直到你的指示灯不闪了再做别的。</p><img src ="http://www.cnitblog.com/windone0109/aggbug/42522.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2008-04-19 10:56 <a href="http://www.cnitblog.com/windone0109/archive/2008/04/19/42522.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web服务测试与传统的Web测试</title><link>http://www.cnitblog.com/windone0109/archive/2007/11/23/36776.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Fri, 23 Nov 2007 03:16:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2007/11/23/36776.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/36776.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2007/11/23/36776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/36776.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/36776.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 测试web service和测试一个传统的web应用的根本区别是什么? <br>　　Rami Jaamour：我想我们需要在头脑里保持以下这些意识：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">　　1) 不同于传统的应用(web开发，富客户端应用)，你正在构建和测试的services没有直接的用户界面，所以你需要把它组合到一个界面中，让你能够和这些services轻松地进行交互(例如提供数据，构建信息等等)。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">　　2) 类似于传统的应用，有些是要求你的services符合的功能性的要求，例如正确执行那些要求和正确实行你的用例场景，但也有一些非功能性质的要求：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">　　1.符合标准(W3C，OASIS, WS-I等等)，以便当你维护供应商的独立性和避免专有插件的同时可以成功地随时重用和访问那些services。 <br>　　2.遵循政策，其中包括标准以及设计和运行时的政策，还有的政策是确保services内部一致性，使能够重用和加强信任，以便随着你的SOA的发展你能够真正重用services，并使他们的质量状况具有充分的可见性(像信用报告)。<br>　　3)在SOA中的功能和性能的考虑需要更多的关注和与传统的应用不同的方式，因为一旦你围绕你的SOA中的services构建业务流程,你的services可能会以不易预测的方式被访问和消耗，这是因为它们使用的范围不再受具体流程和约束于一个所谓的具体web应用的场景的控制，所以你需要注意负面测试，并确保在突发状况(例如不良数据，数据丢失等等)下services功能是可靠的。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">　　4)安全。永远不要忘记安全考虑：内部外部都要考虑，即使你的services只是内部的。需要避免一些专门针对XML的攻击，还有传统安全考虑，像要阻止对SQL的注入攻击。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">　　从流程角度看，一个连续的测试过程需要建立在你可以孤立的系统部分上(有时你需要清除或仿真来实现)，并不断地(自动)对它进行回归测试。这有一些关键信息：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">　　1)把你的资源放进来构建测试，而不执行测试。这个执行应该是自动的。每当你发现自己在花费时间做测试(发布XML信息并分析)，那么，你就是在做错误的事情。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">　　2)维护你的回归组件和你创建的测试，这是非常有价值的资源，因为一旦你需要做一新版本的services，这些测试资源就会非常有用，所以你可以运行并确保从一个版本到另一个版本没有什么损坏。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">　　3)有一个基础结构来分享这些测试资源也是很关键的，这样不同的组、QA和开发人员等等可以访问、改进和重用那些其他人创建的测试。这是web services被不同的团队重用和消耗的必然结果。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;</p>
<img src ="http://www.cnitblog.com/windone0109/aggbug/36776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2007-11-23 11:16 <a href="http://www.cnitblog.com/windone0109/archive/2007/11/23/36776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>负载测试—网站的性能测试</title><link>http://www.cnitblog.com/windone0109/archive/2007/11/23/36775.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Fri, 23 Nov 2007 03:13:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2007/11/23/36775.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/36775.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2007/11/23/36775.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/36775.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/36775.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 通常来说，负载测试可以采用手动和自动两种方式。手动测试会遇到很多问题，如无法模拟太多用户、测试者很难精确记录相应时间、连续测试和重复测试的工作量特别大等。因此对于负载测试，手动方式通常用于初级的负载测试。目前，绝大多数的负载测试都是通过自动化工具完成的。&nbsp; <br>负载测试的相关问题&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从网站内容上看，每个网站都有自己的客户群和工作负载，不同网站其软硬件结构差异也很大。下图是一个网站的基本框架。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这种复杂性给负载测试带来了很大的挑战。一方面，由于一些设备的原因，有时我们不能直接进行负载测试，必须绕过某些设备，造成很大麻烦。另一方面，由于整个体系结构的复杂，也给寻找问题带来了一定的困难。例如防火墙常常阻止负载测试的进行，因此通常需要对防火墙进行调整，让它暂时支持负载测试; 有时服务器的应用程序采用加密方式与客户端进行交互，在这种情况下，还需要更改服务器应用程序。因此，负载测试人员需要对整个网络架构和应用系统非常熟悉。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另外，负载测试的成功与否，在很大程度上取决于自动化工具。在功能方面，主要考虑它所支持的协议、分析方式、监视目标种类等，以及该工具能否精确记录、回放用户的访问情况。在性能方面，则主要考虑它模拟虚拟用户的能力，例如在一定资源下可以模拟的用户的数量和速度。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">负载测试的过程&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 负载测试是一项非常复杂的工作，一次测试常常要持续几天甚至几周。因此，在进行一次负载测试前，必须做好充分的准备，可以按照以下几个步骤来进行。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">(1)系统分析&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 分析被测系统需要满足什么要求，例如支持多少人在线、支持连续多长时间的访问等。测试者的主要任务就是将系统的需求转换成测试目标，对系统进行全面的分析和评估，并结合测试的实际环境和条件以确保测试目标和测试计划的正确性。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">(2)产生脚本&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为了模拟多个用户访问服务器必须编写脚本。简单的脚本可以通过自动化工具提供的脚本编辑环境来编写。复杂的脚本则通常是通过记录单用户的活动生成最初的脚本，再在此基础上进行修改以保证该脚本可以支持多个用户。其中最主要的修改是关于数据池的，因为不同用户通常使用不同数据，例如用户名和密码等。因此，我们通常要将这些数据存储在数据库(或者数据池)中，以便在执行中被脚本程序调用。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">(3)构造运行场景&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有了脚本后，就可以通过一个场景来管理这些脚本的执行。场景是一个执行单位，可以通过场景来模拟一个工作负载。在场景中，我们将管理脚本的数量、执行次数、执行时间等，甚至还可以加上一些定时器、同步点等控制机制。另外，还可以将模拟用户分配到不同的计算机上。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">(4)运行场景&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置好场景后，就可以运行了。通常，在运行场景的同时还要启动相关监控模块，监控服务器性能、网络状态、Web服务器性能和数据库性能等。自动化工具同时记录了各种客户端信息，包括相应时间、交易成功率等。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">(5)分析报告&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 通常，在场景运行后，自动化工具会生成标准报告，可以通过分析这个报告来分析整个系统性能，找到系统瓶颈。这一步骤通常需要测试人员和开发人员共同完成。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">负载测试市场和工具&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 负载测试市场的发展非常迅速，预计到2003年该市场将达到7亿美元。从目前来说，负载工具市场主要由一些大的软件公司分享，例如CA、Rational和Mercury Interactive。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">(1) Load Runner&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Load Runner是Mercury Interactive公司推出的专业负载测试工具，是目前世界上最强大的负载测试工具之一，它占领了负载测试工具市场的半壁江山。这是一个企业级的自动化工具，提供了非常强大的监视功能，能够监控各种软硬件模块。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从支持的协议来说，Load Runner支持HTTP(S)、WAP、i-Mode、 RealPlayer、LDAP、Winsock、RMI、FTP、POP3、SMTP、CORBA、COM/DCOM以及Tuxedo等。在监视器部分，它支持Windows NT/2000/XP、 SUN Solaris、HP UX、IBM AIX和Linux等操作系统，支持Apache、Web Logic等各种Web Server，还支持各种大型数据库。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">(2) Astra LoadTest&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Astra LoadTest也是Mercury Interactive 公司推出的负载测试工具。相对Load Runner来说，该工具更加容易使用，不需要使用者掌握复杂的编程语言，完全通过可视化界面进行操作。该工具支持大量HTML相关技术，例如JavaScript、XML、ActiveX、Flash、DHTML以及SSL等，并支持大部分的浏览器。它的另外一个优点就是能够高效模拟更多虚拟用户，例如使用PIII 1G/512M机器最大可以支持100～250个用户。另外，Astra LoadTest 继承了LoadRunner的监视模块，可以监控所有LoadRunner支持的对象。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于Astra LoadTest并不是定位在企业级用户，因此它对一些高级协议的支持不够充分，不能支持CORBA、LDAP、COM、WAP以及POP3等协议。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">(3) Rational Robot&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rational在软件测试方面也有非常好的成绩。该公司推出的Robot工具支持SQABasic这种面向对象的记录语言。不过，在性能测试方面，Robot并不是很出名。但是Robot提供了一种新的脚本记录语言—VU语言，它基于传统的C语言，能够方便地访问Robot提供的环境变量。同时Robot还提供了很多良好定义的库函数，调用通信函数更加方便。Robot还提供了其他许多相关测试技术，例如数据池(Datapool)、同步点等，并且通过TestManager可以对所有类型脚本进行管理。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从功能来说，Robot支持众多的网络协议，例如COM、DCOM、SOCKET、IIOP、Tuxedo等，并且可以对协议进行过滤，选取自己关心的协议。从操作方面来说，它对用户的要求也比较高，需要用户在整个访问过程中，对客户和服务器之间的交互类型和内容比较熟悉，同时对Robot也必须有足够的了解。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">(4) WebLoad&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebLoad是RadView公司推出的专业负载测试软件。WebLoad提供了一种非常简单的脚本语言记录通信过程，同时它主要支持HTTP相关的技术和应用协议，例如JavaScript、XML、Java、EJB、ActiveX、WAP、HTTP、SNMP、Real以及 Microsoft Streaming Technologies等。该软件的操作非常容易，并且提供格式良好的分析报告。目前IBM公司大量采用该产品进行负载测试。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;</p>
<img src ="http://www.cnitblog.com/windone0109/aggbug/36775.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2007-11-23 11:13 <a href="http://www.cnitblog.com/windone0109/archive/2007/11/23/36775.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用SOAPtest进行Web service测试</title><link>http://www.cnitblog.com/windone0109/archive/2007/11/23/36774.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Fri, 23 Nov 2007 03:11:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2007/11/23/36774.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/36774.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2007/11/23/36774.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/36774.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/36774.html</trackback:ping><description><![CDATA[<p>　　Web&nbsp; services测试对于开发和测试团队来说提出了一系列崭新的问题。JUnits可以创建用来测试Web service的一部分功能，但是确保充分验证所需的总体功能性，它却不能提供，同时它也会使更新数据值变得困难。还有许多需要被测试的Web service组件仍未找到合适的、更加通用的测试工具。由于Web service测试是一个在开发过程中很早就涉及到外部合作伙伴的领域，所以格外危险，可能很快就会变成一场恶梦。</p>
<p>　　SOAPtest提供了一套完整的针对Web service的测试工具，使开发团队和（或）测试团队能够利用一个一致的工具，对从Web Service定义语言（WSDL）确认到无需自己构建和更新测试客户端的性能测试，来证明Web services是否合适。</p>
<p>　　SOAPtest的一个主要特征是该工具支持大量数据源。生成测试数据可能是耗时的，并易于出错，但是SOAPtest工具有效地减轻了所有这些问题。SOAPtest支持来自任何可通过ODBC/JDBC连接的数据库的测试数据，例如.csv文件、内部表、Excel电子表格，或者任何上述类型文件的集合都支持。增加一个数据源是非常简单的，您只需要选择数据源的类型和位置。我使用的是指南中提供的Excel电子表格。</p>
<p>　　首先，我运行一系列WSDL确认。WSDL通过描述服务和标识位置来控制对Web service的访问。屏幕界面相当直观，我能很快就验证一组WSDL文件。</p>
<p>　　您也可以检查任何URL链接在WSDL中是否依然有效。最有趣的是该工具能够执行Web Services互操作性组织确认。该工具能够生成一份印象深刻的报告，报告可由开发和测试团队进行分析，并酌情分发给您的合作伙伴。</p>
<p>　　该工具还支持WSDL比较和回归测试，使开发团队能够在其他测试之前轻松地获得并确认WSDL变化。</p>
<p>　　一旦WSDL得到确认并生效，下一个关键步骤就是确保Web service操作在单元测试层次上的有用性。这是通过创建一组单元测试来完成的，按照逻辑划分每组单元测试都属于一组测试套件。SOAPtest支持正面测试（测试期望的场景）、反面测试（错误条件下的测试）和回归测试（执行改变确认）。利用该工具，测试数据可以全部或部分来自各种数据源，或者由工具快速生成。在数据生成方面，该工具具有大量的功能，并有能力根据用户定义的一系列规则来生成数据。但有一个缺点就是当我试图仅仅保存某个独立测试本身时，却不知道如何完成。</p>
<p>　　当开发人员完成了单元测试，SOAPtest工具才能够提供创建实际场景测试的功能。在测试过程中，场景测试表现了业务场景的再现。场景测试可以从头创建，也可以通过一系列已经生成的单元测试与测试团队定义的附加测试相融合的联合体得到。</p>
<p>　　SOAPtest提供了数据确认能力的范围。数据可以由元素确认，或者仅由那些您想比较的元素来确认。</p>
<p>　　Web services的另一个关键方面是其异步特性。那些期望使用其他应用程序的传统异步响应的测试工具在处理Web services的这个典型方面时遇到了困难。SOAPtest提供了对那些使用Parlay、SCP和WS-Addressing通信协议的异步调用进行测试的功能。这很关键，因为大多数这些服务的性质不能直接得到确认或者响应。SOAPtest包含一台Tomcat服务器，当部署了结果回调异步模式时，Tomcat服务器使SOAPtest能够测试期望的&#8220;回调&#8221;响应。当使用了回调测试时，一个建议的更新是让Tomcat服务器自动启动。一组异步测试的结果如图1所示： </p>
<p>　　　　　<img src="http://www.cnitblog.com/images/cnitblog_com/windone0109/1.gif" border=0></p>
<p>　　当开发Web services时，另一个关键细节与安全的重要性有关。揭示Web services的本质特性需要安全考虑；因此，测试安全特性对任何Web service的确认测试都是不可缺少的。SOAPtest提供了一个加密工具，能够支持对消息的全部或者部分加密。该工具提供的加密标准包括三重DES、AES 128、AES 192和AES 256。这些数字代表密钥的位数。当使用加密测试时， 一定要安装JCE（Java密码术扩展）Unlimited Strength Jurisdiction Policy File，因为没有它测试就无法工作。</p>
<p>　　SOAPtest所提供的其他关键安全特性包括XML签字工具、XML 验证工具和对用户名和SAML标志的支持。XML签字工具提供数字签名功能。如果您的Web service需要某种数字签名，该工具能用来验证其功能性。同样，XML验证工具允许用户进行加密/解密/验证数字签名消息，方法是利用公钥/私钥存储文件。支持的密钥存储文件格式包括JKS、PKCS12、BKS和UBER。</p>
<p>　　安全声明标注语言（SAML）为交换安全信息提供了一个标准。SAML为Web services提供了一个交换认证和授权声明的方法。这赋予团队在整个组织中提供身份管理服务的机会。在出现一个失败之前，SOAPtest 支持SAML验证。</p>
<p>　　如果您的Web service测试不具备上述测试的特征，SOAPtest将通过提供自定义脚本功能来提供最高的灵活性。脚本可使用Java、JavaScript或者Jython，以及支持文件导入的工具来编写。为了完成测试，脚本代码能够完成任意所需的其他测试逻辑。</p>
<p>　　在测试Web services时，另一个关键方面是确认性能需求和识别性能的界线。在Web service测试的工具中，SOAPtest相当独特，这是因为它在负载测试领域所提供的强大功能。</p>
<p>　　要访问SOAPtest的负载测试工具包，从左侧导航面板中选择Load Test选项卡。现有的场景可以利用以前的功能测试，也可以生成新的测试场景。 该工具提供了通过约束相关机器来在整个网络中运行这些测试的能力。当您能够避免本地机器局限性的时候，这也使得负载水平显著地增加。</p>
<p>　　通过创建用户配置文件，可以将功能测试和负载测试合为一体。每个配置文件由一个或者多个功能测试组成，并且能被加入到每个负载测试或者从每个负载测试中删除。我使用的配置文件是基于前面创建的正面和负面测试场景的。</p>
<p>　　也可以延迟每个配置文件，以便更好地监视每个功能测试对负载的影响。配置文件比率可以通过使用与该场景相关的Profiles选项卡来调整。在整个计划的测试周期中，它以图形显示信息，允许对用户数量和每秒钟的点击数进行调整。很简单，在图的任何地方点击右键，创建一个点，然后把那个点移到合适的位置。每秒钟的点击数和用户的数量也可以动态地调整。</p>
<p>&nbsp;</p>
<img src ="http://www.cnitblog.com/windone0109/aggbug/36774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2007-11-23 11:11 <a href="http://www.cnitblog.com/windone0109/archive/2007/11/23/36774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web测试之url测试</title><link>http://www.cnitblog.com/windone0109/archive/2007/11/23/36773.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Fri, 23 Nov 2007 03:08:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2007/11/23/36773.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/36773.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2007/11/23/36773.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/36773.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/36773.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们平时在对url进行测试的时候可能不知道采用什么方法测试，可能点点链接指定页面出现就ok了，其实这个是远远不够的，我说说我平时测试常用的一些方法，供大家参考。当然也欢迎大家说大家的一些测试的方法加以补充，将url测试尽可能覆盖全。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">1.修改url中的get参数<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 要对url进行测试首先要对url的组成搞成明白，正所谓知己知彼方能百战不殆，废话少说，比如一下url <a href="http://www.javathinker.org/main.jsp?bc=showessay.jsp&amp;id=703">http://www.javathinker.org/main.jsp?bc=showessay.jsp&amp;id=703</a> <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前面部分我就不用多解释了，做web的银应该都知道其含义，我就说说?后面的部分，其实这部分是客户端向服务器请求的参数，一般get请求会将参数放在url中，这时我们就必须注意了，我们试图修改这些参数看能否从服务获得相应的内容，如果服务端没有做相应的处理，用户可能就会通过该方式获得一些其他用户的保密信息（这算是所谓的安全性测试吗？哈哈）；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.是否存在孤立的页面，这个测试可使用一些辅助的工具，比如：Link checker等；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.链接是否能到达指定的页面，这个测试属于最基本的测试，这个主要注意：点击链接在本页面打开，点击在新页面打开（比如页面主流程中的帮助链接，点击後就应该在新页面打开而不会影响当前的操作流程）；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.涉及到一些安全性选择的登录还要在url中校验http和https协议请求是否正常；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.涉及到埋点等功能的url测试，还要注意点击的方式，比如单击，右键打开，直接输入url等方式请求（有些js处理的时候可能仅仅调用onclick事件）<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6.错误url请求页面的出错页面校验，比如url参数错误是否会给用户一个比较友好的错误提示页面等。<br></p>
<img src ="http://www.cnitblog.com/windone0109/aggbug/36773.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2007-11-23 11:08 <a href="http://www.cnitblog.com/windone0109/archive/2007/11/23/36773.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web常用的功能性测试方法</title><link>http://www.cnitblog.com/windone0109/archive/2007/11/23/36772.html</link><dc:creator>windone</dc:creator><author>windone</author><pubDate>Fri, 23 Nov 2007 03:07:00 GMT</pubDate><guid>http://www.cnitblog.com/windone0109/archive/2007/11/23/36772.html</guid><wfw:comment>http://www.cnitblog.com/windone0109/comments/36772.html</wfw:comment><comments>http://www.cnitblog.com/windone0109/archive/2007/11/23/36772.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windone0109/comments/commentRss/36772.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windone0109/services/trackbacks/36772.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. 页面链接检查：每一个链接是否都有对应的页面，并且页面之间切换正确。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. 相关性检查：删除/增加一项会不会对其他项产生影响，如果产生影响，这些影响是否都正确。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. 检查按钮的功能是否正确：如update、cancel、delete、save等功能是否正确。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4. 字符串长度检查：输入超出需求所说明的字符串长度的内容，看系统是否检查字符串长度，会不会出错。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5. 字符类型检查：在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型)，看系统是否检查字符类型，会否报错。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6. 标点符号检查：输入内容包括各种标点符号，特别是空格、各种引号、回车键。看系统处理是否正确。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7. 中文字符处理：在可以输入中文的系统输入中文，看会否出现乱码或出错。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8. 检查带出信息的完整性：在查看信息和update信息时，查看所填写的信息是不是全部带出，带出信息和添加的是否一致。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9. 信息重复：在一些需要命名，且名字应该唯一的信息输入重复的名字或ID，看系统有没有处理，会否报错，重名包括是否区分大小写，以及在输入内容的前后输入空格，系统是否作出正确处理。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10. 检查删除功能：在一些可以一次删除多个信息的地方，不选择任何信息，按&#8221;delete&#8221;，看系统如何处理，会否出错;然后选择一个和多个信息，进行删除，看是否正确处理。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11. 检查添加和修改是否一致：检查添加和修改信息的要求是否一致，例如添加要求必填的项，修改也应该必填；添加规定为整型的项，修改也必须为整型。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12. 检查修改重名：修改时把不能重名的项改为已存在的内容，看会否处理，报错。同时，也要注意，会不会报和自己重名的错。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 13. 重复提交表单：一条已经成功提交的纪录，back后再提交，看看系统是否做了处理。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14. 检查多次使用back键的情况：在有back的地方，back，回到原来页面，再back，重复多次，看会否出错。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 15. search检查：在有search功能的地方输入系统存在和不存在的内容，看search结果是否正确。如果可以输入多个search条件，可以同时添加合理和不合理的条件，看系统处理是否正确。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16. 输入信息位置：注意在光标停留的地方输入信息时，光标和所输入的信息会否跳到别的地方。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 17. 上传下载文件检查：上传下载文件的功能是否实现，上传文件是否能打开。对上传文件的格式有何规定，系统是否有解释信息，并检查系统是否能够做到。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18. 必填项检查：应该填写的项没有填写时系统是否都做了处理，对必填项是否有提示信息，如在必填项前加*&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 19. 快捷键检查：是否支持常用快捷键，如Ctrl+C Ctrl+V Backspace等，对一些不允许输入信息的字段，如选人，选日期对快捷方式是否也做了限制。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20. 回车键检查：在输入结束后直接按回车键，看系统处理如何，会否报错。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;</p>
<img src ="http://www.cnitblog.com/windone0109/aggbug/36772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windone0109/" target="_blank">windone</a> 2007-11-23 11:07 <a href="http://www.cnitblog.com/windone0109/archive/2007/11/23/36772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>