发布新日志

  • 自动化测试和手工测试的关系【转自——柳胜的框架设计与实践】

    fwq1991 发布于 2012-07-15 14:34:19

        在PEARL的Purpose阶段,建议可选20%的核心案例来做自动化测试实施,
    其余80%的测试案例依然采用手工的方式来进行,因为这样能获得自动化测试的
    最大成本收益比。
        那么可能会问了:这20%的自动化测试案例是针对软件项目的核心功能,核
    心功能开发稳定下来得早,而且又经过多轮测试,所以这部分的功能测试很少有
    机会发现新的Bug,那我们做自动化测试既然发现不了Bug,那么它的意义在哪儿
    里呢?
        答案就是.事实的确如此。
        (1)没错,这部分的自动化测试确实很难发现Bug。
        (2)但是,在这儿的20%的自动化测试方案中,自动化测试的目的并不是为
    了发现Bug,而是为了确保这20%的哈心功能没有Bug
        自动化测试的目的是为了保证场频的稳定性,而手工测试则咋子产品稳定性
    满足的基础上,负责验证容错性,安全性等非核心功能,两者各司其职,互补长短。
        的确,在转到自动化测试的接一阶段,心中总有点惶恐,别人功能测试2,3年了
    还做功能测试,我刚毕业已经在做自动化测试了,虽然是经理给我的这个机会,可是
    内心还是有点惴惴。特别感觉每天的下单脚本跑下来,没发现多少问题,心中不安更甚。
    直到,柳胜的这段话,为我开解了心中的疑惑,的确,很多自动化测试并不是为了发
    现Bug,而是为了保证那20%的核心业务功能准确无误,Daily Run的意义也就是在此了。
    这也更加坚定了继续前行的动力,好好做,别辜负经理的一番期望。
  • 控件测试(转)

    mklodoss 发布于 2009-11-24 15:10:32

    文本框、按钮等控件测试

    1.1.1 文本框的测试

    如何对文本框进行测试
     a,输入正常的字母或数字。
     b,输入已存在的文件的名称;
     c,输入超长字符。例如在“名称”框中输入超过允许边界个数的字符,假设最多255个字符,尝试输入 256个字符,检查程序能否正确处理;
     d,输入默认值,空白,空格;
     e,若只允许输入字母,尝试输入数字;反之;尝试输入字母;
     f,利用复制,粘贴等操作强制输入程序不允许的输入数据;
     g,输入特殊字符集,例如,NUL及\n等;
     h,输入超过文本框长度的字符或文本,检查所输入的内容是否正常显示;
     i,输入不符合格式的数据,检查程序是否正常校验,如,程序要求输入年月日格式为yy/mm/dd,实际输入yyyy/mm/dd,程序应该给出错误提示

    在测试过程中所用到的测试方法

     1,输入非法数据;
     2,输入默认值;
     3,输入特殊字符集;
     4,输入使缓冲区溢出的数据;
     5,输入相同的文件名;

    命令按钮控件的测试

    测试方法:

     a,点击按钮正确响应操作。如,单击确定,正确执行操作;单击取消,退出窗口;                   b,对非法的输入或操作给出足够的提示说明,如,输入月工作天数为32时,单击”确定“后系统应提示:天数不能大于31;
     c,对可能造成数据无法恢复的操作必须给出确认信息,给用户放弃选择的机会;

    单选按钮控件的测试

    测试方法:

    vD#[G] I?zXDG257506 a,一组单选按钮不能同时选中,只能选中一个。
    [N{;wm5P257506 b,逐一执行每个单选按钮的功能。分别选择了“男”“女”后,保存到数据库的数据应该相应的分别为“男”“女”;

     c,一组执行同一功能的单选按钮在初始状态时必须有一个被默认选中,不能同时为空;

    up-down控件文本框的测试

    测试方法:

     a,直接输入数字或用上下箭头控制,如,在“数目”中直接输入10,或者单击向上的箭头,使数目变为10;


     b,利用上下箭头控制数字的自动循环,如,当最多数字为253时,单击向上箭头,数目自动变为1;反之亦适用;
     c,直接输入超边界值,系统应该提示重新输入; 

    d,输入默认值,空白。如,“插入”数目为默认值,点击“确定”;或,删除默认值,使内容为空,单击“确定”进行测试; 

    e,输入字符。此时系统应提示输入有误。

    组合列表框的测试

    测试方法:

     a,条目内容正确,其详细条目内容可以根据需求说明确定;
     b,逐一执行列表框中每个条目的功能;
     c,检查能否向组合列表框输入数据;

    复选框的测试

    测试方法:

     a,多个复选框可以被同时选中;
     b,多个复选框可以被部分选中;
     c,多个复选框可以都不被选中;
     d,逐一执行每个复选框的功能;

    列表框控件的测试

    测试方法:

     a,条目内容正确;同组合列表框类似,根据需求说明书确定列表的各项内容正确,没有丢失或错误;      b,列表框的内容较多时要使用滚动条;
     c,列表框允许多选时,要分别检查shift选中条目,按ctrl选中条目和直接用鼠标选中多项条目的情况;

    滚动条控件的测试

    要注意一下几点:

     a,滚动条的长度根据显示信息的长度或宽度及时变换,这样有利于用户了解显示信息的位置和百分比,如,word中浏览100页文档,浏览到50页时,滚动条位置应处于中间;
     b,拖动滚动条,检查屏幕刷新情况,并查看是否有乱码;
     c,单击滚动条; 
    d,用滚轮控制滚动条;
     e,滚动条的上下按钮。

    各种控件在窗体中混和使用时的测试

     a,控件间的相互作用;
     b,tab键的顺序,一般是从上到下,从左到右;
     c,热键的使用,逐一测试;
     d,enter键和esc键的使用;

    在测试中,应遵循由简入繁的原则,先进行单个控件功能的测试,确保实现无误后,再进行多个控件的的功能组合的测试。

    ps:密码输入框测试时要特别注意进行字母大写输入的测试。

    查找替换操作
     案例演示:打开word中的"替换"对话框
     测试本功能有通过测试和失败测试两种情况
     通过测试:
     1,输入内容直接查找,或查找全部

     2,在组合框中寻找已经查找过的内容,再次查找并确认文档的内容正确,如,已经查找过"测试用例",再次进入不用重新输入查找内容,直接在文档中搜寻就可以.

    失败测试:
     1,输入过长或过短的查询字符串.如,假设查询的字符串长度为1到255,那么输入0,1,2,256,255和254进行测试;
     2,输入特殊字符集,如,在word中.^g代表图片,^代表分栏符,可以输入这类特殊字符测试;

    替换测试大体相同.
     关于编辑操作窗口的功能测试的用例:
     1,关闭查找替换窗口.不执行任何操作,直接退出;
     2,附件和选项测试.假如,设定"精确搜寻","向后"搜索等附件选项等等来测试;
     3,控件间的相互作用.如,搜寻内容为空时,按钮"搜寻全部","搜寻","全部替换","替换"都为灰色.
     4,热键, Tab键.回车键的使用.

    插入操作
     1,插入文件
     测试的情况
     a,插入文件;
     b,插入图像;

     c,在文档中插入文档本身;

     d,移除插入的源文件;

     e,更换插入的源文件的内容;

    2,链接文件
     测试方法:

     a,插入链接文件;
     b,在文档中链接文档本身;
     c,移除插入的源文件;
     d,更换插入的源文件的内容.

    3,插入对象
    iP,A1eS|w(G0E257506 要测试的内容
     a,插入程序允许的对象,如,在word中插入excel工作表;

     b,修改所插入对象的内容.插入的对象仍能正确显示;
     c,卸载生成插入对象的程序,如,在word中插入excel工作表后卸载excel,工作表仍正常使用.

    编辑操作51Testing软件测试网9Rb3Hx0M
     编辑操作包括剪切,复制,粘贴操作.

    测试剪切操作的方法

    a,对文本,文本框,图文框进行剪切;
     b,剪切图像
     c,文本图像混合剪切
     复制操作方法与剪切类似.

    测试时,主要是对粘贴操作的测试,方法是:
     a,粘贴剪切的文本,文本框及图文框;
     b,粘贴所剪切的图像;
     c,剪切后,在不同的程序中粘贴
     d,多次粘贴同一内容,如,剪切后,在程序中连续粘贴3次;
     e,利用粘贴操作强制输入程序所不允许输入的数据.

    界面测试用例的设计方法
     1,窗体
     测试窗体的方法:
     a,窗体大小,大小要合适,控件布局合理;
     b,移动窗体.快速或慢速移动窗体,背景及窗体本身刷新必须正确;
     c,缩放窗体,窗体上的控件应随窗体的大小变化而变化;

     d,显示分辨率.必须在不同的分辨率的情况下测试程序的显示是否正常;
     进行测试时还要注意状态栏是否显示正确;工具栏的图标执行操作是否有效,是否与菜单懒中图标显示一致;错误信息内容是否正确,无错别字,且明确等等;

    2,控件
     测试方法:
     a,窗体或控件的字体和大小要一致;
     b,注意全角,半角混合
     c,无中英文混合.

    菜单

    进行测试时要注意
     a,选择菜单是否可以正常工作,并与实际执行内容一致;
     b,是否有错别字:51Testing软件测试网
     c,快捷键是否重复;
     d,热键是否重复;
     e,快捷键与热键操作是否有效
     f,是否存在中英文混合
      g,菜单要与语境相关,如,不同权限的用户登陆一个应用程序,不同级别的用户可以看到不同级别的菜单并使用不同级别的功能;
    h,鼠标右键快捷菜单

    特殊属性
     1,安装界面应有公司介绍或产品介绍,有公司的图标

      2,主界面及大多数界面最好有公司图标
     3,选择"帮助"->"关于"命令,应看见相关版权和产品信息

  • Selenium 使用介绍

    mklodoss 发布于 2010-01-08 09:04:39

    来源(http://atomti.javaeye.com/blog/491342)

    Selenium
    严格说来,Selenium是一套完整的Web应用程序测试系统,它包含了测试的录制(Selenium IDE)、编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可运行于任何支持JavaScript的浏览器上。Selenium Core由一种指定格式的HTML文件驱动,在一定程度上增强了测试套件(Test Suite)的可读性。Selenium Remote Control允许测试人员使用常见的语言(自然包括C#等.NET语言)编写测试代码,并支持不同操作系统下的各种主流浏览器。Selenium Grid的作用是将测试分发至多台机器,这样便可大大加快测试速度。与WatiN相同,Selenium也是一款同样使用Apache License 2.0协议发布的开源框架。



    Selenium IDE

           Selenium IDE是基于FIREFOX浏览器的一个插件,提供GUI界面来运行Selenium测试。Selenium IDE提供脚本录制功能,可以将用户在浏览器中执行的操作记录下来,生成各种形式的脚本,可以将这些脚本保存供以后使用。

           安装Selenium IDE的步骤如下:

        * 从www.openqa.org/selenium-ide/download.action下载Selenimu IDE(这是一个XPI后缀的文件)。
        * 启动FIREFOX浏览器,打开刚才下载的文件。
        * 重启FIREFOX浏览器,在工具菜条下应该就可以看到Selenium IDE菜单项



    ---------------------------------------------------------------------------------------------------------

    一 Selenium-RC 是 selenium-remote control 缩写,是使用具体的语言来编写测试类。

    二 准备工作: 1,下载 selenium 了,到 http://www.openqa.org/selenium/ 下载就可以了,记得选择selenium-rc 的版本
                 2, 学习一下xpath 的知识。有个教程:http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html
                 3, 安装 jdk1.5


    三 selenium-rc 一些使用方法

        1,解压selenium-rc压缩包

        2,启动服务器 
            Selenium Server是用JAVA实现的,相应的库文件在HOME/server/selenium-server.jar。运行如下代码从命令行启动:
           java 代码 : java -jar selunium-server.jar


    四   编写测试用例

        需要的JAR: selenium-java-client-driver.jar;junit


        编写一个JUNIT的单元测试,要构建一个Selenium,包括如下步骤:

        * 构建一个Selenium实例
        * 启动Selenium实例
        * 执行Selenium命令,并验证结果。
        * 关闭Selenium实例


    如下是一个示例,用来测试http://www.google.com/,查找selenium,期望结果中包含"OpenQA: Selenium"
       1. package com.thoughtworks.selenium;     
       2.  
       3. import junit.framework.*;  
       4.  
       5. import org.openqa.selenium.server.*;  
       6.  
       7. public class GoogleTest extends TestCase  
       8. {  
       9.    private Selenium selenium;  
      10.  
      11.    public void setUp() throws Exception {  
      12.         String url = "http://www.google.com";  
      13.        selenium = new DefaultSelenium("localhost", SeleniumServer.getDefaultPort(), "*firefox", url);  
      14.        selenium.start();  
      15.     }  
      16.      
      17.    protected void tearDown() throws Exception {  
      18.        selenium.stop();  
      19.    }  
      20.      
      21.    public void testGoogleTestSearch() throws Throwable {  
      22.         selenium.open("/intl/zh-CN/");  
      23.         selenium.type("q", "selenium");  
      24.         selenium.click("btnG");  
      25.         selenium.waitForPageToLoad("30000");  
      26.         assertEquals("selenium - Google 搜索", selenium.getTitle());
      27.       
      28.     }  
      29.       
      30. }   

    五 多环境测试

    package test;

    import org.junit.Test;

    import junit.framework.TestCase;

    import com.thoughtworks.selenium.DefaultSelenium;
    import com.thoughtworks.selenium.Selenium;
    /**
    * 多浏览器测试
    * @author hgz
    *
    */
    public class NewTest extends TestCase {
    @Test
    public void testNew() throws Exception {
    Selenium selenium = new DefaultSelenium("localhost", 4444, "*chrome",
    "http://www.google.cn");
    script(selenium);
    }

    @Test
    public void testNew2() throws Exception {
    Selenium selenium = new DefaultSelenium("localhost", 4444, "*iehta",
    "http://www.google.cn");
    script(selenium);
    }

    private void script(Selenium selenium) throws Exception {
    try {
    selenium.start();
    selenium.open("http://www.google.cn/");//调用 selenium.open 方法,浏览器会打开相应的页面
    selenium.type("q", "selenium");//使用 type 方法来给输入框输入文字
    selenium.click("btnG");
    selenium.waitForPageToLoad("30000");//等待页面载入
    assertEquals("selenium - Google 搜索", selenium.getTitle());//看看新的页面标题是不是我们想要的。
    } catch (Exception e) {
    throw e;
    } finally {
    selenium.stop();
    }
    }
    }


    六 如何选取元素

       selenium提供如下强大的定位元素的方法。

        * id=id
        * name=name
        * dom=javascriptExpression
        * xpath=xpathExpression
        * link=textPattern
        * css=cssSelectorSyntax



    1 通过ID,name选择元素  :  如 selenium.type("id=q","百度"); selenium.type("name=search","百度")
    2 link= 根据链接文字来操作:如 selenium.click("link=个人资料");
    3 根据XPath来选择元素  : XPath Checker

        * xpath=//img[@alt='The image alt text']
        * xpath=//table[@id='table1']//tr[4]/td[2]
        * xpath=//a[contains(@href,'#id1')]
        * xpath=//a[contains(@href,'#id1')]/@class
        * xpath=(//table[@class='stylee'])//th[text()='theHeaderText']/../td
        * xpath=//input[@name='name2' and @value='yes']
        * xpath=//*[text()="right"]
          如: selenium.type("xpath=//input[@name='user.email']", "xxx@123.com"); // 向input中type为text的栏位键入信息
              selenium.check("xpath=//input[(@name='user.sex')and(@value='男')]");// 向input中type为radiod的 选取

    4 dom选择

        * dom=document.forms['myForm'].myDropdown
        * dom=document.images[56]
        * dom=function foo() { return document.links[1]; }; foo();

    5 css选择器

    这个不常用,它可以支持css2, css3选择器

        * css=a[href="#id3"]
        * css=span#firstChild + span



    七 使用selenium 这个对象来进行测试
    1  获取标 : assertEquals("Insert title here", selenium.getTitle());
    2  判断页面是否存在一个user.email元素  :assertTrue(selenium.isElementPresent("xpath=//input[@name='user.email']"));
    3  得到文本框里的文字:   assertEquals(selenium.getValue("xpath=//input[@name='user.username']"),"xxxaas");
    4  测试check box  :    assertTrue(selenium.isChecked("xpath=//input[(@name='user.sex')and(@value='男')]"));
    5  点击提交按钮   : selenium.click("xpath=//input[@type='button']");
    6  等待页面载入   : selenium.waitForPageToLoad("2000");
    7  验证指定文本出现在提交给用户的页面上: assertTrue(selenium.isTextPresent("验证码输入有误,请核实后再输入"));
    8  判断下拉框里选择了哪个选项 :assertEquals(selenium.getSelectedIndex("xpath=//SELECT[@name='HATIMING']"), "1"); 

    9  如何测试一些错误消息的显示? assertTrue(selenium.getBodyText().indexOf("错误消息")>=0); 
       getBodyText 返回的时浏览器页面上的文字,不回包含html 代码的,如果要显示html 代码,用下面这个:selenium.getHtmlSource(); 

    八   Firefox 的插件
         1 XPath Checker :可以用这个工具测试简化我们的xpath表达式
         2 Firebug
         3 Selenium IDE
         4 Execute JS
  • 测试人员的误区:迷信自动化

    fengyun32 发布于 2009-03-05 11:26:21

     终于有时间总结一下过去几年在微软的测试经验,谈谈对测试自动化的看法。
      先说说为什么做测试的人喜欢搞自动化。
      第一,自尊心。计算机科班出身的人都喜欢作开发(Dev)。做测试工作经常是身不由己,可是测试工作很多时间不需要编程,于是做测试的人想方设法写些程序,以显示自己也会编程。结果往往是欲罢不能,测试自动化程序越写越多,越写越复杂。后面我会谈谈测试自动化框架复杂的代价。
      第二,为了出成绩。很多测试组为了向管理层展示成绩,往往要拿出例如测试自动化达到80%,程序覆盖率达到90%。要我说,这些都是Bull Shit。就象小平同志说的“实践是检验真理的唯一标准”,我认为在测试中“用户不出问题是检验质量的唯一标准”。自动化做的再多,用户出了问题,也是白搭。另外,一个人就可以做的测试,自动化往往需要两个,三个。倒是解决就业的好方法。
      我对测试自动化的认识也有一个变化的过程。刚刚入行时也是很相信自动化,想方设法写一些从头到尾自动化的框架,觉得自动测试很过瘾。到微软的Portal Media Center组后也是和另外两个人做了一个相当复杂的用户界面的自动测试。其实现在想想,用自动测试发现的问题基本上可以一个人用手工测试完成,最多写些简单的测试辅助工具就可以完成。有些人可能会说自动化可以为产品的下一个版本节省测试时间。其实Portal Media Center 下一个版本出来时,所有户界面完全变了,80%以上的自动测试程序都需要改动。做完第一个版本,我们三个人全都走掉了。后面来的人往往宁可自己再写一套,也懒得改以前人的程序。自动化的浪费就是这样造成的。想说服别人用你开发的自动测试框架是很难的,所有人都想另搞一套。
      下面分几点讲讲为什么要放弃对测试自动化的幻想,和怎样进行低成本的有效测试。如果你还不能同意我对测试自动化的看法,可以去微软员工的Blog看看为什么Windows测试组用的WTT测试框架被称作“Waste of Tester Time"。我最基本的观点不是说测试自动化不能测出bug,而是想问:一个比较复杂的测试自动化框架所造成的人力浪费,值不值得最终的结果?如果不做测试自动化,能不能达到同样的效果。以我的亲身经历,去年我的测试组两个人对应开发组五个人,项目经理三个人的工作量,去年做了好几个Release,Hotfix只有两三个。我们旁边的测试组七八个人对应五六个Dev。他们又是自动化,又是搞程序覆盖率,好不热闹,Hotfix 也不少。按一个人的人工成本12万美元,我们组省至少三个人的成本36万美元。
      第一,不要指望自动化能帮你找bug。软件bug和生物的bug很像,测试的规律是bug少的地方bug越少,bug多地方越找越多。做测试自动化,往往在开发自动化的时候,该发现的bug就发现了。自动化开发完成,再想发现更多bug就很难了。这是无论你怎样跑你的自动化,也不会发现新的bug。
      第二,不要指望自动化对Regression Test的测试的贡献。软件的特点是如果一次做对了,以后永远不会出错。当程序出现变动时,只要针对变动的部分测试就可以了,以前测过的东西,如果和变动没有关联就不会出错。相反如果,程序出现很大变化,自动化可能完全不能用了。
      第三,自动化不如测试工具加手工测试。我不建议测试人员作全面自动化,相反我建议测试人员多做小巧灵活的测试工具。自动化往往需要自动判Pass或Fail。 想想你如果测试用于生成
    http://www.microsoft.com/的页面的产品,你如何判断页面框架生成的正确?很多东西是动态产生的,你很难确认所有的内容的正确性。如果你自己用这个产品手工做个页面,用肉眼很容易判断所有相关和不相关的内容生成的正确性。我就是用这个方法在工作中发现了网页上谁也想不到的bug, 如果用自动化很难在测试阶段发现这个bug。
      第四,软件项目的生命周期就定了自动化的无用。现在很多网络应用项目的生命周期都很短,一个项目从生到死不过两三年。死的定义是项目进入Sustain Engineering维持状态。自动化原来的一个主要目的是使软件测试的未来阶段越来越容易,成本越来越低。可是当一个项目死掉了,自动化还有什么用。而且最新的敏捷开发,软件的要求,程序,接口,界面在不断变化,自动化怎么可能跟得上变化。与其去搞自动化,不如多理解变化,直接测试变化的东西。
    如何进行有效测试?
      第一,测试人员的自信心可以建立在读程序的能力上。在一个项目中,开发人员的工作是研究新技术,写出最好的程序。测试人员应该在开发人员研究的基础之上,更好的理解新技术,读懂程序。看懂程序可以使测试工作非常高效。不懂内部程序的人,可能会设计三十个test cases, 才能找到一个bug。 懂程序的人每个test case都可能发现一个或多个bug。 我有30%的bug都是读程序读出来的。由于对开发人员的程序有很深的理解,即使release后出了问题,也能很快理解问题出在什么地方,是否是bug。
      第二,测试人员写测试程序的时间应该尽量最小化。测试人员测试的时间分配应该是, 30%读程序,20%写测试程序,50%写Test Cases和运行Test Cases。好的测试员的工作重点应该放在理解要求,理解客户需要,思考在什么条件下程序会出错,而不是思考如何去自动化。如果时间都放在设计自动化上了,必然会影响测试,分散测试资源。测试人员应该边读程序边测试,读程序帮助找到好的Test Case,测试帮助验证理解和猜测。
      第三,测试人员要学会讨价还价。很多时候项目经理,开发人员搞得东西不是客户马上需要的,或许是永远用不到的。测试人员可以和项目经理研究先测什么,后测什么,那些不测。比如,我做的一个项目,我发现30%的功能是现在用处不大,所以我直接告诉项目经理那些东西我不会去测的。事实证明,这样做节省了很多人力。
      第四,测试人员要多花时间参与设计。测试人员一定要紧跟项目经理和开发人员的要求变化和设计。理解每一个要求的影响。在每个项目周期中,去比较当前版本和以前版本的所有程序变化。重点测试变化。
      总之,少做自动化,多写小工具,读懂程序,是高效省钱的测试方法,除非你钱多得没地方花。下次有谁建议搞什么测试自动化构架,告诉他“That is bullshit”。
  • (转)QTP SP考试试题

    ypeony 发布于 2007-09-18 09:55:08

    QTP SP考试试题
    a)        In the correct order,list the steps to configure the Keyword View columns so that only the following four columns are displayed:Operation,Value and Documentation (4 points)

    A.From the Visible Columns field, select a column that should not be displayed.
    B.Select Tools->Keyword View Options
    C.Click the arrows to move the columns in or out of the Visible Columns field.
    D.Click Ok to apply the new column settings.

    A: B -> A -> C -> D

    b)        What file in a typical test directory contains the DataTable information for a test?(2 points)

            A: Default.xls

    c)        From a list of captured objects in the Object Repository, what QuickTest feature allows you to blink an object in the application under test? (2 points).

            A:

    d)        Which of the following synchronization does not apply to a single specific object?(2 points)

    a.Object Synchronization timeout
    b.A Synchronization point during recording
    c.A checkpoint timeout value
    d.None of the above.A TO C are all object-specific synchronizations

    A:

    e)        Select the three standard add-ins included in a QuickTest Professional installation(3 points)

    a.ActiveX
    b.Flash
    c.Windows
    d.Web
    e.Visual Basic
    f.Multimedia
    g.Terminal

    A: a.ActiveX, d.Web, e.Visual Basic

    f)        Emulator You need to identify the values of the following system variables: OSVersion,Product – Dir, and TestDir. What is the tab in QuickTest that contains this information,and where is the tab located?(2 points).

            A: Enviroment. It is in Test Settings (File -> Settings)

    g)        What feature from Microsoft has to be installed in order to add a breakpoint?(2 points)

    a.MS Outlook
    b.Internet Explorer
    c.MS Debugger
    d.Internet
    e.Explorer 6 Service Pack 2

    A: c.MS Debugger

    h)        How would you write a regular expression for a ten-digit number that begins with 45 and the ninth value is a character whose value would only be from A through F,mixed caps?(2 points)

    a.45[\d+7][AF]
    b.45[0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [A-f] [0-9]
    c.45.+[A-F,a-f] [0-9]
    d.45\d{6}[A-F,a-f]\d

    A: d.45\d{6}[A-F,a-f]\d

    i)        Listed below are four screens that represent application events.Which of the following trgger events would you not consider for a recovery scenario?(2 points)

    a.An application failure
    b.A pop up window with an error message
    c.An optional step in a business process
    d.A run error

    A: c.An optional step in a business process

    j)        You are asked to create an automated test on the Windows Flight application.The test requires you to open an order, then delete the opened order.The test plays back with several iterations. According to best practices,what should be the Record and Run Setting you will select for the test?(2 points)

    a.Record and run test on any open Windows-based application
    b.Record and run on these applications(opened on session start)
    c.Record and run test on any open application

    A:

    k)        What happens after the synchronization timeout expires during play back?There are tow answers.(2 points)

    A.The test always continues running
    b.The test always stops with an error message
    c.The test always issues a warning
    d.The test always uses Smart Identification automatically

    A: c.The test always issues a warning; d.The test always uses Smart Identification automatically

    l)        Two months ago,you created a test on a Windows application that contains ActiveX and Visual Basic Components.Yesterday,When you ran your test on a new build of the application,you discovered that the Visual Basic objects are no longer part of the application. When you open your test,the following message appears WITHOUT using the add-in Manger during start-up,what test settings can you use to update the test so this warning screen no longer appears when you open the test?(2 points)

    a. add-in license
    b. Modify Associated Add-ins
    c. Update ActiveScreen
    d. Associated Library Files
    e. Expert View
    f. Popup Message Box
    g. Generate scrīpt

    A: b. Modify Associated Add-ins (reopening QTP needed)

    m)        After creating and executing a basic test, you will see the results illustrated in figure 1. Explain why the status of Passed, Failed and Warnings occur zero times. There are two correct answsers.(2 points)

            A:

     

    转来的试题,欢迎补充答案:)

  • 软件测试相关的63个国外站点

    zhuang0417 发布于 2008-09-18 11:35:02

    软件测试相关的63个国外站点
     

    网址          简介
    http://bdonline.sqe.com/        一个关于网站测试方面的网页,对这方面感兴
    趣的人可以参考
    http://citeseer.nj.nec.com/        一个丰富的电子书库,内容很多,而且提供著
    作的相关文档参考和下载,是作者非常推荐的一个资料参考网站
    http://groups.yahoo.com/group/LoadRunner性能测试工具LoadRunner的一个论坛
    http://groups.yahoo.com/grorp/testing-paperannou-nce/messages    提供网站
    上当前发布的软件测试资料列表
    http://satc.gsfc.nasa.gov/homepage.html 软件保证中心是美国国家航天局(NASA)
    投资设立的一个软件可靠性和安全性研究中心,研究包括了度量、工具、风险等各个方面
    http://seg.iit.nrc.ca/English/index.html加拿大的一个研究软件工程质量方面的组
    织,可以提供研究论文的下载
    http://sepo.nosc.mil        内容来自美国SAN DIEGO的软件工程机构(Sofrware Engineering Process Office)主页,
    包括软件工程知识方面的资料
    http://www.asq.org/        是世界上最大的一个质量团体组织之一,有着比较丰富的论文资源,不过是收费的
    http://www.automated-testing.com/        一个自动化软件测试和自然语言处理研究页面,属于个人网页,上面有些
    资源可供下载
    http://www.benchmarkresources.com/        提供有关标杆方面的资料,也有一些其它软件测试方面的资料
    http://www.betasoft.com/        包含一些流行测试工具的介绍、下载和讨论,还提供测试方面的资料
    http://www.brunel.ac.uk/~csstmmh2/vast/home.html        VASTT研究组织,主要从事通过切片技术、测试技术和
    转换技术来验证和分析系统,对这方面技术感兴趣的人是可以在这里参考一些研究的项目及相关的一些主题信息
    http://www.cc.gatech.edu/aristotle/        Aristole研究组织,研究软件系统分析、测试和维护等方面的技术,在测试
    方面的研究包括了回归测试、测试套最小化、面向对象软件测试等内容,该网站有丰富的论文资源可供下载
    http://www.computer.org/        IEEE是世界上最悠久,也是在最大的计算机社会团体,它的电子图书馆拥有众多计算
    机方面的论文资料,是研究计算机方面的一个重要资源参考来源
    http://www.cs.colostate.edu/testing/        可靠性研究网站,有一些可靠性方面的论文资料
    http://www.cs.york.ac.uk/testsig/        约克大学的测试专业兴趣研究组网页,有比较丰富的资料下载,内容涵盖了测
    试的多个方面,包括测试自动化、测试数据生成、面向对象软件测试、验证确认过程等
    http://www.csr.ncl.ac.uk/index.html        学校里面的一个软件可靠性研究中心,提供有关软件可靠性研究方面的一些
    信息和资料,对这方面感兴趣的人可以参考
    http://www.dcs.shef.ac.uk/research/groups/vt/        学校里的一个验证和测试研究机构,有一些相关项目和论文可供
    参考
    http://www.esi.es/en/main/        ESI(欧洲软件组织),提供包括CMM评估方面的各种服务
    http://www.europeindia.org/cd02/index.htm        一个可靠性研究网站,有可靠性方面的一些资料提供参考
    http://www.fortest.org.uk/   一个测试研究网站,研究包括了静态测试技术(如模型检查、理论证明)和动态测试(如
    测试自动化、特定缺陷的检查、测试有效性分析等)
    http://www.grove.co.uk/        一个有关软件测试和咨询机构的网站,有一些测试方面的课程和资料供下载
    http://www.hq.nasa.gov/office/codeq/relpract/prcls-23.htm        NASA可靠性设计实践资料
    http://www.io.com/~wazmo/        Bret Pettichord的主页,他的一个热点测试页面连接非常有价值,从中可以获得相
    当大的测试资料,很有价值
    http://www.iso.ch/iso/en/ISOOnline.frontpage        国际标准化组织,提供包括ISO标准系统方面的各类参考资料
    http://www.isse.gmu.edu/faculty/ofut/classes/821-ootest/papers.html         提供面向对象和基于构架的测试方面著
    作下载,对这方面感兴趣的读者可以参考该网站,肯定有价值
    http://www.ivv.nasa.gov/        NASA设立的独立验证和确认机构,该机构提出了软件开发的全面验证和确认,在此可
    以获得这方面的研究资料
    http://www.kaner.com/        著名的测试专家Cem Kanner的主页,里面有许多关于测试的专题文章,相信对大家都有
    用。Cem Kanner关于测试的最著名的书要算Testing Software,这本书已成为一个测试人员的标准参考书
    http://www.library.cmu.edu/Re-search/Engineer-ingAndSciences/CS+ECE/index.html         卡耐基梅陇大学网上图书
    馆,在这里你可以获得有关计算机方面各类论文资料,内容极其庞大,是研究软件测试不可获取的资料来源之一
    http://www.loadtester.com/        一个性能测试方面的网站,提供有关性能测试、性能监控等方面的资源,包括论文、
    论坛以及一些相关链接
    http://www.mareinig.ch/mt/index.html        关于软件工程和应用开发领域的各种免费的实践知识、时事信息和资料
    文件下载,包括了测试方面的内容
    http://www.mtsu.ceu/-storm/        软件测试在线资源,包括提供目前有哪些人在研究测试,测试工具列表连接,测
    试会议,测试新闻和讨论,软件测试文学(包括各种测试杂志,测试报告),各种测试研究组织等内容
    http://www.psqtcomference.com/        实用软件质量技术和实用软件测试技术国际学术会议宣传网站,每年都会举
    行两次
    http://www.qacity.com/front.htm        测试工程师资源网站,包含各种测试技术及相关资料下载
    http://www.qaforums.com/        关于软件质量保证方面的一个论坛,需要注册
    http://www.qaiusa.com/        QAI是一个提供质量保证方面咨询的国际著名机构,提供各种质量和测试方面证书认证
    http://www.qualitytree.com/        一个测试咨询提供商,有一些测试可供下载,有几篇关于缺陷管理方面的文章值得
    参考
    http://www.rational.com/        IBM Rational的官方网站,可以在这里寻找测试方面的工具信息。IBM Rational提供测
    试方面一系列的工具,比较全面
    http://rexblackconsulting.com/Pages/publicat-ions.htm
            Rex Black的个人主页,有一些测试和测试管理方面的资料可供下载
    http://www.riceconsulting.com/        一个测试咨询提供商,有一些测试资料可供下载,但不多
    http://www.satisfice.com/        包含James Bach关于软件测试和过程方面的很多论文,尤其在启发式测试策略方面值
    得参考
    http://www.satisfice.com/seminars.shtml        一个黑盒软件测试方面的研讨会,主要由测试专家Cem Kanar和James 
    Bach组织,有一些值得下载的资料
    http://www.sdmagazine.com/        软件开发杂志,经常会有一些关于测试方面好的论文资料,同时还包括了项目和过
    程改进方面的课题,并且定期会有一些关于质量和测试方面的问题讨论
    http://www.sei.cmu.edu/        著名的软件工程组织,承担美国国防部众多软件工程研究项目,在这里你可以获俄各类
    关于工程质量和测试方面的资料。该网站提供强有力的搜索功能,可以快速检索到你想要的论文资料,并且可以免费下载
    http://www.soft.com/Institute/HotList/        提供了网上软件质量热点连接,包括:专业团体组织连接、教育机构连接、
    商业咨询公司连接、质量相关技术会议连接、各类测试技术专题连接等
    http://www.soft.com/News/QTN-Online/        质量技术时事,提供有关测试质量方面的一些时事介绍信息,对于关心
    测试和质量发展的人士来说是很有价值的
    http://www.softwaredioxide.com/        包括软件工程(CMM,CMMI,项目管理)软件测试等方面的资源
    http://www.softwareqatest.com/        软件质量/测试资源中心。该中心提供了常见的有关测试方面的FAQ资料,各质
    量/测网站介绍,各质量/测试工具介绍,各质量/策划书籍介绍以及与测试相关的工作网站介绍
    http://www.softwaretestinginstitute.com        一个软件测试机构,提供软件质量/测试方面的调查分析,测试计划模板,
    测试WWW的技术,如何获得测试证书的指导,测试方面书籍介绍,并且提供了一个测试论坛
    http://www.sqatester.com/index.htm        一个包含各种测试和质量保证方面的技术网站,提供咨询和培训服务,并有
    一些测试人员社团组织,特色内容是缺陷处理方面的技术
    http://www.sqe.com/        一个软件质量工程服务性网站,组织软件测试自动化、STAR-EASE、STARWEST等方面的测
    试学术会议,并提供一些相关信息资料和课程服务
    http://www.stickyminds.com/        提供关于软件测试和质量保证方面的当前发展信息资料,论文等资源
    http://www.stqemagazine.com/        软件策划和质量工程杂志,经常有一些好的论文供下载,不过数量较少,更多地需
    要通过订购获得,内容还是很有价值的
    http://www.tantara.ab.ca/        软件质量方面的一个咨询网站,有过程改进方面的一些资料提供
    http://www.tcse.org/        IEEE的一个软件工程技术委员会,提供技术论文下载,并有一个功能强大的分类下载搜索功能,
    可以搜索到测试类型、测试管理、 测试分析等各方面资料
    http://www.testing.com/        测试技术专家Brain Marick的主页,包含了Marick 研究的一些资料和论文,该网页提供了测
    试模式方面的资料,值得研究。总之,如果对测试实践感兴趣,该网站一定不能错过
    http://www.testingcenter.com/        有一些测试方面的课程体系,有一些价值
    http://www.testingconferences.com/asiastar/home        著名的AsiaStar测试国际学术会议官方网站,感兴趣的人一定不
    能错过
    http://www.testingstuff.com/        Kerry Zallar的个人主页,提供一些有关培训、工具、会议、论文方面的参考信息
    http://www-sqi.cit.gu.edu.au/        软件质量机构,有一些技术资料可以供下载,包括软件产品质量模型、再工程、软件
    质量改进等
  • 化蝶了(2)

    heyy2008 发布于 2007-11-10 17:38:53

     

          虽然想想是蛮辛苦的,但我们从来不会抱怨,因为我们相信自己的实力,相信有志者事竟成。与其去抱怨,不如将它视为一种考验。现在很多同学很羡慕的跟我说“你的都定了,可以好好玩了”。是的,付出后总是会见到彩虹的。虽然起点可能有点低,但结果证明了,只要自己坚持努力,不放弃,追逐梦想,就一定会成功。将和我一起加入公司的很多都是其他学校的,他们都很优秀,很多也拿到其他比较好的公司的OFFER。相信以后跟他们一起,可以学到很多东西,也可以让自己更快的进步。我们学校就我一个人进了这家公司,我觉得很幸福,当然也有压力,以后必须更加努力,证明我们依然可以很优秀。

         感慨了这么多,也该总结下总结得一些心得体会了。想想经历的公司,有文思,中软,迅雷,软通动力,微创,天源迪科,大连软件园,高德,群硕,淘宝,福富软件,方正等等,有的是宣讲,有的是笔试,还有的有面试,最终也拿到了几份OFFER。宣讲会主要是了解公司的基本情况,一般公司的宣讲会都比较吸引人。一般如果宣讲会现场收简历,那么意义就大些。因为现场投递简历成功的概率比网投的要大。有些会在宣讲会后就笔试,所以一定要留意公司的具体安排。 笔试一般就是逻辑题,技术题。我考得一般都是JAVA方面的。但有的公司会有专门的测试题,这样做起来就比较有意思了。卓望就给测试专门出了套题,这也是我很喜欢的地方。面试的话自我感觉就比较有经验了。首先一定要自信,保持微笑,因为优秀的面试官可以从你的微笑中看出你的自信和性格。面试官一天要面试很多人,如果你板个脸给他看,估计他就没有跟你聊下去的欲望。当然除非你不想进这家公司。然后就是要说话条理清晰,把你想表达的信息很有层次的展示给面试官,保证你说完后能在他的脑海里留下一个大纲,给他留下深刻的印象。第三,要表现出年轻人勇于拼闯的个性来。一般作软件的都希望到北京,上海,深圳这样的城市,但如果没有拼搏的干劲别人怎么放心你过去可以胜任工作呢。软件公司都希望接纳有激情的同事。最后是希望我们年轻人能够把工资看淡点,把发展看重点。比如问问题的时候多关心下自己在贵公司以后又怎样的培训,怎么得发展。而不要过于谈论我期望多少薪资。因为我认为,对于刚毕业的学生而言,我们需要一个真正有利用自己的发展平台和空间,如果可以学到东西,锻炼到能力,就不怕公司不给你想要的工资。当然,记得一个HR告诉我,也不能总是问公司能给你多大的发展空间,因为公司给你的也许只是一个平台,你想要有多大的空间取决于你怎么去做了。这个观点我也赞成,即使去了心仪的公司,也必须时刻保持追求上进的心,这样才能有真正的发展。

         呵呵,以上是一些简单的总结了。找工作的事告一段落。接下来的时间就要好好学习了。这段时间都忙着奔波了,发现好久没学习了。前天去了书城,发现测试方面又出了基本新书,有的看了。好好学习,学习测试,学习技术,学习很多很多知识,争取当我到那个城市,到那个岗位是可以好好表现。相信自己,继续努力。

  • 最近找工作,烦人

    weblight01 发布于 2007-09-29 22:27:26

    群硕   微软   华为   广东移动   雅虎   北京博彦科技   奇虎   中软   瑞星   软通动力   INTEL   sybase   惠普   IBM   SUN   移动   腾讯   阿里巴巴   Google   名企   GE(通用电气)   朗讯   电信   微创   大唐电信   汉王   Shell   百度   EMC   SEGA   汉略软件   上海聚力传媒   金山   网易   AutoDesk   ebay   网通   新思科技·Synopsys   赛门铁克·Symantec   新浪(sina)   Motorola(摩托罗拉)   SAP   锐捷网络   盛大   博朗BLEUM   飞思卡尔·freescale   豪威   神州数码   UBI soft   扬智   北电·Nortel   新蛋(newegg)   台积电   联通   卓越   

     

    这些都是比较不错的面经。 最近找工作烦人,收集面经资源,收集面试题资源。有好的帮忙分享啊。

  • 软件测试工程师面试

    nqk 发布于 2008-10-31 21:45:06

    今天参加了俩家公司的面试。下面是面试题,答案是在网上搜集的,有不对的地方,请大家多指教。 呵呵

    1。 自我介绍。

    2。 b/s与c/s测试的区别

    b/s结构即浏览器和服务器结构
    c/s是大家熟知的客户机和服务器结构
    B/S结构的优点: B/S结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。
    (1)、维护和升级方式简单。
    (2)、成本降低,选择更多。
    (3)、应用服务器运行数据负荷较重。
    C/S结构的优点:是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。
    (1)、应用服务器运行数据负荷较轻。
    (2)、数据的储存管理功能较为透明。
    (3)、C/S架构的劣势是高昂的维护成本且投资大。

    按照测试对象的结构分类可以分为:c/s结构系统测试、b/s结构系统测试、个人软件测试

    Client/Server软件测试

    c/s结构的软件测试发生在三个不同的层次

    • 个体的客户端应用以“分离的”模式被测试——不考虑服务器和底层网络的运行
    • 客户端软件和关联的服务器段应用被一起测试,但网络运行不被明显的考虑
    • 完成的C/S 体系结构,包括网络运行和性能,被测试。

    C/S结构软件测试常用方法

    • 应用功能测试——客户端勇勇被独立的执行,以揭示在其运行中的错误
    • 服务器测试——测试服务器的协调和数据管理功能,也考虑服务器性能(整体反应时间和数据吞吐量)
    • 数据库测试——测试服务器存储的数据的精确性和完整性,检查客户端应用提交的事务,以保证书具备正确的存储、更新和检索。
    • 事务测试——创建一系列的测试以保证每类事务被按照要求处理。测试着重于处理的正确性,也关注性能的问题。
    • 网络通信测试——这些测试验证网络节点间的通行正常的发生,并且消息传递、事务和相关的网络交通无错的发生。

    Browse/Server软件测试

    B/S结构软件测试需要关注:

    • 基本功能测试
    • 性能测试
    • 浏览器兼容性测试
    • 数据库测试
    • 安全性测试
    • 可用性易用性测试
    • 链接测试
    • 针对系统支持的协议的测试

    3。 集成测试、Alpha测试和Beta测试三者有何异同?

    集成测试、Alpha测试和Beta测试三者有何异同?

    集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求)如根据结构图〕组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现

    Alpha测试和Beta测试都属于确认测试。
    Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。开发者负责记录发现在错误和使用中遇到的问题。总之,Alpha测试是在受控的环境中进行的。

    Beta测试由软件的最终用户们在一个或多个客房场所进行。与Alpha测试不同,开发者通常在Beta测试的现场,因Beta测试是软件在开发者不能控制的环境中的“真实”应用。用户Beta测试过程中遇到的一切问题(真实在或想像的),并且定期把这些问题报告给开发者。接收到在Beta测试期间报告的问题之后,开发者对软件产品进行必要的修改,并准备向全体客户发布最终的软件产品。

    4。如何修改sql的字符集?

    SQL  Server  2000  如何更改字符集?  
    从中文改为英文。  
    ---------------------------------------------------------------  
     
    1.在MS-DOS模式下运行:  
    c:>net  stop  mssqlserver  
     
    2.然后运行\\mssql\binn\rebuildm.exe文件重建master库  
    字符集选ISO,排序方式二进制,大小写敏感。  
     
    3.重建完后在MS-DOS模式下运行:  
    c:>net  start  mssqlserver  

    5。 设计需用例要点?

    每一个测试需求至少确定两个测试用例:正面,负面

    •   为测试用例确定输入和输出

      输入是指在执行该测试用例时,由用户输入的与之交互的对象、字段和特定数据值(或生成的对象状态)。

      输出即预期结果,是指执行该测试用例完毕后得到的状态或数据。

      在确定输入和输出参数时,我们采用以下原则:

      在任何情况下都必须使用边界值分析方法。经验表明用这种方法设计出测试用例发现程序错误的能力最强。

      必要时用等价类划分方法补充一些测试用例。

      对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。如果没有达到要求的覆盖标准,应当再补充足够的测试用例。

      如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法

    6。测试最晚什么时候介入?

    个人认为是详细设计之后。

  • Why we think little about Test strategy in test plan

    frankyliu 发布于 2008-12-12 16:29:28

    AS we know, in the test plan, it shouod include test strategy. Normally I believe every company has his own test plan template. In the template, it may define Test Approach, Risk Assesment, Test Criteria and some Metrics.

    But sometimes, What QAs' job is just filling Feature test in the template, they don't care about test strategy in the template.

    Why we think little about test strategy in test plan? Below is the status:

    First, I guess the majority QA just regard it as virtual thing. QA just goes through the process, and everytime when a project comes, QA will only do black box test, function test. What QA's done is falling into make feature understanding. they don't like to think more about how to improve test effectiveness and efficency.

    Second, the time is very tough, QA has no much more time to think more. In this kind of case, maybe the project is very urgent or the whole project just breaks the normal process. 

    Third, QA has no sense about this part. Maybe the QA is fresh man, he even can't understand what test it is, how can we ask them to think more about test strategy.

    To resovle the problem, I think QA team should think more serious about test strategy; We may take some measures to check the test plan, especial for test strategy. If we have little time on this, we may write in simple way, at least it should explain why we don't think more about this. If the project is tested by a fresh man, Ok, I think the QA can ask a staff QA to give some advice. 

    As we know, test strategy is very important for QA, it presents our core ability. Before we test, we should indeed should think:

    • What end user focus?
    • What are the first priority?
    • Whether need we invovle third party help?
    • What mothodology should we take?
    • Whether need we to come out some test assistant tool?
    • What risk maybe introduce?
  • 用10个漂亮问题完美结束面试

    月上百合 发布于 2009-03-10 17:04:07

       

       在面试结束前,大多数的主考官都会丢问题给求职者,最常见的就是:你有没有什么问题或疑问,想要提出来的?无论求职者是否有提出问题,其实,这个问题背后的真正含意,通常是主考官用来测试你对这份工作有多大的企图心、决心和热情。 


      因此,如果你害怕发问不妥当,或是不知道该从何问起,甚至回答没有问题时,都很可能会让主考官认为,你想要这份工作的企图心、决心还不够强。

      相反的,求职者应该更积极、主动的利用面试最后一关的机会,适时的提出问题,这不但有助于主考官对你的印象能够加深,而且你也能趁此机会进一步了解这家公司的背景、企业文化是否适合你。

      最重要的是,如果能够在面试时,提出漂亮的问题,录取的机率将会大大提高。所以,无论如何,前往面试前,先谨记10个可以反问主考官的问题,以便到时候可以提出。

      1.贵公司对这项职务的工作内容和期望目标为何?有没有什么部分是我可以努力的地方?

      2.贵公司是否有正式或非正式教育训练?

      3.贵公司的升迁管道如何?

      4.贵公司的多角化经营,而且在海内外都设有分公司,将来是否有外派、轮调的机会?

      5.贵公司能超越同业的最大利基点为何?

      6.在项目的执行分工上,是否有资深的人员能够带领新进者,并让新进者有发挥的机会?

      7.贵公司强调的团队合作中,其它的成员素质和特性如何?

      8.贵公司是否鼓励在职进修?对于在职进修的补助办法如何?

      9.贵公司在人事上的规定和作法如何?

      10.能否为我介绍一下工作环境,或者是否有机会能参观一下贵公司?

      至于薪水待遇、年假天数、年终奖金、福利措施等问题,有些公司的主考官在面试时,会直接向求职者提出。如果对方没有提及,对社会新鲜人来说,在找第一份工作时,比较不适合提出,除非你有对方不得不录取你的条件。

      另外,也有人在结束前,谦虚的请教主考官:您认为我今天的表现如何?录取的机率有多大?通常,这个问题也会让对方认为,你对这份工作抱有很大的决心和企图心,而你也可以试着从对方的回答中,约略猜测出自己成功的机率有多大,并且作为下一次面试时表现的参考

  • HTTP协议详解

    huruihai 发布于 2008-11-17 17:13:29

    多多加强基础知识的积累,懂得loadrunner不一定就会性能测试,而基础知识有一定的广度和深度后,学习loadrunner就会事半功倍,其实你问的问题不属于loadrunner的问题,而是基础问题,认清方向不要盲目的追求某种工具的使用!要综合的提高自己!

    HTTP协议详解

    转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx

    Author :Jeffrey

    引言                                        

    HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。
    HTTP协议的主要特点可概括如下:
    1.支持客户/服务器模式。
    2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
    3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
    4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
    5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

     

    一、HTTP协议详解之URL篇

        http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。

    HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:
    http://host[":"port][abs_path]
    http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,为空则使用缺省端口80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。
    eg:
    1、输入:
    www.guet.edu.cn
    浏览器自动转换成:http://www.guet.edu.cn/
    2、http:192.168.0.116:8080/index.jsp 

     

    二、HTTP协议详解之请求篇

        http请求由三部分组成,分别是:请求行、消息报头、请求正文

    1、请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF  
    其中 Method表示请求方法;Request-URI是一个统一资源标识符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。

    请求方法(所有方法全为大写)有多种,各个方法的解释如下:
    GET     请求获取Request-URI所标识的资源
    POST    在Request-URI所标识的资源后附加新的数据
    HEAD    请求获取由Request-URI所标识的资源的响应消息报头
    PUT     请求服务器存储一个资源,并用Request-URI作为其标识
    DELETE  请求服务器删除Request-URI所标识的资源
    TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断
    CONNECT 保留将来使用
    OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
    应用举例:
    GET方法:在浏览器的地址栏中输入网址的方式访问网页时,浏览器采用GET方法向服务器获取资源,eg:GET /form.html HTTP/1.1 (CRLF)

    POST方法要求被请求服务器接受附在请求后面的数据,常用于提交表单。
    eg:POST /reg.jsp HTTP/ (CRLF)
    Accept:image/gif,image/x-xbit,... (CRLF)
    ...
    HOST:www.guet.edu.cn (CRLF)
    Content-Length:22 (CRLF)
    Connection:Keep-Alive (CRLF)
    Cache-Control:no-cache (CRLF)
    (CRLF)         //该CRLF表示消息报头已经结束,在此之前为消息报头
    user=jeffrey&pwd=1234  //此行以下为提交的数据

    HEAD方法与GET方法几乎是一样的,对于HEAD请求的回应部分来说,它的HTTP头部中包含的信息与通过GET请求所得到的信息是相同的。利用这个方法,不必传输整个资源内容,就可以得到Request-URI所标识的资源的信息。该方法常用于测试超链接的有效性,是否可以访问,以及最近是否更新。
    2、请求报头后述
    3、请求正文(略) 

     

    三、HTTP协议详解之响应篇

        在接收和解释请求消息后,服务器返回一个HTTP响应消息。

    HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文
    1、状态行格式如下:
    HTTP-Version Status-Code Reason-Phrase CRLF
    其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。
    状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
    1xx:指示信息--表示请求已接收,继续处理
    2xx:成功--表示请求已被成功接收、理解、接受
    3xx:重定向--要完成请求必须进行更进一步的操作
    4xx:客户端错误--请求有语法错误或请求无法实现
    5xx:服务器端错误--服务器未能实现合法的请求
    常见状态代码、状态描述、说明:
    200 OK      //客户端请求成功
    400 Bad Request  //客户端请求有语法错误,不能被服务器所理解
    401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
    403 Forbidden  //服务器收到请求,但是拒绝提供服务
    404 Not Found  //请求资源不存在,eg:输入了错误的URL
    500 Internal Server Error //服务器发生不可预期的错误
    503 Server Unavailable  //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
    eg:HTTP/1.1 200 OK (CRLF)

    2、响应报头后述

    3、响应正文就是服务器返回的资源的内容 

     

    四、HTTP协议详解之消息报头篇

        HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头(可选),空行(只有CRLF的行),消息正文(可选)组成。

    HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。
    每一个报头域都是由名字+“:”+空格+值 组成,消息报头域的名字是大小写无关的。

    1、普通报头
    在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的消息。
    eg:
    Cache-Control   用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制),HTTP1.0使用的类似的报头域为Pragma。
    请求时的缓存指令包括:no-cache(用于指示请求或响应消息不能缓存)、no-store、max-age、max-stale、min-fresh、only-if-cached;
    响应时的缓存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage.
    eg:为了指示IE浏览器(客户端)不要缓存页面,服务器端的JSP程序可以编写如下:response.sehHeader("Cache-Control","no-cache");
    //response.setHeader("Pragma","no-cache");作用相当于上述代码,通常两者//合用
    这句代码将在发送的响应消息中设置普通报头域:Cache-Control:no-cache


    Date普通报头域表示消息产生的日期和时间

    Connection普通报头域允许发送指定连接的选项。例如指定连接是连续,或者指定“close”选项,通知服务器,在响应完成后,关闭连接

    2、请求报头
    请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。
    常用的请求报头
    Accept
    Accept请求报头域用于指定客户端接受哪些类型的信息。eg:Accept:image/gif,表明客户端希望接受GIF图象格式的资源;Accept:text/html,表明客户端希望接受html文本。
    Accept-Charset
    Accept-Charset请求报头域用于指定客户端接受的字符集。eg:Accept-Charset:iso-8859-1,gb2312.如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受。
    Accept-Encoding
    Accept-Encoding请求报头域类似于Accept,但是它是用于指定可接受的内容编码。eg:Accept-Encoding:gzip.deflate.如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。
    Accept-Language
    Accept-Language请求报头域类似于Accept,但是它是用于指定一种自然语言。eg:Accept-Language:zh-cn.如果请求消息中没有设置这个报头域,服务器假定客户端对各种语言都可以接受。
    Authorization
    Authorization请求报头域主要用于证明客户端有权查看某个资源。当浏览器访问一个页面时,如果收到服务器的响应代码为401(未授权),可以发送一个包含Authorization请求报头域的请求,要求服务器对其进行验证。
    Host(发送请求时,该报头域是必需的)
    Host请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的,eg:
    我们在浏览器中输入:
    http://www.guet.edu.cn/index.html
    浏览器发送的请求消息中,就会包含Host请求报头域,如下:
    Host:
    www.guet.edu.cn
    此处使用缺省端口号80,若指定了端口号,则变成:Host:www.guet.edu.cn:指定端口号
    User-Agent
    我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,你所使用的浏览器的名称和版本,这往往让很多人感到很神奇,实际上,服务器应用程序就是从User-Agent这个请求报头域中获取到这些信息。User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。不过,这个报头域不是必需的,如果我们自己编写一个浏览器,不使用User-Agent请求报头域,那么服务器端就无法得知我们的信息了。
    请求报头举例:
    GET /form.html HTTP/1.1 (CRLF)
    Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/* (CRLF)
    Accept-Language:zh-cn (CRLF)
    Accept-Encoding:gzip,deflate (CRLF)
    If-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT (CRLF)
    If-None-Match:W/"80b1a4c018f3c41:8317" (CRLF)
    User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) (CRLF)
    Host:www.guet.edu.cn (CRLF)
    Connection:Keep-Alive (CRLF)
    (CRLF)

    3、响应报头
    响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。
    常用的响应报头
    Location
    Location响应报头域用于重定向接受者到一个新的位置。Location响应报头域常用在更换域名的时候。
    Server
    Server响应报头域包含了服务器用来处理请求的软件信息。与User-Agent请求报头域是相对应的。下面是
    Server响应报头域的一个例子:
    Server:Apache-Coyote/1.1
    WWW-Authenticate
    WWW-Authenticate响应报头域必须被包含在401(未授权的)响应消息中,客户端收到401响应消息时候,并发送Authorization报头域请求服务器对其进行验证时,服务端响应报头就包含该报头域。
    eg:WWW-Authenticate:Basic realm="Basic Auth Test!"  //可以看出服务器对请求资源采用的是基本验证机制。


    4、实体报头
    请求和响应消息都可以传送一个实体。一个实体由实体报头域和实体正文组成,但并不是说实体报头域和实体正文要在一起发送,可以只发送实体报头域。实体报头定义了关于实体正文(eg:有无实体正文)和请求所标识的资源的元信息。
    常用的实体报头
    Content-Encoding
    Content-Encoding实体报头域被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容的编码,因而要获得Content-Type报头域中所引用的媒体类型,必须采用相应的解码机制。Content-Encoding这样用于记录文档的压缩方法,eg:Content-Encoding:gzip
    Content-Language
    Content-Language实体报头域描述了资源所用的自然语言。没有设置该域则认为实体内容将提供给所有的语言阅读
    者。eg:Content-Language:da
    Content-Length
    Content-Length实体报头域用于指明实体正文的长度,以字节方式存储的十进制数字来表示。
    Content-Type
    Content-Type实体报头域用语指明发送给接收者的实体正文的媒体类型。eg:
    Content-Type:text/html;charset=ISO-8859-1
    Content-Type:text/html;charset=GB2312
    Last-Modified
    Last-Modified实体报头域用于指示资源的最后修改日期和时间。
    Expires
    Expires实体报头域给出响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)的页面,我们可以使用Expires实体报头域指定页面过期的时间。eg:Expires:Thu,15 Sep 2006 16:23:12 GMT
    HTTP1.1的客户端和缓存必须将其他非法的日期格式(包括0)看作已经过期。eg:为了让浏览器不要缓存页面,我们也可以利用Expires实体报头域,设置为0,jsp中程序如下:response.setDateHeader("Expires","0");

     

    五、利用telnet观察http协议的通讯过程

        实验目的及原理:
        利用MS的telnet工具,通过手动输入http请求信息的方式,向服务器发出请求,服务器接收、解释和接受请求后,会返回一个响应,该响应会在telnet窗口上显示出来,从而从感性上加深对http协议的通讯过程的认识。

        实验步骤:

    1、打开telnet
    1.1 打开telnet
    运行-->cmd-->telnet

    1.2 打开telnet回显功能
    set localecho

    2、连接服务器并发送请求
    2.1 open 
    www.guet.edu.cn 80  //注意端口号不能省略

        HEAD /index.asp HTTP/1.0
        Host:www.guet.edu.cn
        
       /*我们可以变换请求方法,请求桂林电子主页内容,输入消息如下*/
        open 
    www.guet.edu.cn 80 
       
        GET /index.asp HTTP/1.0  //请求资源的内容
        Host:www.guet.edu.cn  

    2.2 open www.sina.com.cn 80  //在命令提示符号下直接输入telnet www.sina.com.cn 80
        HEAD /index.asp HTTP/1.0
        Host:www.sina.com.cn
     

    3 实验结果:

    3.1 请求信息2.1得到的响应是:

    HTTP/1.1 200 OK                                              //请求成功
    Server: Microsoft-IIS/5.0                                    //web服务器
    Date: Thu,08 Mar 200707:17:51 GMT
    Connection: Keep-Alive                                 
    Content-Length: 23330
    Content-Type: text/html
    Expries: Thu,08 Mar 2007 07:16:51 GMT
    Set-Cookie: ASPSESSIONIDQAQBQQQB=BEJCDGKADEDJKLKKAJEOIMMH; path=/
    Cache-control: private

    //资源内容省略

    3.2 请求信息2.2得到的响应是:

    HTTP/1.0 404 Not Found       //请求失败
    Date: Thu, 08 Mar 2007 07:50:50 GMT
    Server: Apache/2.0.54 <Unix>
    Last-Modified: Thu, 30 Nov 2006 11:35:41 GMT
    ETag: "6277a-415-e7c76980"
    Accept-Ranges: bytes
    X-Powered-By: mod_xlayout_jh/0.0.1vhs.markII.remix
    Vary: Accept-Encoding
    Content-Type: text/html
    X-Cache: MISS from zjm152-78.sina.com.cn
    Via: 1.0 zjm152-78.sina.com.cn:80<squid/2.6.STABLES-20061207>
    X-Cache: MISS from th-143.sina.com.cn
    Connection: close


    失去了跟主机的连接

    按任意键继续...

    4 .注意事项:1、出现输入错误,则请求不会成功。
              2、报头域不分大小写。
              3、更深一步了解HTTP协议,可以查看RFC2616,在
    http://www.letf.org/rfc上找到该文件。
              4、开发后台程序必须掌握http协议

    六、HTTP协议相关技术补充

        1、基础:
        高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议等
    中介由三种:代理(Proxy)、网关(Gateway)和通道(Tunnel),一个代理根据URI的绝对格式来接受请求,重写全部或部分消息,通过 URI的标识把已格式化过的请求发送到服务器。网关是一个接收代理,作为一些其它服务器的上层,并且如果必须的话,可以把请求翻译给下层的服务器协议。一 个通道作为不改变消息的两个连接之间的中继点。当通讯需要通过一个中介(例如:防火墙等)或者是中介不能识别消息的内容时,通道经常被使用。
         代理(Proxy):一个中间程序,它可以充当一个服务器,也可以充当一个客户机,为其它客户机建立请求。请求是通过可能的翻译在内部或经过传递到其它的 服务器中。一个代理在发送请求信息之前,必须解释并且如果可能重写它。代理经常作为通过防火墙的客户机端的门户,代理还可以作为一个帮助应用来通过协议处 理没有被用户代理完成的请求。
    网关(Gateway):一个作为其它服务器中间媒介的服务器。与代理不同的是,网关接受请求就好象对被请求的资源来说它就是源服务器;发出请求的客户机并没有意识到它在同网关打交道。
      网关经常作为通过防火墙的服务器端的门户,网关还可以作为一个协议翻译器以便存取那些存储在非HTTP系统中的资源。
        通道(Tunnel):是作为两个连接中继的中介程序。一旦激活,通道便被认为不属于HTTP通讯,尽管通道可能是被一个HTTP请求初始化的。当被中继 的连接两端关闭时,通道便消失。当一个门户(Portal)必须存在或中介(Intermediary)不能解释中继的通讯时通道被经常使用。

    2、协议分析的优势—HTTP分析器检测网络攻击
    以模块化的方式对高层协议进行分析处理,将是未来入侵检测的方向。
    HTTP及其代理的常用端口80、3128和8080在network部分用port标签进行了规定

    3、HTTP协议Content Lenth限制漏洞导致拒绝服务攻击
    使用POST方法时,可以设置ContentLenth来定义需要传送的数据长度,例如ContentLenth:999999999,在传送完成前,内 存不会释放,攻击者可以利用这个缺陷,连续向WEB服务器发送垃圾数据直至WEB服务器内存耗尽。这种攻击方法基本不会留下痕迹。
    http://www.cnpaf.net/Class/HTTP/0532918532667330.html

    4、利用HTTP协议的特性进行拒绝服务攻击的一些构思
    服务器端忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYNFlood攻击(SYN洪水攻击)。
    而Smurf、TearDrop等是利用ICMP报文来Flood和IP碎片攻击的。本文用“正常连接”的方法来产生拒绝服务攻击。
    19端口在早期已经有人用来做Chargen攻击了,即Chargen_Denial_of_Service,但是!他们用的方法是在两台Chargen 服务器之间产生UDP连接,让服务器处理过多信息而DOWN掉,那么,干掉一台WEB服务器的条件就必须有2个:1.有Chargen服务2.有HTTP 服务
    方法:攻击者伪造源IP给N台Chargen发送连接请求(Connect),Chargen接收到连接后就会返回每秒72字节的字符流(实际上根据网络实际情况,这个速度更快)给服务器。

    5、Http指纹识别技术
       Http指纹识别的原理大致上也是相同的:记录不同服务器对Http协议执行中的微小差别进行识别.Http指纹识别比TCP/IP堆栈指纹识别复杂许 多,理由是定制Http服务器的配置文件、增加插件或组件使得更改Http的响应信息变的很容易,这样使得识别变的困难;然而定制TCP/IP堆栈的行为 需要对核心层进行修改,所以就容易识别.
          要让服务器返回不同的Banner信息的设置是很简单的,象Apache这样的开放源代码的Http服务器,用户可以在源代码里修改Banner信息,然 后重起Http服务就生效了;对于没有公开源代码的Http服务器比如微软的IIS或者是Netscape,可以在存放Banner信息的Dll文件中修 改,相关的文章有讨论的,这里不再赘述,当然这样的修改的效果还是不错的.另外一种模糊Banner信息的方法是使用插件。
    常用测试请求:
    1:HEAD/Http/1.0发送基本的Http请求
    2:DELETE/Http/1.0发送那些不被允许的请求,比如Delete请求
    3:GET/Http/3.0发送一个非法版本的Http协议请求
    4:GET/JUNK/1.0发送一个不正确规格的Http协议请求
    Http指纹识别工具Httprint,它通过运用统计学原理,组合模糊的逻辑学技术,能很有效的确定Http服务器的类型.它可以被用来收集和分析不同Http服务器产生的签名。

    6、其他:为了提高用户使用浏览器时的性能,现代浏览器还支持并发的访问方式,浏览一个网页时同时建立多个连接,以迅速获得一个网页上的多个图标,这样能更快速完成整个网页的传输。
    HTTP1.1中提供了这种持续连接的方式,而下一代HTTP协议:HTTP-NG更增加了有关会话控制、丰富的内容协商等方式的支持,来提供
    更高效率的连接

  • 31个用来测试网站各项性能的免费工具

    lqp 发布于 2007-11-19 21:56:52

    31个用来测试网站各项性能的免费工具          来源: 网络转载

    你是否肯定你的网站完全兼容各大浏览器?是否知道多少秒可以打开你的网站? 是否可以自信地说你的网站根本就没有打不开的时候? 是否……
        虽然它看似不重要,但这些在一定程度上也对你的网站的访问量产生了影响 ( 其它一部分影响浏览量的原因及解决办法 )。这里列出了一份 31 个我最喜爱的免费在线测试工具,你可以通过这些工具来测试你的网站,并根据结果对你的网站进行修改。

        网站代码验证 没人可以细致到保证自己的网站代码都是正确的,你可以通过以下测试来验证网站代码是否正确。

        1 .WDG HTML Validator一个很好的工具,能找出网站语法错误的地方,并标注出来,也可选择对网站上单独的每一页进行单页分析。( 强烈推荐 )

        2 .W3C Markup Validation Service对 HTML 和 XHTML 都能进行代码测试,自称是互联网络上第一个(也是使用者最多的)的 HTML 验证工具。

        3 .W3C CSS Validation Service用于验证 css 源代码,能够标注出不好的 css 代码设计。例如:“Same colors for color and background-color in two contexts”。

        4 .RUWF XML Syntax Checker用于查找 XML 文件的错误。

        5 .W3C Feed Validation Service用于查找 Atom 和 RSS feed 中的错误语法。( 这个我经常用到 )

        6 .W3C Link Checker用于搜寻查明你网站内的所有链接里是否有断链。( 强烈推荐 )

        7 .Juicy Studio Link Analyser测试网站内的链接的 URL 是否存在死链,与 W3C Link Checker 很类似。

       网站的使用性

        我们常常看到网站设计者把重点放在怎网站的吸引力上,而完全不考虑会不会影响来访者的使用,一个浏览难度很大的网页是注定要失败,要让你的来访者方便的得到他要的信息(从而成为重复访客),你的网站应当遵循 WCAG section 508 易用性规则。

        8 .Watchfire WebXACT所有严谨的设计师和开发者都必须使用的工具,它会生成一个非常详尽的报告书,包括:网站质量,易用性和隐私等。( 强烈推荐 )

        9 .ATRC Web Accessibility Checker测试网站的 WCAG 2.0 Level2 兼容性,它会生成一份报告,提出一系列建议,如:如何提升页头,链接,数据,图表和文字的访问速度。

        10 .WAVE 3.0 Web Accessibility Tool高度可定制的工具,它采用了图形化模型展示网站兼容性问题( WCAG 1.0 and section 508 )。( 强烈推荐 )

        11 .TAW Web Accessibility Test测试网页是否存在冲突( WCAG 1.0 兼容性 ),通过图形模式生成一份依据 wcag 优先模式为基础的网站修改建议。

        12 .HiSoftware CynthiaSays portal采用了非常严格的规则来测试网页( 根据 section 508 和 WCAG 1.0 规则 ),生成的报告也极为详细( 详细到很难看懂 )。

        13 .HERA Accessibility testing with Style使用一种极为复杂但容易理解方式指出网页的 wcag1.0 兼容性问题。

        14 .Juicy Studio CSS Analyser进行了色彩对比测试,以确保你的网站的色调会符合 WCAG 1.0 的要求。

        15 .Juiciy Studio Readability Test分析你网站上的文字是否有语法错误或拼写错误等问题,容易让人理解不( 根据 the Flesch Reading Ease 和 Flesch-Kincaid grade level algorithms 规则 )。( 适合英文网站使用 )

       网站的速度

        打开你的网站的速度快慢,是来访者会不会再次访问网站的关键因素,在一般情况下,一个网络不是很快的来访者是不愿意访问一个充满着图片、flash 动画、多媒体文件的网站。为了使你的网站覆盖人群的范围最大化,你必须优化你的网站,使它的打开速度尽可能的快。

        16 .Web Page Analyzer from Website Optimization一个很好的工具,它在分析完一个网页后,会为减少加载时间提出优化建议,着重优化物体的数目,图片和网站的总体大小。( 强烈推荐 )

        17 .WebSitePulse Test Tools有一系列的工具来确定网站的加载速度和主机信息。

        18 .Internet Supervision Url Check从世界各地不同的服务器来测试你的网站的加载时间,用于确定是不是各地的来访者都能顺利快速的打开你得网站。

       浏览器模拟工具

        这是一个普遍的问题,因为现在有着很多的操作系统和浏览器,你得网站必须得兼容它们,但这绝不是一件容易的事。通过下列工具,你可以了解你得网站在各种浏览器上的显示效果。

        19 .Browsershots能给出你的网站在不同浏览器下显示效果的截图,包括:Firefox 和 Internet Explorer ( Windows )、Firefox 和 Safari ( Mac OS X )、Iceweasal 和 Konqueror ( Linux ),但是结果要在 1 - 3 小时后才能出来。

        20 .IE NetRenderer实时生成你的网站在 Internet Explorer 5.5 、6.0 和 7.0 下的截图。

        21 .MobiReady Report分析使用手机访问网页的兼容性问题,会生成一份详细的报告,并提供了在两种不同类型的手机浏览器上你得网站可能显示的样子。
    搜索引擎优化 (SEO)
    一个网站,如果对搜索引擎有着比较好的友好度,一定会比较有竞争力。

        22 .UrlTrends会显示网站的访客是如何通过搜索引擎来到你的网站,还有各个流量是多少。这些数据是包括 Google, Yahoo,MSN, Alexa, AlltheWeb, Altavista和其他一些网站。( 强烈推荐 )

        23 .iWEBTOOL Backlink Checker一个很好的工具,它能找出有什么站点链接到你的站点,那些站点是什么类型的站点。

        24 .iWEBTOOL Multi-Rank Checker显示你网站的 Alexa 和 Google PageRank 数值。

        25 .Microsoft adCenter Labs: Advertising and Keyword Research Tools一个极好的工具,用于分析和预测你网站的来访者和市场。( 强烈推荐 )

        26 .Domain Tools Whois lookup一个 WHOIS 网络工具。

        27 .SEO-Browser可以让你看到在搜索引擎眼里一样的网站( 去掉所有的”美丽”配件 )。

        28 .SEO Workers SEO Analysis Tool非常有用的工具,分析了网站上的各种分类特征,包括 meta 标签、关键字密度及加载时间。( 强烈推荐 )

        29 .Seekport Seekbot可以分析网站的数据和内容,以得出搜索引擎会如何有效的解释分析的网站。

        30 .SEO Chat SEO Tools用以分析网站 Google adsense 盈利潜力,关键字密度,Meta tag 等等……

        31 .Marketleap Search Engine Marketing Tools用来分析网页,让你知道你的网站检索、设定的关键字好不好。

  • QTP自动化测试流程(转贴)

    lqp 发布于 2007-11-19 22:12:47

    1)准备TestCase
            -
    在进行自动化之前,将测试内容进行文档化,不建议直接录制脚本
            -
    在录制脚本之前设计好脚本,便于录制过程的流畅
            -
    由于测试用例设计和脚本开发可能不是同一个人完成,便于团队合作
            -
    便于后期的维护
            -
    文档化的方式:TD或者文档
     
    2)配置QTP
            QTP
    支持不同的开发环境,在正式录制之前,需要根据被测程序的开发环境,选择合适的Add-In,并进行加载。
     
    3
    )录制脚本
           
    启动QTP的录制功能,按照Test Case的操作步骤描述执行,QTP自动记录每一步操作,并自动生成VBscrīpt脚本。
     
    4
    )修改增强脚本
           
    刚刚录制好的脚本可能包含错误,或者没有达到预期的目的,这就需要在录制脚本的基础上,进行修改增强
            -
    删除录制过程中多余的以及错误的操作,以最少的脚本完成任务
            -
    如果前面操作的输出是后面操作的输入,则需要使用变量或者输出值来进行替换
            -
    不是所有的操作都可以通过录制产生的,有些需要通过手工编码实现这些功能
            -
    录制产生的脚本是线性的,可以加入条件、循环控制语句,实现更复杂的流程
            -
    对脚本进行结构化
            -
    加入注释,便于阅读和维护

     
    5)调试脚本
            -
    回放通过的脚本,不一定是正确的,也可能会包含错误
            -
    在测试脚本正式使用之前,要保证其本身的正确性
            -
    避免测试脚本故障和被测程序故障搅在一起,不容易定位
     
    6
    )回放脚本
            -
    对于回放的错误,不要急于马上提交Bug,首先要判断是脚本本身的错误还是程序的错误,确认后再提交。

     
    7)脚本维护
            -
    随着工作的不断推进,脚本量会越来越多
            -
    被测试程序的不断更新,也需要更新相应的测试脚本
            -
    采用版本管理工具保存脚本,如CVSVSS,可以随时获取历史版本
            -
    采用统一的脚本架构
            -
    采用统一的命名规范
            -
    添加充分的注释,避免时间久了,自己都不能马上读懂脚本

  • 获取WinListView的具体值,并导出表中

    lqp 发布于 2009-02-08 14:55:11

    Dialog("AA").Restore
    Dialog("AA").WinButton("Button").Click
    Dialog("AA").WinListView("WinListView").Select "重要"


    #下面这四行都是对datatable添加列名,并且初始化为0。
    DataTable.GlobalSheet.AddParameter "类型", 00
    DataTable.GlobalSheet.AddParameter "kb号", 00
    DataTable.GlobalSheet.AddParameter "描述", 00
    DataTable.GlobalSheet.AddParameter "当前状态", 00

    #定义变量
    Dim i,kb1,kb2,kb3,kb4

    #由于有16行要输出,所以循环从1到16。
    For i = 1 to 16

    #下面这四行是对WinListView的取值。(i,0)表求第i行,第0列。一共有四列。
    kb1 = Dialog("AA").WinListView("WinListView").GetSubItem( i, 0)
    kb2= Dialog("AA").WinListView("WinListView").GetSubItem( i, 1)
    kb3 = Dialog("AA").WinListView("WinListView").GetSubItem( i, 2)
    kb4 = Dialog("AA").WinListView("WinListView").GetSubItem( i, 3)

    #这四行是将取得的值放入到datatable中,相应的列名下。如将kb1的值放入到"类型“下。
    DataTable.Value(  "类型") = kb1
    DataTable.Value(  "kb号") = kb2
    DataTable.Value(  "描述") = kb3
    DataTable.Value(  "当前状态") = kb4

    #下面这行是将当前的行指向下一行,这样数据都一行一行地插进去。如果没这一行,取到的数据永远只放到第一行。永远只能取到一行的数据。
    DataTable.SetCurrentRow (i+1)

    Next

    #这行是将数据表导出到data.xls中。
    datatable.Export("d:\data.xls")

    开始时,没有修改地这相关的配置,导致循环时,总是从头开始循环,导致重新检测很多次。数据重复插入很多次。而脚本的目的只是循环只需要for中的,其它的都不需要。
    解决:
    从file -> settings -->run  中将data table iterations 改为run one iteration only。问题即可解决。一般情况下这里默认是run on all rows。即循环针对所有的行。

  • winlistview中select的使用

    lqp 发布于 2009-02-08 14:58:47

    今天发现了winlistview中,居然可以用行号来代替点击的关键字。


    如:Dialog("AA").WinListView("WinListView").Select "重要"
    可以用:Dialog("AA").WinListView("WinListView").Select 1


    修改行号后,它会自动指向该行。实在方便。呵呵


    简单代码:

    Dialog("AA").Activate
    Dialog("AA").WinButton("Button").Click

    Dim a
    a = 10
    Dialog("AA").WinListView("WinListView").Select a

    这里会指向WinListView的第十行的数据了。

    用FOR能每一行都能覆盖到.

    如下这样就能指向WinListView中的第一行了。

    Dim a
    for a = 1 to 10
    Dialog("AA").WinListView("WinListView").Select a

    next

    msgbox "ok"

  • QTP 关于文件的操作

    lqp 发布于 2009-02-08 22:10:04

    创建文件
    dim fso, f
    set fso = CreateObject("scrīpting.FileSystemObject")
    set f = fso.CreateTextFile("d:\test.txt", true) '第二个参数表示目标文件存在时是否覆盖
    f.Write("写入内容")
    f.WriteLine("写入内容并换行")
    f.WriteBlankLines(3) '写入三个空白行(相当于在文本编辑器中按三次回车)
    f.Close()


    打开并读文件
    dim fso, f
    set fso = CreateObject("scrīpting.FileSystemObject")
    set f = fso.OpenTextFile("C:\test.txt", 1, false) '第二个参数 1 表示只读打开,第三个参数表示目标文件不存在时是否创建
    f.Skip(3) '将当前位置向后移三个字符
    f.SkipLine() '将当前位置移动到下一行的第一个字符,注意:无参数
    response.Write f.Read(3) '从当前位置向后读取三个字符,并将当前位置向后移三个字符
    response.Write f.ReadLine() '从当前位置向后读取直到遇到换行符(不读取换行符),并将当前位置移动到下一行的第一个字符,注意:无参数
    response.Write f.ReadAll() '从当前位置向后读取,直到文件结束,并将当前位置移动到文件的最后
    if f.atEndOfLine then
        response.Write("一行的结尾!")
    end if
    if f.atEndOfStream then
        response.Write("文件的结尾!")
    end if
    f.Close()
    set f = nothing
    set fso = nothing

    打开并写文件
    dim fso, f
    set fso = CreateObject("scrīpting.FileSystemObject")
    set f = fso.OpenTextFile("C:\test.txt", 2, false) '第二个参数 2 表示重写,如果是 8 表示追加
    f.Write("写入内容")
    f.WriteLine("写入内容并换行")
    f.WriteBlankLines(3) '写入三个空白行(相当于在文本编辑器中按三次回车)
    f.Close()
    set f = nothing
    set fso = nothing

    判断文件是否存在
    dim fso
    set fso = CreateObject("scrīpting.FileSystemObject")
    If fso.FileExists("d:\test.txt") then
     msgbox "目标文件存在"
    else
     msgbox "目标文件不存在"
    end if

    移动文件
    dim fso
    set fso = CreateObject("scrīpting.FileSystemObject")
    call fso.MoveFile("d:\test2.txt", "e:\test111.txt") '两个参数的文件名部分可以不同. "e:\test111.txt"文件如果存在,则出错提示文件已经存在.

    复制文件
    dim fso
    set fso = CreateObject("scrīpting.FileSystemObject")
    call fso.CopyFile("d:\test2.txt", "e:\test111.txt") '两个参数的文件名部分可以不同. "e:\test111.txt"如果已经存在,也会被覆盖为新的。

    删除文件
    dim fso
    set fso = CreateObject("scrīpting.FileSystemObject")
    fso.DeleteFile("C:\test.txt")
    set fso = nothing

    创建文件夹
    dim fso
    set fso = CreateObject("scrīpting.FileSystemObject")
    fso.CreateFolder("C:\test") '目标文件夹的父文件夹必须存在
    set fso = nothing

    判断文件夹是否存在
    dim fso
    set fso = CreateObject("scrīpting.FileSystemObject")
    if fso.FolderExists("d:\Windows") then
       msgbox"目标文件夹存在"
    else
      msgbox"目标文件夹不存在"
    end if
    set fso = nothing

    删除文件夹
    dim fso
    set fso = CreateObject("scrīpting.FileSystemObject")
    fso.DeleteFolder("C:\test") '文件夹不必为空
    set fso = nothing
  • QTP的基本使用函数(转)

    lqp 发布于 2009-02-14 18:47:53

    QTP的基本使用函数:

    1,获取对话框相应的文字:GetVisibleText

    2,查找相应的字符串:instr(1,查找目标字符串,所查找的字符串)

    3,随机数的获取:Randomnumber.Value()或cstr(int(Rnd*10) 1)

    4,等待函数:Wait(秒数)

    5,获取数组下标:UBound(数组名)

    6,拆分数组:Split(MyString,",",-1,1)

    7,可执行步骤:OptionalStep

    8,报告信息:Reporter.ReportEvent3,"SaveStep","Outofcycle!"

    9,判断对话框是否存在:.exist

    10,事件过滤函数:Reporter.Filter=过滤条件(0,1,2,3),0代表显示所有的error和warning,1,显示error,2,显示waining,3,任何error和warning都不显示。

    11,循环函数:do…loopuntil,for…to…thennext,while.

    12,数据表格:DataTable,向外赋值,Dimaa=DataTable.value(“CellingName”,”ActionName”).

    13,获得对象属性的三种方法GetTOProperty,GetTOProperties,GetROProperty,GetTOProperty获得程序中对象当前的属性,GetTOProperties获得当前属性所有集合,GetROProperty获得的是录制时对象所获得的属性。

    14,检查点方法check和输出指定属性值output。

    15,函数Descrīption,可以获得某页面同标签的属性进行操作。

    16,函数nagative可以随便跳转页面到指定的URL。

    17,函数Object可以获得当前页面同属性的控件。

    18,函数Focus可以让控件获得焦点,函数Blur则是失去焦点,click单击,dbclick双击。

    19,函数setAttribute可以设置控件属性,getAttribute可以获得属性。

  • 录制点击右键菜单

    lqp 发布于 2009-02-23 20:14:41

    '打开记事本
    Window("Program Manager").WinListView("SysListView32").Activate "假木马.txt"
    '最小化记事本
    Window("记事本").Minimize
    Dialog("AA").Activate
    Dialog("AA").WinButton("Button").Click
    Dialog("AA").WinButton("Button_2").Click
    Dialog("AA").WinButton("Button_3").Click
    wait(10)

    '鼠标右键从第二个开始,各个都点击一次
    For  idx =2 to 5

    Dialog("AA").WinListView("WinListView").Select "Win32.Trojan.GrayPigeon.c", micRightBtn

    Set wshshell=createobject("wscript.shell")

       For i=1 to idx
       wshshell.sendkeys"{DOWN}"         '按下方向键N次
       Next
       wshshell.sendkeys"{ENTER}"       '点击此键
       Set wshshell = nothing

    Next

    备注:

    如果只是想点右键的某一个菜单,如右键的第四个菜单,则在录制右键点击后,得到如下脚本:

    Dialog("AA").WinListView("WinListView").Select "Win32.Trojan.GrayPigeon.c", micRightBtn

    添加如下脚本就能点击右键的第四个菜单

     Set wshshell=createobject("wscript.shell")

       For i=1 to 4
       wshshell.sendkeys"{DOWN}"         '按下方向键N次
       Next
       wshshell.sendkeys"{ENTER}"       '点击此键
       Set wshshell = nothing

     

  • 必懂SQL语句

    yxd2006 发布于 2008-12-30 16:17:21

    asc 按升序排列
    desc 按降序排列
    下列语句部分是Mssql语句,不可以在access中使用。
    SQL分类:
    DDL—数据定义语言(Create,Alter,Drop,DECLARE)
    DML—数据操纵语言(Select,Delete,Update,Insert)
    DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
    首先,简要介绍基础语句:
    1、说明:创建数据库
    Create DATABASE database-name
    2、说明:删除数据库
    drop database dbname
    3、说明:备份sql server
    --- 创建 备份数据的 device
    USE master
    EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
    --- 开始 备份
    BACKUP DATABASE pubs TO testBack
    4、说明:创建新表
    create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
    根据已有的表创建新表:
    A:create table tab_new like tab_old (使用旧表创建新表)
    B:create table tab_new as select col1,col2… from tab_old definition only
    5、说明:删除新表drop table tabname
    6、说明:增加一个列
    Alter table tabname add column col type
    注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
    7、说明:添加主键: Alter table tabname add primary key(col)
    说明:删除主键: Alter table tabname drop primary key(col)
    8、说明:创建索引:create [unique] index idxname on tabname(col….)
    删除索引:drop index idxname
    注:索引是不可更改的,想更改必须删除重新建。
    9、说明:创建视图:create view viewname as select statement
    删除视图:drop view viewname
    10、说明:几个简单的基本的sql语句
    选择:select * from table1 where 范围
    插入:insert into table1(field1,field2) values(value1,value2)
    删除:delete from table1 where 范围
    更新:update table1 set field1=value1 where 范围
    查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
    排序:select * from table1 order by field1,field2 [desc]
    总数:select count as totalcount from table1
    求和:select sum(field1) as sumvalue from table1
    平均:select avg(field1) as avgvalue from table1
    最大:select max(field1) as maxvalue from table1
    最小:select min(field1) as minvalue from table1
    11、说明:几个高级查询运算词
    A: UNION 运算符
    UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
    B: EXCEPT 运算符
    EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
    C: INTERSECT 运算符
    INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
    注:使用运算词的几个查询结果行必须是一致的。
    12、说明:使用外连接
    A、left outer join:
    左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
    sql: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
    B:right outer join:
    右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
    C:full outer join:
    全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
    其次,大家来看一些不错的sql语句
    1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
    法一:select * into b from a where 1<>1
    法二:select top 0 * into b from a
    2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
    insert into b(a, b, c) select d,e,f from b;
    3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
    insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
    例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
    4、说明:子查询(表名1:a 表名2:b)
    select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
    5、说明:显示文章、提交人和最后回复时间
    select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
    6、说明:外连接查询(表名1:a 表名2:b)
    select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
    7、说明:在线视图查询(表名1:a )
    select * from (Select a,b,c FROM a) T where t.a > 1;
    8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
    select * from table1 where time between time1 and time2
    select a,b,c, from table1 where a not between 数值1 and 数值2
    9、说明:in 的使用方法
    select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
    10、说明:两张关联表,删除主表中已经在副表中没有的信息
    delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
    11、说明:四表联查问题:
    select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
    12、说明:日程安排提前五分钟提醒
    sql: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5
    13、说明:一条sql 语句搞定数据库分页
    select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
    14、说明:前10条记录
    select top 10 * form table1 where 范围
    15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
    select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
    16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
    (select a from tableA ) except (select a from tableB) except (select a from tableC)
    17、说明:随机取出10条数据
    select top 10 * from tablename order by newid()

    18、说明:随机选择记录
    select newid()

    19、说明:删除重复记录
    Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

    20、说明:列出数据库里所有的表名
    select name from sysobjects where type='U'

    21、说明:列出表里的所有的
    select name from syscolumns where id=object_id('TableName')

    22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
    select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
    显示结果:
    type vender pcs
    电脑 A 1
    电脑 A 1
    光盘 B 2
    光盘 A 2
    手机 B 3
    手机 C 3

    23、说明:初始化表table1

    TRUNCATE TABLE table1

    24、说明:选择从10到15的记录
    select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
      
    随机选择数据库记录的方法(使用Randomize函数,通过SQL语句实现)
      对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决方案是建立如下所示的循环:
    Randomize
    RNumber = Int(Rnd*499) +1
     
    While Not objRec.EOF
    If objRec("ID") = RNumber THEN
    ... 这里是执行脚本 ...
    end if
    objRec.MoveNext
    Wend
     
      这很容易理解。首先,你取出1到500范围之内的一个随机数(假设500就是数据库内记录的总数)。然后,你遍历每一记录来测试ID 的值、检查其是否匹配RNumber。满足条件的话就执行由THEN 关键字开始的那一块代码。假如你的RNumber 等于495,那么要循环一遍数据库花的时间可就长了。虽然500这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个小型数据库了,后者通常在一个数据库内就包含了成千上万条记录。这时候不就死定了?
      采用SQL,你就可以很快地找出准确的记录并且打开一个只包含该记录的recordset,如下所示:
    Randomize
    RNumber = Int(Rnd*499) + 1
     
    sql = "Select * FROM Customers Where ID = " & RNumber
     
    set ōbjRec = ObjConn.Execute(SQL)
    Response.WriteRNumber & " = " & objRec("ID") & " " & objRec("c_email")
     
      不必写出RNumber 和ID,你只需要检查匹配情况即可。只要你对以上代码的工作满意,你自可按需操作“随机”记录。Recordset没有包含其他内容,因此你很快就能找到你需要的记录这样就大大降低了处理时间。
    再谈随机数
      现在你下定决心要榨干Random 函数的最后一滴油,那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random 示例扩展一下就可以用SQL应对上面两种情况了。
      为了取出几条随机选择的记录并存放在同一recordset内,你可以存储三个随机数,然后查询数据库获得匹配这些数字的记录:
    sql = "Select * FROM Customers Where ID = " & RNumber & " or ID = " & RNumber2 & " or ID = " & RNumber3
     
      假如你想选出10条记录(也许是每次页面装载时的10条链接的列表),你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成,但是 Select 语句只显示一种可能(这里的ID 是自动生成的号码):
    sql = "Select * FROM Customers Where ID BETWEEN " & RNumber & " AND " & RNumber & "+ 9"

      注意:以上代码的执行目的不是检查数据库内是否有9条并发记录。

     
    随机读取若干条记录,测试
    Access语法:Select top 10 * From 表名 orDER BY Rnd(id)
    sql server:select top n * from 表名 order by newid()
    mysqlelect * From 表名 order By rand() Limit n
    Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试, 现在记下以备后查)
    语法elect table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where ...
    使用SQL语句 用...代替过长的字符串显示
    语法:
    SQL数据库:select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename
    Access数据库:Select iif(len(field)>2,left(field,2)+'...',field) FROM tablename;
     
    Conn.Execute说明
    Execute方法
      该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:

    1.执行SQL查询语句时,将返回查询得到的记录集。用法为:
        Set 对象变量名=连接对象.Execute("SQL 查询语言")
       Execute方法调用后,会自动创建记录集对象,并将查询结果存储在该记录对象中,通过Set方法,将记录集赋给指定的对象保存,以后对象变量就代表了该记录集对象。

        2.执行SQL的操作性语言时,没有记录集的返回。此时用法为:
        连接对象.Execute "SQL 操作性语句" [, RecordAffected][, Option]
          ·RecordAffected 为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进行了操作。
          ·Option 可选项,该参数的取值通常为adCMDText,它用于告诉ADO,应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数,可使执行更高效。

    ·BeginTrans、RollbackTrans、CommitTrans方法
      这三个方法是连接对象提供的用于事务处理的方法。BeginTrans用于开始一个事物;RollbackTrans用于回滚事务;CommitTrans用于提交所有的事务处理结果,即确认事务的处理。
      事务处理可以将一组操作视为一个整体,只有全部语句都成功执行后,事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并恢复到处里前的状态。
      BeginTrans和CommitTrans用于标记事务的开始和结束,在这两个之间的语句,就是作为事务处理的语句。判断事务处理是否成功,可通过连接对象的Error集合来实现,若Error集合的成员个数不为0,则说明有错误发生,事务处理失败。Error集合中的每一个Error对象,代表一个错误信息
331/212>

数据统计

  • 访问量: 3944
  • 日志数: 13
  • 建立时间: 2008-12-16
  • 更新时间: 2009-03-11

RSS订阅

Open Toolbar