??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AV午夜成人片,亚洲av第一网站久章草,麻豆亚洲AV永久无码精品久久http://www.tkk7.com/chunkyo/archive/2011/07/19/354578.htmlchunkyochunkyoTue, 19 Jul 2011 01:13:00 GMThttp://www.tkk7.com/chunkyo/archive/2011/07/19/354578.htmlhttp://www.tkk7.com/chunkyo/comments/354578.htmlhttp://www.tkk7.com/chunkyo/archive/2011/07/19/354578.html#Feedback0http://www.tkk7.com/chunkyo/comments/commentRss/354578.htmlhttp://www.tkk7.com/chunkyo/services/trackbacks/354578.html chm是微软的帮助文档Q许多程序的说明文档q有电子书都是用它制作的?br /> 我们下蝲一个chm文档后可能经怼有打不开的情况,而在其它的一些电脑上却能正常打开Q这说明不是文档本n的问题,而是pȝ讄的问题?

        其实q是Z安全而作的一U限Ӟ我们知道很多不安全的东西大多是通过|页传播的,|页里面可能含有各种脚本Q能执行很多功能,而chm文g本质上就是编 译过的网c从|上直接下蝲的网cchm文g和exeE序都会被系l标Cؓ来源于网l的Q是不安全的Q一般打开的时候都会出现警告,?#8220;打开此文件前?是询?#8221;前的钩去掉可以让它对该文件不再提C。然而有时候打开chm文g不会出现提示Q直接显C?#8220;该页无法昄”或?#8220;已取消到该网늚??#8221;“internet explorer 不能链接到您h的网?#8221;之类的错误,q该怎么办呢Q?br />         在chm文g上点右键->属?>常规->解除锁定Q这样就可以打开了?br /> 但是上述Ҏq不L有效的,也许有的版本的系l根本找不到“解除锁定”q个选项Q这时可以通过修改注册表解冻I以下内Ҏ开保存Cؓ后缀为reg的文件打开卛_
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\HHRestrictions]
"MaxAllowedZone"=dword:00000003
"UrlAllowList"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"MaxAllowedZone"=dword:00000003
"UrlAllowList"=""
     q是最有效的方法,对于各种pȝ均能用?br />       那么“MaxAllowedZone”的gؓ3是什么意思呢Q?br /> AllowedZone是允许的区域Q所有的区域包括以下几个Q?br /> 本地计算?internet 本地intranet 可信站点 受限站点

       我们可以在internet选项里面扑ֈ有后四个区域Q?br /> gؓ0表示本地计算机,?则表C前两个Qؓ2为前三个Qؓ3为前四个?br /> 所?MaxAllowedZone"=dword:00000003 的含义ؓ允许?本地计算机、internet、本地intranet、可信站?上打开该文件?br />           REGEDIT4是注册表~辑器的版本Qvista和windows 7里面为REGEDIT5,不过老的版本q是照样支持的?br /> 如果chm文档所在文件夹有特D符号也可能D打不开的,比如新徏一个文件夹Q名字ؓ“abc#”Q把chm文g放进d会打不开?/p>

         既然|络上的东西被认为是不安全的Q那么ؓ什么网上的|页里的脚本可以直接q行Q下载到本地保存再打开会有警告呢?

q是因ؓ我们览|页的时候网늚权限是比较低的,不能讉K本机上的数据{,而如果下载到本地再打开是以本地管理员的n份运行的Q可能对pȝ造成损害。但是其实这个限制说实话没什么用Qiel常有各U漏z木马可以借此q行Q本地的|页一般是安全的?/p>

              有时候下载的电子书是chm版的如果惛_手机或者mp4上看Q可以将它{换成txt的。chm是从|页~译q来的,当然q编译回去,然后再{成txt的,q样的工具很多,不过真正好用了不多?br /> 用HTML Help Workshop可以创徏chm文gQ用方法很单的?/p>来自Q?div>http://apps.hi.baidu.com/share/detail/33806176

chunkyo 2011-07-19 09:13 发表评论
]]>
生意人必ȝ道的B2B各大行业|站大全http://www.tkk7.com/chunkyo/archive/2010/03/16/315543.htmlchunkyochunkyoMon, 15 Mar 2010 23:50:00 GMThttp://www.tkk7.com/chunkyo/archive/2010/03/16/315543.htmlhttp://www.tkk7.com/chunkyo/comments/315543.htmlhttp://www.tkk7.com/chunkyo/archive/2010/03/16/315543.html#Feedback1http://www.tkk7.com/chunkyo/comments/commentRss/315543.htmlhttp://www.tkk7.com/chunkyo/services/trackbacks/315543.html阅读全文

chunkyo 2010-03-16 07:50 发表评论
]]>
修改grub使它默认q入字符界面Q即runlevel?http://www.tkk7.com/chunkyo/archive/2009/08/08/290388.htmlchunkyochunkyoSat, 08 Aug 2009 14:14:00 GMThttp://www.tkk7.com/chunkyo/archive/2009/08/08/290388.htmlhttp://www.tkk7.com/chunkyo/comments/290388.htmlhttp://www.tkk7.com/chunkyo/archive/2009/08/08/290388.html#Feedback0http://www.tkk7.com/chunkyo/comments/commentRss/290388.htmlhttp://www.tkk7.com/chunkyo/services/trackbacks/290388.html 把光标移到kernel那一行上Q再按e
在最后面加上一?Q敲回R认
按b启动?

chunkyo 2009-08-08 22:14 发表评论
]]>
推荐电媄——火U保?/title><link>http://www.tkk7.com/chunkyo/archive/2009/07/30/289175.html</link><dc:creator>chunkyo</dc:creator><author>chunkyo</author><pubDate>Thu, 30 Jul 2009 13:10:00 GMT</pubDate><guid>http://www.tkk7.com/chunkyo/archive/2009/07/30/289175.html</guid><wfw:comment>http://www.tkk7.com/chunkyo/comments/289175.html</wfw:comment><comments>http://www.tkk7.com/chunkyo/archive/2009/07/30/289175.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/chunkyo/comments/commentRss/289175.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/chunkyo/services/trackbacks/289175.html</trackback:ping><description><![CDATA[      动作场面l对火爆l典Q胡萝卜的杀伤力之强Qo目一斎ͼ剧情虽然比较老套<br /> <br />  Q基本上都是国式的个h英雄Q不Mw,技术绝Ҏ骨灰U别Q但是全从开始到l尾Q给人很强烈?br /> <br /> 视觉冲击Q动作行云流_不管是枪战,打斗q是车技Q绝对算得上一,再加上快速的节奏感,L女Q?br /> <br />  l对U的上是l典的暴力美学动作片Q赞一个!值得一看!<br /> <br /> <br /> <img src ="http://www.tkk7.com/chunkyo/aggbug/289175.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/chunkyo/" target="_blank">chunkyo</a> 2009-07-30 21:10 <a href="http://www.tkk7.com/chunkyo/archive/2009/07/30/289175.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript/Js脚本处理html元素的自定义属?兼容Firefox和IE)转蝲http://www.tkk7.com/chunkyo/archive/2009/06/24/283870.htmlchunkyochunkyoWed, 24 Jun 2009 01:24:00 GMThttp://www.tkk7.com/chunkyo/archive/2009/06/24/283870.htmlhttp://www.tkk7.com/chunkyo/comments/283870.htmlhttp://www.tkk7.com/chunkyo/archive/2009/06/24/283870.html#Feedback0http://www.tkk7.com/chunkyo/comments/commentRss/283870.htmlhttp://www.tkk7.com/chunkyo/services/trackbacks/283870.htmlHTML元素Q属性已l十分丰富了。但是,在某些场合下Q也会显得捉襟见肘,q时?strong>自定义属?/strong>发挥了十分关键的作用?/p>

Html元素的自定义属性,使用hQ十分方便,例如Q?/p>

<input type=”button” value=”Click Me, Baby!” />

假设我们现在需要限Ӟq个按钮Q只能点?ơ,然后失效了?/strong>

 

通常的实现方式,是可?em>利用全局变量的Ş?/strong>来记录点L敎ͼ但我们这里用自定义属?/strong>来实现这个功能,展示一下自定义属性的优势Q我们对上面的button做一下改造:

<input type=”button” value=”Click Me, Baby!” clickCount=”0” />

可以看到Q我个button 增加了一个自定义属?clickCountQ?q将初始D?0Q下面我们来写实现功能的js代码Q?/p>

1. l?button 增加click事g的处?/p>

<input type=”button” value=”Click Me, Baby!” clickCount=”0”  onclick=”customAttributeDemo(this);" />

2. 我们来写 customAttributeDemo(obj) q个函数

 

对于IE来讲Q用自定义属性非常简单,因ؓIE自动自定义属性解析到了DOM中,和标准属性没有Q何区别,IE下的版本Q?/p>

function customAttributeDemo(obj)
{
if (obj.clickCount === '0')
{
obj.clickCount = '1';
}
else
{
obj.disabled = true;
}
}

上面的代码在 FireFox 下将失效Q因为FireFox对自定义属性的使用Q限制更高,只能使用 attributes[] 集合来访问,FireFox 下的代码Q?/p>

function customAttributeDemo(obj)
{
if (obj.attributes['clickCount'].nodeValue === '0')
{
obj.attributes['clickCount'].nodeValue = '1';
}
else
{
obj.disabled = true;
}
}

上面的代码,也适用于IEQ所以,q个代码Q就是具有兼Ҏ的代码了,嘿嘿

 

感谢秦|友的交,他给Z getAttribute ?setAttribute 的方法:

function customAttributeDemo(obj)
{
if (obj.getAttribute('clickCount') === '0')
obj.setAttribute('clickCount', '1');
else
obj.disabled = true;
}



chunkyo 2009-06-24 09:24 发表评论
]]>
Java Annotation详解http://www.tkk7.com/chunkyo/archive/2009/06/19/283179.htmlchunkyochunkyoFri, 19 Jun 2009 02:30:00 GMThttp://www.tkk7.com/chunkyo/archive/2009/06/19/283179.htmlhttp://www.tkk7.com/chunkyo/comments/283179.htmlhttp://www.tkk7.com/chunkyo/archive/2009/06/19/283179.html#Feedback0http://www.tkk7.com/chunkyo/comments/commentRss/283179.htmlhttp://www.tkk7.com/chunkyo/services/trackbacks/283179.html元数据的作用

如果要对于元数据的作用进行分c,目前q没有明的定义Q不q我们可以根据它所L作用Q大致可分ؓ三类Q?span>

l         ~写文档Q通过代码里标识的元数据生成文档?span>

l         代码分析Q通过代码里标识的元数据对代码q行分析?span>

l         ~译查:通过代码里标识的元数据让~译器能实现基本的编译检查?span>

 

基本内置注释

    @Override注释能实现编译时查,你可以ؓ你的Ҏd该注释,以声明该Ҏ是用于覆盖父cM的方法。如果该Ҏ不是覆盖父类的方法,会在编译时报错。例如我们ؓ某类重写toString()Ҏ却写成了tostring()Qƈ且我们ؓ该方法添加了@Override注释Q?

     @Deprecated的作用是对不应该在用的Ҏd注释Q当~程人员使用q些ҎӞ会在编译时昄提示信息Q它与javadoc里的@deprecated标记有相同的功能Q准的_它还不如javadoc @deprecatedQ因为它不支持参敎ͼ

注意Q要了解详细信息Q请使用 -Xlint:deprecation 重新~译?span>

    @SuppressWarnings与前两个注释有所不同Q你需要添加一个参数才能正用,q些参数值都是已l定义好了的Q我们选择性的使用好了,参数如下Q?span>

deprecation   使用了过时的cLҎ时的警告

unchecked 执行了未查的转换时的警告Q例如当使用集合时没有用泛型 (Generics) 来指定集合保存的cd

fallthrough   ?span> Switch E序块直接通往下一U情况而没?Break 时的警告

path   在类路径、源文g路径{中有不存在的\径时的警?/p>

serial当在可序列化的类上缺?span> serialVersionUID 定义时的警告

finally    M finally 子句不能正常完成时的警告

all关于以上所有情늚警告

注意Q要了解详细信息Q请使用 -Xlint:unchecked 重新~译?span>

 

定制注释cd

    好的Q让我们创徏一个自q注释cdQannotation typeQ吧。它cM于新创徏一个接口类文gQ但Z区分Q我们需要将它声明ؓ@interface,如下例:

public @interface NewAnnotation {

 

}

 

使用定制的注释类?/strong>

    我们已经成功地创建好一个注释类型NewAnnotationQ现在让我们来尝试用它吧,如果你还记得本文的第一部分Q那你应该知道他是一个标记注释,使用也很ҎQ如下例Q?span>

public class AnnotationTest {

 

    @NewAnnotation

    public static void main(String[] args) {

   

    }

}

 

d变量

    J2SE 5.0里,我们了解到内|注释@SuppressWarnings()是可以用参数的Q那么自定义注释能不能定义参C数和cd呢?{案是当然可以,但参数类型只允许为基本类型、String、Class、枚丄型等Qƈ且参C能ؓI。我们来扩展NewAnnotationQؓ之添加一个Stringcd的参敎ͼCZ代码如下Q?span>

public @interface NewAnnotation {

 

    String value();

}

    使用该注释的代码如下Q正如你所看到的,该注释的使用有两U写法,q也是在之前的文章里所提到q的。如果你忘了q是怎么回事Q那再ȝd?span>

public class AnnotationTest {

 

    @NewAnnotation("Just a Test.")

    public static void main(String[] args) {

        sayHello();

    }

   

    @NewAnnotation(value="Hello NUMEN.")

    public static void sayHello() {

        // do something

    }

}

 

为变量赋默认?/strong>

    我们对Java自定义注释的了解正在不断的增多,不过我们q需要更q,在该条目里我们将了解到如何ؓ变量讄默认|我们再对NewAnnotaionq行修改Q看看它会变成什么样子,不仅参数多了几个Q连cd也变了。但q是很容易理解的Q我们先定义一个枚丄型,然后参数设|ؓ该枚丄型,q赋予默认倹{?span>

public @interface Greeting {

 

    public enum FontColor {RED, GREEN, BLUE};

 

    String name();

 

    String content();

   

    FontColor fontColor() default FontColor.BLUE;

}

 

限定注释使用范围

    当我们的自定义注释不断的增多也比较复杂时Q就会导致有些开发h员用错误,主要表现在不该用该注释的地方用。ؓ此,Java提供了一个ElementType枚Dcd来控制每个注释的使用范围Q比如说某些注释只能用于普通方法,而不能用于构造函数等。下面是Java定义的ElementType枚DQ?span>

package java.lang.annotation;

 

public enum ElementType {

  TYPE,         // Class, interface, or enum (but not annotation)

  FIELD,        // Field (including enumerated values)

  METHOD,       // Method (does not include constructors)

  PARAMETER,        // Method parameter

  CONSTRUCTOR,      // Constructor

  LOCAL_VARIABLE,   // Local variable or catch clause

  ANNOTATION_TYPE,  // Annotation Types (meta-annotations)

  PACKAGE       // Java package

}

    下面我们来修改Greeting注释Qؓ之添加限定范围的语句Q这里我们称它ؓ目标QTargetQ用方法也很简单,如下Q?span>

@Target( { ElementType.METHOD, ElementType.CONSTRUCTOR })

public @interface Greeting {

}

正如上面代码所展示的,我们只允许Greeting注释标注在普通方法和构造函CQ用在包申明、类名等Ӟ会提C错误信息?span>

 

注释保持性策?/strong>

public enum RetentionPolicy {

  SOURCE,// Annotation is discarded by the compiler

  CLASS,// Annotation is stored in the class file, but ignored by the VM

  RUNTIME// Annotation is stored in the class file and read by the VM

}

    RetentionPolicy的用方法与ElementTypecMQ?span style="color: black">单代码示例如下:

@Retention(RetentionPolicy.RUNTIME)

@Target( { ElementType.METHOD, ElementType.CONSTRUCTOR })

文档化功?/strong>

    Java提供的Documented元注释跟Javadoc的作用是差不多的Q其实它存在的好处是开发h员可以定制Javadoc不支持的文档属性,q在开发中应用。它的用跟前两个也是一LQ简单代码示例如下:

@Documented

@Retention(RetentionPolicy.RUNTIME)

@Target( { ElementType.METHOD, ElementType.CONSTRUCTOR })

public @interface Greeting {

}

 

值得大家注意的是Q如果你要用@Documented元注释,你就得ؓ该注释设|RetentionPolicy.RUNTIME保持性策略?br />
后箋补充?...



chunkyo 2009-06-19 10:30 发表评论
]]>
HTML父窗体和子窗体之间数据的传?/title><link>http://www.tkk7.com/chunkyo/archive/2009/05/20/271817.html</link><dc:creator>chunkyo</dc:creator><author>chunkyo</author><pubDate>Wed, 20 May 2009 14:49:00 GMT</pubDate><guid>http://www.tkk7.com/chunkyo/archive/2009/05/20/271817.html</guid><wfw:comment>http://www.tkk7.com/chunkyo/comments/271817.html</wfw:comment><comments>http://www.tkk7.com/chunkyo/archive/2009/05/20/271817.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/chunkyo/comments/commentRss/271817.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/chunkyo/services/trackbacks/271817.html</trackback:ping><description><![CDATA[       最q项目涉及到在弹出窗口编辑数?然后q回到父H口,q在父窗口打开也能把数据初始化到子H口中的功能;<br />        下面是涉及到的关键代?记录下来以后可以? <br />        HTML父窗体和子窗体之间数据的传?<br />         1. 父窗体father.html<br />         <script><br />         function openChild()<br />         {<br />              var o=; //获取父窗体的lg<br />              var win=window.open(child.html);<br />              win.father_obj=o;//传给子窗口的对象<br />         }<br />         function getChildData(obj){<br />            <br />         }<br />         </script><br />         2. 子窗口child.html<br />         <script><br />         function getFatherData()<br />         {<br />              var data=window.father_obj;<br />         }<br />         function sendFatherData()<br />         {<br />               var obj=....;//获取子窗口对?nbsp;<br />               opener. getChildData(obj);//调用父窗口的函数q行传?<br />          }<br />         </script><br /> <br />         over.... <img src ="http://www.tkk7.com/chunkyo/aggbug/271817.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/chunkyo/" target="_blank">chunkyo</a> 2009-05-20 22:49 <a href="http://www.tkk7.com/chunkyo/archive/2009/05/20/271817.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle存储q程学习http://www.tkk7.com/chunkyo/archive/2009/05/18/271407.htmlchunkyochunkyoMon, 18 May 2009 14:14:00 GMThttp://www.tkk7.com/chunkyo/archive/2009/05/18/271407.htmlhttp://www.tkk7.com/chunkyo/comments/271407.htmlhttp://www.tkk7.com/chunkyo/archive/2009/05/18/271407.html#Feedback0http://www.tkk7.com/chunkyo/comments/commentRss/271407.htmlhttp://www.tkk7.com/chunkyo/services/trackbacks/271407.html存储q程创徏语法Q?/p>

       create or replace procedure 存储q程名(param1 in typeQparam2 out typeQ?

as

变量1 cdQD_;

变量2 cdQD_;

Begin

    Select count(*) into 变量1 from 表A where列名=param1Q?/p>

    If (判断条g) then

       Select 列名 into 变量2 from 表A where列名=param1Q?/p>

       Dbms_output。Put_line(‘打印信息’);

    Elsif (判断条g) then

       Dbms_output。Put_line(‘打印信息’);

    Else

       Raise 异常名(NO_DATA_FOUNDQ?

    End if;

Exception

    When others then

       Rollback;

End;

 

注意事项Q?/p>

1Q?nbsp; 存储q程参数不带取D_in表示传入Qout表示输出

2Q?nbsp; 变量带取D_后面接分?/p>

3Q?nbsp; 在判断语句前最好先用countQ?Q函数判断是否存在该条操作记?/p>

4Q?nbsp; 用select 。。。into。。。给变量赋?/p>

5Q?nbsp; 在代码中抛异常用 raise+异常?/p>

 

 

以命名的异常

命名的系l异?                         产生原因

ACCESS_INTO_NULL                   未定义对?

CASE_NOT_FOUND                     CASE 中若未包含相应的 WHEN Qƈ且没有设|?

ELSE ?

COLLECTION_IS_NULL                集合元素未初始化

CURSER_ALREADY_OPEN          游标已经打开

DUP_VAL_ON_INDEX                   唯一索引对应的列上有重复的?

INVALID_CURSOR                 在不合法的游标上q行操作

INVALID_NUMBER                       内嵌?SQL 语句不能字W{换ؓ数字

NO_DATA_FOUND                        使用 select into 未返回行Q或应用索引表未初始化的 

 

TOO_MANY_ROWS                      执行 select into Ӟl果集超q一?

ZERO_DIVIDE                              除数?0

SUBSCRIPT_BEYOND_COUNT     元素下标过嵌套表或 VARRAY 的最大?

SUBSCRIPT_OUTSIDE_LIMIT       使用嵌套表或 VARRAY Ӟ下标指定ؓ负数

VALUE_ERROR                             赋值时Q变量长度不以容纳实际数据

LOGIN_DENIED                           PL/SQL 应用E序q接?oracle 数据库时Q提供了?/p>

正确的用户名或密?

NOT_LOGGED_ON                       PL/SQL 应用E序在没有连?oralce 数据库的情况?/p>

讉K数据

PROGRAM_ERROR                       PL/SQL 内部问题Q可能需要重装数据字典& pl./SQL

pȝ?

ROWTYPE_MISMATCH                宿主游标变量?PL/SQL 游标变量的返回类型不兼容

SELF_IS_NULL                             使用对象cdӞ?null 对象上调用对象方?

STORAGE_ERROR                        q行 PL/SQL Ӟ出内存I间

SYS_INVALID_ID                         无效?ROWID 字符?

TIMEOUT_ON_RESOURCE         Oracle 在等待资源时时 



chunkyo 2009-05-18 22:14 发表评论
]]>
|站试中需要测试的三个斚whttp://www.tkk7.com/chunkyo/archive/2009/05/12/270196.htmlchunkyochunkyoTue, 12 May 2009 06:28:00 GMThttp://www.tkk7.com/chunkyo/archive/2009/05/12/270196.htmlhttp://www.tkk7.com/chunkyo/comments/270196.htmlhttp://www.tkk7.com/chunkyo/archive/2009/05/12/270196.html#Feedback0http://www.tkk7.com/chunkyo/comments/commentRss/270196.htmlhttp://www.tkk7.com/chunkyo/services/trackbacks/270196.html1.功能试

对于|站?a >试而言Q每一个独立的功能模块需要单独的试用例的设计导出,主要依据为《需求规D明书》及《详l设计说明书》,对于应用E序模块需要设计者提供基本\径测试法的测试用例?/p>

链接试

链接是Web应用pȝ的一个主要特征,它是在页面之间切换和指导用户M些不知道地址的页面的主要手段。链接测试可分ؓ三个斚wQ?/p>

1Q测试所有链接是否按指示的那L实链接到了该链接的页面;

2Q测试所链接的页面是否存在;

3Q保证Web应用pȝ上没有孤立的面Q所谓孤立页面是指没有链接指向该面Q只有知道正的URL地址才能讉K?/p>

链接试可以自动q行Q现在已l有许多工具可以采用。链接测试必d集成试阶段完成Q也是_在整个Web应用pȝ的所有页面开发完成之后进行链接测试?/p>

Xenu------主要试链接的正性的工具

可惜的是对于动态生成的面的测试会出现一些错误?/p>

表单试

当用LWeb应用pȝ理员提交信息时Q就需要用表单操作,例如用户注册、登陆、信息提交等。在q种情况下,我们必须试提交操作的完整性,以校验提交给服务器的信息的正性。例如:用户填写的出生日期与职业是否恰当Q填写的所属省份与所在城市是否匹配等。如果用了默认|q要验默认值的正确性。如果表单只能接受指定的某些|则也要进行测试。例如:只能接受某些字符Q测试时可以跌q些字符Q看pȝ是否会报错?/p>

要测试这些程序,需要验证服务器能正保存这些数据,而且后台q行的程序能正确解释和用这些信息?/p>

B/Sl构实现的功能可能主要的在q里Q提交数据,处理数据{如果有固定的操作流E可以考虑自动化测试工L录制功能Q编写可重复使用的脚本代码,可以在测试、回归测试时q行以便减轻试人员工作量?/p>

我们对UM子系l中各个功能模块中的各项功能q行逐一的测试,主要试Ҏ为:边界值测试、等L试Q以及异常类试。测试中要保证每U类型都?个以上的典型数值的输入Q以保试输入的全面性?/p>

Cookies试

Cookies通常用来存储用户信息和用户在某应用系l的操作Q当一个用户用Cookies讉K了某一个应用系l时QWeb服务器将发送关于用L信息Q把该信息以Cookies的Ş式存储在客户端计机上,q可用来创徏动态和自定义页面或者存储登陆等信息?/p>

如果Web应用pȝ使用了CookiesQ就必须查Cookies是否能正常工作而且对这些信息已l加密。测试的内容可包括Cookies是否起作用,是否按预定的旉q行保存Q刷新对Cookies有什么媄响等?/p>

设计语言试

Web设计语言版本的差异可以引起客L或服务器端严重的问题Q例如用哪U版本的HTML{。当在分布式环境中开发时Q开发h员都不在一Pq个问题显得尤为重要。除了HTML的版本问题外Q不同的脚本语言Q例如Java、JavaScript?ActiveX、VBScript或Perl{也要进行验证?/p>

数据库测?/strong>

在Web应用技术中Q数据库L重要的作用,数据库ؓWeb应用pȝ的管理、运行、查询和实现用户Ҏ据存储的h{提供空间。在Web应用中,最常用的数据库cd是关pd数据库,可以使用SQL对信息进行处理?/p>

在用了数据库的Web应用pȝ中,一般情况下Q可能发生两U错误,分别是数据一致性错误和输出错误。数据一致性错误主要是׃用户提交的表单信息不正确而造成的,而输出错误主要是׃|络速度或程序设计问题等引v的,针对q两U情况,可分别进行测试?/p>

功能试用到的测试工hQ黑盒自动化试工具AutoRunnerQ?a >试理工具TestCenter?br />

2 性能试

|站的性能试对于|站的运行而言异常重要Q但是目前对于网站的性能试做的不够Q我们在q行pȝ设计时也没有一个很好的基准可以参考,因而徏立网站的性能试的一整套的测试方案将是至关重要的?/p>

|站的性能试主要从三个方面进行:q接速度试、负h试(LoadQ和压力试QStressQ?q接速度试指的是打开|页的响应速度试。负h试指的是q行一些边界数据的试Q压力测试更像是恶意试Q压力测试們֐应该是致使整个系l崩溃?/p>

q接速度试

用户q接到Web应用pȝ的速度Ҏ上网方式的变化而变化,他们或许是电话拨P或是宽带上网。当下蝲一个程序时Q用户可以等较长的时_但如果仅仅访问一个页面就不会q样。如果Webpȝ响应旉太长Q例如超q?U钟Q,用户׃因没有耐心{待而离开?/p>

另外Q有些页面有时的限Ӟ如果响应速度太慢Q用户可能还没来得及览内容Q就需要重新登陆了。而且Q连接速度太慢Q还可能引v数据丢失Q用户得不到真实的面?/p>

负蝲试

负蝲试是ؓ了测量Webpȝ在某一负蝲U别上的性能Q以保证Webpȝ在需求范围内能正常工作。负载别可以是某个时刻同时讉KWebpȝ的用h量,也可以是在线数据处理的数量。例如:Web应用pȝ能允许多个用户同时在线Q如果超q了q个数量Q会出现什么现象?Web应用pȝ能否处理大量用户对同一个页面的hQ?/p>

压力试

负蝲试应该安排在Webpȝ发布以后Q在实际的网l环境中q行试。因Z个企业内部员工,特别是项目组人员L有限的,而一个Webpȝ能同时处理的h数量远q超个限度,所以,只有攑֜Internet上,接受负蝲试Q其l果才是正确可信的?/p>

q行压力试是指实际破坏一个Web应用pȝQ测试系l的反映。压力测试是试pȝ的限制和故障恢复能力Q也是试Web应用pȝ会不会崩溃,在什么情况下会崩溃。黑客常常提供错误的数据负蝲Q直到Web应用pȝ崩溃Q接着当系l重新启动时获得存取权?/p>

压力试的区域包括表单、登陆和其他信息传输面{?/p>

采用的测试工P

性能试可以采用相应的工兯?a >自动化测?/a>Q我们目前采用如下工?/p>

ab -----Apache 的测试工?/p>

OpenSTA—开发系l测试架?/p>

3 接口试

在很多情况下Qweb 站点不是孤立。Web 站点可能会与外部服务器通讯Q请求数据、验证数据或提交订单?/p>

服务器接?/strong>

W一个需要测试的接口是浏览器与服务器的接口。测试h员提交事务,然后查看服务器记录,q证在览器上看到的正好是服务器上发生的。测试h员还可以查询数据库,认事务数据已正保存?/p>

外部接口

有些 web pȝ有外部接口。例如,|上商店可能要实旉证信用卡数据以减欺诈行为的发生。测试的时候,要?web 接口发送一些事务数据,分别Ҏ效信用卡、无效信用卡和被盗信用卡q行验证。如果商店只使用 Visa 卡和 Mastercard 卡, 可以试使用 Discover 卡的数据。(单的客户端脚本能够在提交事务之前对代码进行识别,例如 3 表示 American ExpressQ? 表示 VisaQ? 表示 MastercardQ? 代表Discover。)通常Q测试h员需要确认Y件能够处理外部服务器q回的所有可能的消息?/p>

错误处理

最Ҏ被测试h员忽略的地方是接口错误处理。通常我们试图认pȝ能够处理所有错误,但却无法预期pȝ所有可能的错误。尝试在处理q程中中断事务,看看会发生什么情况?订单是否完成Q尝试中断用户到服务器的|络q接。尝试中?web 服务器到信用卡验证服务器的连接。在q些情况下,pȝ能否正确处理q些错误Q是否已对信用卡q行收费Q如果用戯׃断事务处理,在订单已保存而用h有返回网站确认的时候,需要由客户代表致电用户q行订单认?/p>

chunkyo 2009-05-12 14:28 发表评论
]]>
Interface Segregation Principle (ISP) - OO设计的接口分隔原?--c设计原?/title><link>http://www.tkk7.com/chunkyo/archive/2009/03/28/262597.html</link><dc:creator>chunkyo</dc:creator><author>chunkyo</author><pubDate>Sat, 28 Mar 2009 06:17:00 GMT</pubDate><guid>http://www.tkk7.com/chunkyo/archive/2009/03/28/262597.html</guid><wfw:comment>http://www.tkk7.com/chunkyo/comments/262597.html</wfw:comment><comments>http://www.tkk7.com/chunkyo/archive/2009/03/28/262597.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/chunkyo/comments/commentRss/262597.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/chunkyo/services/trackbacks/262597.html</trackback:ping><description><![CDATA[     摘要: Clients should not be forced to depend upon interfaces that they do not use. <br>不能用户M赖那些他们不使用的接口。换句话_使用多个专门的接口比使用单一的L口总要好?<br>它包含了2层意思: <br>- 接口的设计原则:接口的设计应该遵循最接口原则,不要把用户不使用的方法塞q同一个接口里?<br> 如果一个接口的Ҏ没有被用到Q则说明该接口过胖,应该其分割成几个功能专一的接口?<br>- 接口的依赖(l承Q原则:如果一个接口a依赖Q承)另一个接口bQ则接口a相当于承了接口b的方法,那么l承了接口b后的接口a也应该遵循上q原则:不应该包含用户不使用的方法?<br> 反之Q则说明接口a被bl污染了Q应该重新设计它们的关系?<br>  <a href='http://www.tkk7.com/chunkyo/archive/2009/03/28/262597.html'>阅读全文</a><img src ="http://www.tkk7.com/chunkyo/aggbug/262597.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/chunkyo/" target="_blank">chunkyo</a> 2009-03-28 14:17 <a href="http://www.tkk7.com/chunkyo/archive/2009/03/28/262597.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://wwwkk5679.com" target="_blank">avr</a>| <a href="http://www-774220.com" target="_blank">椸Ƶۿ</a>| <a href="http://an930.com" target="_blank">޾ƷӰԺ</a>| <a href="http://twtairun.com" target="_blank">AVվ</a>| <a href="http://hljjlhl.com" target="_blank">Ů18ëƬѹۿ</a>| <a href="http://773311h.com" target="_blank">˳ŷĻ</a>| <a href="http://222xx8.com" target="_blank">ëƬaëƬѹۿƷ</a>| <a href="http://yuejiju.com" target="_blank">һ245699</a>| <a href="http://hwjyrck.com" target="_blank">Ʒžѹۿ</a>| <a href="http://www2019rz.com" target="_blank">avרۿƷ </a>| <a href="http://shenghe228.com" target="_blank">츾һ</a>| <a href="http://440878.com" target="_blank">޸Ļ</a>| <a href="http://717795.com" target="_blank">ۺavһ</a>| <a href="http://4388x4.com" target="_blank">պƵһ</a>| <a href="http://zwdyw.com" target="_blank">ɫƵ15</a>| <a href="http://tc116.com" target="_blank">þü޾Ʒ?V</a>| <a href="http://zz1220.com" target="_blank">AƬ߹ۿ</a>| <a href="http://yimintech.com" target="_blank">ҹþӰԺ</a>| <a href="http://cdlsy.com" target="_blank">ŷaվ</a>| <a href="http://kypbuy.com" target="_blank">AV˾Ʒպ</a>| <a href="http://kypbuy.com" target="_blank">ĻͼƬ</a>| <a href="http://gg596gg.com" target="_blank">99ƵƵۿ</a>| <a href="http://szqsnt.com" target="_blank">avҹƷר</a>| <a href="http://ri9999.com" target="_blank">һƵ</a>| <a href="http://727744.com" target="_blank">߻ɫӰ</a>| <a href="http://lh726.com" target="_blank">ĻþþƷ</a>| <a href="http://dw168cn.com" target="_blank">͵ۺ</a>| <a href="http://857434.com" target="_blank">91ɫۺϾþ</a>| <a href="http://717795.com" target="_blank">avҹӰ߹ۿ </a>| <a href="http://a666999.com" target="_blank">ѹۿ</a>| <a href="http://hqwgg.com" target="_blank">պAVһ</a>| <a href="http://xjyzz.com" target="_blank">þþƷAV鶹</a>| <a href="http://ziguang1688.com" target="_blank">AëƬѹۿAVվ</a>| <a href="http://zf91.com" target="_blank">һAVѲ </a>| <a href="http://a8g8.com" target="_blank">˾Ʒ2020</a>| <a href="http://xiaochidaquan.com" target="_blank">131ŮƵ</a>| <a href="http://shandonghj.com" target="_blank">þѾƷһ</a>| <a href="http://lh726.com" target="_blank">ŷպĻһ</a>| <a href="http://222222se.com" target="_blank">һƷ</a>| <a href="http://k8h9.com" target="_blank">18ɽƵվ</a>| <a href="http://959901cc.com" target="_blank">˳ֻˬƵߵӰ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>