越来越觉得自己走测试这条路是对的,越来越觉得自己适合做测试,这么久以来兴趣一直在激发我前进,一直在寻找下一个站点,我相信测试路上我一定会走的很远,我的测试道路一定会很宽阔,努力就有收获,也希望还在测试路口迷惘的朋友,不要再犹豫了,因为你的犹豫不决,会使你错过很多~~~~~喜欢就去just do it ,因为只有尝试了才知道自己适不适合,喜不喜欢。如果一味的问别人,永远找不到最终的答案。因为每个人的感觉不一样,每个人的情况不一样,每个人的前提条件都不一样,你会得到不同的答案,这样只能会使你更迷茫~~~~

发布新日志

  • web的安全性(转贴)

    2010-01-04 09:19:04

    一个完整的Web安全体系测试可以从部署与基础结构,输入验证,身份验证,授权,配置管理,敏感数据,会话管理,加密,参数操作,异常管理,审核和日志记录等几个方面入手.
    数据加密: 某些数据需要进行信息加密和过滤后才能进行数据传输,例如用户信用卡信 息、用户登陆密码信息等。
    此时需要进行相应的其他操作,如存储到数据库、解密发送要用户电子邮箱或者客户浏览器。
    目前的加密算法越来越多,越来越复杂,但一般数据加密的过程时可逆的,也就是说能进行加密,同时需要能进行解密!
    登录: 一般的应用站点都会使用登录或者注册后使用的方式,因此,必须对用户名 和匹配的密码进行校验,以阻止非法用户登录。
    在进行登陆测试的时候,需要考虑输入的密码是否对大小写敏感、是否有长度和条件限制,最多可以尝试多少次登录,
    哪些页面或者文件需要登录后才能访问/下载等。超时限制:WEB应用系统需要有是否超时的限制,
    当用户长时间不作任何操作的时候, 需要重新登录才能使用其功能。

    SSL: 越来越多的站点使用SSL安全协议进行传送。SSL是Security Socket Lauer(安全套接字协议层)的缩写,
    是由Netscape首先发表的网络数据安全传输协议。SSL是利用公开密钥/私有密钥的加密技术。
    (RSA),在位于HTTP层和TCP层之间,建立用户与服务器之间的加密通信,确保所传递信息的安全性。
    SSL是工作在公共密钥和私人密钥基础上的,任何用户都可以获得公共密钥来加密数据,
    但解密数据必须要通过相应的私人密钥。
    进入一个SSL站点后,可以看到浏览器出现警告信息,然后地址栏的http变成https,
    在做SSL测试的时候,需要确认这些特点,以及是否有时间链接限制等一系列相关的安全保护。
    服务器脚本语言:脚本语言是常见的安全隐患。每种语言的细节有所不同。有些 脚本允许访问根目录。其他只允许访问邮件服务器,
    但是经验丰富的黑客可以将服务器用户名和口令发送给他们自己。找出站点使用了哪些脚本语言,并研究该语言的缺陷。
    还要需要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。
    最好的办法是订阅一个讨论站点使用的脚本语言安全性的新闻组。
    注:黑客利用脚本允许访问根目录的这个安全隐患特性攻击网站。
    这个网站包含了脚本代码(有允许访问根目录的特性)就可能有这个安全隐患。
    日志文件: 在服务器上,要验证服务器的日志是否正常工作,
    例如CPU的占用率是否很高,是否有例外的进程占用,所有的事务处理是否被记录等。
    目录: WEB的目录安全是不容忽视的一个因素。
    如果WEB程序或WEB服务器的处理不适当,通过简单的URL替换和推测,会将整个WEB目录完全暴露给用户,
    这样会造成很大的风险和安全性隐患。
    我们可以使用一定的解决方式,如在每个目录访问时有index.htm,或者严格设定WEB服务器的目录访问权限,
    将这种隐患降低到最小程度。
    注:每个目录访问时有index.htm
    目的: 通过首页中的登陆验证功能进行访问权限控制。
  • 网站测试与评估——如何写web测试用例

    2009-11-23 15:50:58

    *1.1 功能测试*
    l         *概述*
    :确保测试的功能正常,如导航,数据输入,处理、检索是否正确,以及业务规则的实施是否恰当。即对交互的输出或结果进行分析,以此来核实应用程序及其内部进程,
    这是目前的测试重点。
    l         *目标*:利用有效的和无效的数据来执行各个用例流,以核实以下内容:
    ²        在使用有效数据时得到预期的结果
    ²        在使用无效数据时显示相应的错误消息或警告消息。

    单一界面测试的参考表格如下:

       *编号*
     *场景/条件*
     *操作*
     *预期结果*
     1.
     用户通过用户界面输入信息
     输入任何东西,重填
     客户端页面恢复到初始状态
     2.
     用户通过用户界面输入信息
     输入刚好等于字数限制的正确信息,提交
     1.所填信息正确保存到相应的数据库表中
    2.客户端提示提交成功
     3.
     用户通过用户界面输入信息
     输入略超过字数限制的正确信息,提交
     1.所填信息不能正确保存到相应的数据库表中
    2.客户端提示字数超长
    3.引导用户定位超长输入
     4.
     用户通过用户界面输入信息
     输入略少于字数限制的正确信息,提交
     1.所填信息正确保存到相应的数据库表中
    2.客户端提示提交成功
     5.
     用户通过用户界面输入信息
     输入非法字符,提交
     1.     所填信息不能保存到相应的数据库表中
    2.     客户端提示有错误输入
    3.     引导用户定位错误输入
     6.
     用户通过用户界面输入信息
     输入为空,提交
     1.应有必填项判断
    2.客户端提示必填项不能为空
    3.引导用户定位必填项
    4.所填信息不能保存到相应的数据库表中
     7.
     用户通过用户界面输入信息
     该输入汉字的输入英文字符,提交
    注:其余类同
     1.客户端提示错误输入
    2.引导用户定位错误输入项
    3.所填信息不能保存到相应的数据库表中

    具体功能测试参考表格如下:

    功能A描述

    用例目的

    前提条件

    输入/动作

    期望的输出/相应

    实际情况

    示例:典型值…

    示例:边界值…

    示例:异常值…

    功能B描述

    用例目的

    前提条件

    输入/动作

    期望的输出/相应

    实际情况

    ……

    注:除测试所提供的功能外,还需添加Cookies测试

     参考如下:

    Cookies通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用Cookies访问了某一个应用系统时,Web
    服务器将发送关于用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。

    如果Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作。测试的内容可包括Cookies
    是否起作用,是否按预定的时间进行保存,刷新对Cookies有什么影响等。

     1.2 用户界面测试

    l         *概述*:用于核实用户与网站界面之间的交互是否正常

    l         *目标*:核实下列内容

    ²        确保各种浏览以及各种访问方法(鼠标移动、快捷键等)都使用正常

    ²        确保窗口对象及其特征(菜单、大小、位置、状态和中心)都符合标准等

           参考表格如下:

      检查项

    测试人员的类别及其评价

    窗口切换、移动、改变大小时正常吗?

    各种界面元素的文字正确吗?(如标题、提示等)

    各种界面元素的状态正确吗?(如有效、无效、选中等状态)

    各种界面元素支持键盘操作吗?

    各种界面元素支持鼠标操作吗?

    对话框中的缺省焦点正确吗?

    数据项能正确回显吗?

    对于常用的功能,用户能否不必阅读手册就能使用?

    执行有风险的操作时,有"确认"、"放弃"等提示吗?

    操作顺序合理吗?

    按钮排列合理吗?

    导航帮助明确吗?

    提示信息规范吗?

    以下为软件界面测试的一些规则,亦可部分作为WEB用户界面测试的一些参考。

      界面测试
      界面设计与测试规则

    界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。目前界面的设计引起软件设计人员的重视的程度远远不够,直到最近网页制作的兴起,才受到专家的青睐。而且设计良好的界面由于需要具有艺术美的天赋而遭拒绝。目前流行的界面风格有三种方式:多窗体、单窗体以及资源管理器风格,无论那种风格,以下规则是应该被重视的。

      1:易用性:

    按钮名称应该易懂,用词准确,屏弃没楞两可的字眼,要与同一界面上的其他按钮易于区分,能望文知意最好。理想的情况是用户不用查阅帮助就能知道该界面的功能并进行相关的正确操作。

      易用性细则:
      1):完成相同或相近功能的按钮用Frame框起来,常用按钮要支持快捷方式。
      2):完成同一功能或任务的元素放在集中位置,减少鼠标移动的距离。
      3):按功能将界面划分局域块,用Frame框括起来,并要有功能说明或标题。
      4):界面要支持键盘自动浏览按钮功能,即按Tab键的自动切换功能。
      5):界面上首先应输入的和重要信息的控件在Tab顺序中应当*前,位置也应放在窗口上较醒目的位置。
      6):同一界面上的控件数最好不要超过10个,多于10个时可以考虑使用分页界面显示。
      7):分页界面要支持在页面间的快捷切换,常用组合快捷键Ctrl+Tab
      8):默认按钮要支持Enter及选操作,即按Enter后自动执行默认按钮对应操作。
      9):可写控件检测到非法输入后应给出说明并能自动获得焦点。
      10):Tab键的顺序与控件排列顺序要一直,目前流行总体从上到下,同时行间从左到右的方式。
      11):复选框和选项框按选择几率的高底而先后排列。
      12):复选框和选项框要有默认选项,并支持Tab选择。
      13):选项数相同时多用选项框而不用下拉列表框。
      14):界面空间较小时使用下拉框而不用选项框。
      15):选项数叫少时使用选项框,相反使用下拉列表框。
      16):专业性强的软件要使用相关的专业术语,通用性界面则提倡使用通用性词眼。

      还有[转贴]   界面测试

      界面测试
      界面设计与测试规则

    界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。目前界面的设计引起软件设计人员的重视的程度远远不够,直到最近网页制作的兴起,才受到专家的青睐。而且设计良好的界面由于需要具有艺术美的天赋而遭拒绝。目前流行的界面风格有三种方式:多窗体、单窗体以及资源管理器风格,无论那种风格,以下规则是应该被重视的。

      1:易用性:

    按钮名称应该易懂,用词准确,屏弃没楞两可的字眼,要与同一界面上的其他按钮易于区分,能望文知意最好。理想的情况是用户不用查阅帮助就能知道该界面的功能并进行相关的正确操作。

      易用性细则:
      1):完成相同或相近功能的按钮用Frame框起来,常用按钮要支持快捷方式。
      2):完成同一功能或任务的元素放在集中位置,减少鼠标移动的距离。
      3):按功能将界面划分局域块,用Frame框括起来,并要有功能说明或标题。
      4):界面要支持键盘自动浏览按钮功能,即按Tab键的自动切换功能。
      5):界面上首先应输入的和重要信息的控件在Tab顺序中应当*前,位置也应放在窗口上较醒目的位置。
      6):同一界面上的控件数最好不要超过10个,多于10个时可以考虑使用分页界面显示。
      7):分页界面要支持在页面间的快捷切换,常用组合快捷键Ctrl+Tab
      8):默认按钮要支持Enter及选操作,即按Enter后自动执行默认按钮对应操作。
      9):可写控件检测到非法输入后应给出说明并能自动获得焦点。
      10):Tab键的顺序与控件排列顺序要一直,目前流行总体从上到下,同时行间从左到右的方式。
      11):复选框和选项框按选择几率的高底而先后排列。
      12):复选框和选项框要有默认选项,并支持Tab选择。
      13):选项数相同时多用选项框而不用下拉列表框。
      14):界面空间较小时使用下拉框而不用选项框。
      15):选项数叫少时使用选项框,相反使用下拉列表框。
      16):专业性强的软件要使用相关的专业术语,通用性界面则提倡使用通用性词眼。

      还有:   规范性、合理性、美观与协调性、菜单设置、独特性、快捷方式的组合、容错性考虑、多窗口的应用与系统资源。
  • 测试过程中进行Bug描述

    2009-11-04 17:27:00

    1、术语解释

      测试程序:提供给测试组测试的程序;
      测试计划:对测试程序(构件、应用程序、系统等)及其目标进行简要说明;
      测试bug:不符合测试需求的错误,也就是缺陷;
      错误跟踪系统:是某个程序或应用系统,使得项目组可以报告、管理以及分析错误报告和错误趋势,如RationalClearQuest就是一个错误跟踪系统。
      2、为什么要提交bug
      在得到一个详尽的测试程序后,剩下的工作就是执行测试计划了。但是由于任何由人编写的程序都不可避免的存在着不符合测试需求的错误,也就是bug。因 此需要一个方法来跟踪、分析和展示那些测试活动,避免偏离最小。这种方法称之为错误跟踪系统。它主要是有效的管理缺陷,实现以下作用:
      1)减少由于缺陷报告不明确而被开发组驳回的情况;
      2)加快缺陷的处理速度;
      3)提高测试的可信度;
      4)加强测试组与开发组在整个项目过程中的团队合作
      3、如何才能提交好的测试bug
      在有些组织里,程序员几乎会把一半的测试bug返回给测试组,因为那些错误不可再现、没有发现错误、同设计要求一致,或者错误报告根本无法操作。如果 错误报告有如此高的返回率,基本可以认为是过程崩溃,需要立即解决:因为编写这些报告浪费了时间;会影响程序员和测试人员之间的团队凝聚力;最糟糕的是失 去改进产品质量的机会。
      有些错误总是不可再现的或提出质疑的。有些错误只是间断地在模糊的或极端的条件下表现出来。有时候,测试环境和程序员之间的不一致会导致“在我的系统 上工作良好”的反应。在需求不清楚的项目中,在一定的测试条件下,对“正确”行为的观点可以存在合理的不同。有时候,当真正的问题在于糟糕的测试过程、测 试数据或不正确的测试用例时,测试人员可能错误解释测试测试结果和报告错误。
    为了防止这类问题,要提交好的测试bug,作为一个好的测试人员,必须遵循以下八个步骤:
      1) 结构:无论你是做探索性的或是描述性的、手工的或自动的测试,都要认真仔细的测试;
    2)再现:尽量三次再现故障。如果问题是间断的,那么最好报告问题发生的概率;例如,每3次出现一次,每3次出现2次等;
    3) 推广:确定系统其他部分是否可能出现这种错误,以及使用不同的数据是否可能出现这种问题,特别是那些存在严重影响的问题。
    4)总结:简要描述客户或用户的质量体验和观察到的一些特征。
    5)压缩:精简任何不必要的信息,特别是冗余的测试步骤。
    6)去除歧义:使用清晰的语言,尤其要避免使用那些有多个不同或相反含义的词汇。
    7)中立:公正地表达自己的意思,对错误及其特征的事实进行描述,避免夸张或忽略的语句,引起过度的注意力或忽视。
    8)评审:至少有一个同行,最好是一个有经验的测试工程师或测试经理,在你提交测试报告或测试评估报告之前先自己读一遍。
      好的测试bug描述是告诉读者测试人员发现了什么,而不是测试人员做了什么。因此只需要根据上述八个步骤写下最少的必需重现步骤。
      4、如何提交bug
      一个好的错误跟踪系统包括了错误的必要信息,如果做得不好,会造成迷惑,并误导读者。好的故障描述应该包括十个基本部分:标题、项目、所属模块、优先级、重要性、异常等级、可重复性、现象、操作过程和附件。
      ①标题
      使用一两句话来描述错误,告诉经理、开发人员以及其他读者为什么应该关心该问题。好的标题应该着重于出现的bug现象。但是过于简洁易引起误导,使得 原本重要的问题被忽视。因此必须应该采用简洁、切中要害的概要,这样才能引起读者的重视。不重要的就描述比较轻微,例如:“联系人的email没有检查合 法性”;重要的就要体现比较严重,例如:“填了运营商仍然提示运营商不能为空,使得无法进行下一步的操作”,会更容易让开发人员理解究竟是什么问题及其重 要性,并及时处理。
    ②项目
    是指该错误属于哪一个项目,归哪个项目组解决,使不同的项目组看到和及时定位自己项目的错误。
    ③所属模块
    是指准确说明发异常等级生错误的模块,切忌发生错误指派模块,导致后续流程错误;
    ④优先级
      分为以下4级:1级:“马上解决”,表示问题必须马上解决,否则系统根本无法达到预定的需求;2级:“高度重视”,表示 有时间就要马上解决,否则系统偏离需求较大或预定功能不能正常实现;3级:“正常处理”,即进入个人计划解决,表示问题不影响需求的实现,但是影响其他使 用方面,比如页面调用出错,调用了错误的数据库等;4级:“低优先级”,即问题在系统发布以前必须确认解决或确认可以不予解决。
      ⑤重要性
      分为以下5级:1级:“非常严重”,表示缺陷不修改整个系统流程不能继续;2级:“比较严重”,表示缺陷不修改不影响系统其他流程,但是本模块流程不 能继续;3级:“一般”,表示缺陷不影响流程;4级:“轻微”,表示缺陷可以延期解决;5级:“优化”,表示修改以后流程会更好。
    http://www.rjgc.net/control/content/content.php?nid=17482
  • 数据库测试的种类和测试方法简介

    2009-11-04 15:57:21


    从测试过程的角度来说我们也可以把数据库测试分为:

      系统测试
      传统软件系统测试的测试重点是需求覆盖,而对于我们的数据库测试同样也需要对需求覆盖进行保证。那么数据库在初期设计中也需要对这 个进行分析,测试.例如存储过程,视图,触发器,约束,规则等我们都需要进行需求的验证确保这些功能设计是符合需求的.另一方面我们需要确认数据库设计文 档和最终的数据库相同,当设计文档变化时我们同样要验证改修改是否落实到数据库上。
      这个阶段我们的测试主要通过数据库设计评审来实现。
      集成测试
      集成测试是主要针对接口进行的测试工作,从数据库的角度来说和普通测试稍微有些区别对于数据库测试来说,需要考虑的是数据项的修改 操作、数据项的增加操作、数据项的删除操作、数据表增加满、数据表删除空、删除空表中的记录、数据表的并发操作、针对存储过程的接口测试、结合业务逻辑做 关联表的接口测试。
      同样我们需要对这些接口考虑采用等价类、边界值、错误猜测等方法进行测试。
      单元测试
      单元测试侧重于逻辑覆盖,相对对于复杂的代码来说,数据库开发的单元测试相对简单些,可以通过语句覆盖和走读的方式完成。
      系统测试相对来说比较困难,这要求有很高的数据库设计能力和丰富的数据库测试经验。而集成测试和单元测试就相对简单了。
      而我们也可以从测试关注点的角度对数据库进行分类:
      功能测试
      对数据库功能的测试我们可以依赖与工具进行:
      DBunit:一款开源的数据库功能测试框架,可以使用类似与Junit的方式对数据库的基本操作进行白盒的单元测试,对输入输出进行校验。
      QTP:大名鼎鼎的自动测试工具,通过对对象的捕捉识别,我们可以通过QTP来模拟用户的操作流程,通过其中的校验方法或者结合数据库后台的监控对整个数据库中的数据进行测试。个人觉得比较偏向灰盒。
      DataFactory:一款优秀的数据库数据自动生成工具,通过它你可以轻松的生成任意结构数据库,对数据库进行填充,帮助你生成所需要的大量数据从而验证我们数据库中的功能是否正确。这是属于黑盒测试。
      数据库性能虽然我们的硬件最近几年进步很快,但是我们需要处理的数据以更快的速度在增加。几亿条记录的表格在现在是司空见惯的,如此庞大的数据量在大 量并发连接操作时,我们不能像以前一样随意的使用查询,连接查询,嵌套查询,视图,这些操作如果不当会给系统带来非常巨大的压力,严重影响系统性能。
      性能优化分4部分:
      1、物理存储方面
      2、逻辑设计方面
      3、数据库的参数调整
      4、SQL语句优化
      性能测试:
      我们如何对性能方面进行测试呢,业界也提供了很多工具通过数据库系统的SQL语句分析工具,我们可以分析得到数据库语句执行的瓶颈,从而优化SQL语句。
      Loadrunner:这个不用多说,我们可以通过对协议的编程来对数据库做压力测试。
      Swingbench:(这是一个重量级别的feature,类似LR,而且非常强大,只不过专门针对oracle而已)数据库厂商也意识到这点,例如oracle11g已经提供了real applicationtest,提供数据库性能测试,分析系统的应用瓶颈。
      还有很多第三方公司开发了SQL语句优化工具来帮助你自动的进行语句优化工作从而提高执行效率。
      安全测试
      软件日益复杂,而数据又成为了系统中重中之重的核心,从以往对系统的破坏现在更倾向于对数据的获取和破坏。而数据库的安全被提到了最前端自从SQL 注入攻击被发现,
    http://www.rjgc.net/control/content/content.php?nid=17611
  • WEB测试资料

    2009-11-04 14:48:20

    1页面部分

      (1) 页面清单是否完整(是否已经将所需要的页面全部都列出来了)
      (2) 页面是否显示(在不同分辨率下页面是否存在,在不同浏览器版本中页面是是否显示)
      (3) 页面在窗口中的显示是否正确、美观(在调整浏览器窗口大小时,屏幕刷新是否正确)
      (4) 页面特殊效果(如特殊字体效果、动画效果)是否显示
      (5) 页面特殊效果显示是否正确
      2 页面元素部分
      (1)页面元素清单(为实现功能,是否将所需要的元素全部都列出来了,如按钮、单选框、复选框、列表框、超连接、输入框等等)
      (2)素是否显示(元素是否存在)
      (3)页面元素是否显示正确(主要针对文字、图形、签章)
      (4)页面元素的外形、摆放位置(如按钮、列表框、核选框、输入框、超连接等)
      (5) 页面元素基本功能是否实现(如文字特效、动画特效、按钮、超连接)
      (6) 页面元素的容错性列表(如输入框、时间列表或日历)
      (7) 页面元素的容错性是否存在
      (8) 页面元素的容错性是否正确
      3 功能部分
      (1) 数据初始化是否执行
      (2) 数据初始化是否正确
      (3) 数据处理功能是否执行
      (4) 数据处理功能是否正确
      (5) 数据保存是否执行
      (6) 数据保存是否正确
      (7) 是否对其他功能有影响
      (8) 如果影响其他功能,系统能否作出正确的反应
      (9) 其他错误
      (10) 对模块的具体功能进行测试时可以列出功能模块的所有功能,进行排列组合,测试所有情况
      如:某一功能模块具有最基本的增删改查功能,则需要进行以下测试
      单项功能测试(增加、修改、查询、删除)
      增加——>增加——>增加 (连续增加测试)
      增加——>删除
      增加——>删除——>增加 (新增加的内容与删除内容一致)
      增加——>修改——>删除
      修改——>修改——>修改 (连续修改测试)
      修改——>增加 (新增加的内容与修改前内容一致)
      修改——>删除
      修改——>删除——>增加 (新增加的内容与删除内容一致)
      删除——>删除——>删除 (连续删除测试)
      (11)查询功能分为两种情况,验证操作结果。
      一、打开页面时自动显示结果,则不特别强调;
      二、需要手工操作进行查询,则每次在其他功能完成后进行。
      4 提示信息
      (1) 成功、失败提示
      (2) 操作结果提示
      (3) 确认提示
      (4) 危险操作、重要操作提示
      (5) 返回页面 提示后显示的页面
      5 容错性
      注意以下几种情况
      (1) 为空、非空
      (2) 唯一性
      (3 )字长、格式
      (4) 数字、邮政编码、金额、电话、电子邮件、ID号、密码
      (5) 日期、时间
      (6) 特殊字符 (对数据库)英文单、双引号,&符号
      6 权限部分
      功能权限: 指定用户可以使用那些功能,不能使用那些功能
      数据权限: 指定用户可以处理那些数据,不可以处理那些数据。可以合并到功能测试
      操作权限: 在逻辑关系上,操作前后顺序、数据处理情况。可以合并到功能测试
      权限变化: 可以合并到功能测试
      (1) 功能权限是否存在
      (2)功能权限是否正确
      (3) 数据权限是否存在
      (4) 数据权限是否正确
      (5)操作权限是否存在
      (6) 操作权限是否正确
      (7) 引起权限变化的功能列表
      (8) 功能权限变化还是数据权限变化,或两者兼有
      (9) 权限变化是否正确
      7 键盘操作
      (1) Tab键的使用
      (2) 上下方向键的使用
      (3) Enter键的使用
      (4) 系统设定快捷键的使用(如果设置有快捷键)
      8 测试中还应注意的其他事项
      (6) 完整性:是否是一个整体,没有功能缺损
      (7) 易用性:使用是否方便
      (8) 一致性:类似的问题用类似的方法处理
      (9) 提示信息:提示信息是否完整、正确、详细
      (10) 帮助信息:是否提供帮助信息,帮助信息的表现形式(页面文字、提示信息、帮助文件),帮助信息是否正确、详细
      (11) 兼容性:包括操作系统兼容和应用软件兼容,可能还包括硬件兼容
      (12) 可扩展性:是否由升级的余地,是否保留了接口
      (13) 稳定性:运行所需的软硬件配置,占用资源情况,出现问题时的容错性,对数据的保护
      (14) 运行速度:运行的快慢,带宽占用情况
      有几点:
      1.功能点测试:是否满足需求所要求的功能
      2.字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错.
      3.字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.
      4.标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确.
      5.中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错.
      6.信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.
      7.界面测试:界面的正确性、一致性、友好性、易用性。
      用户界面测试是从最终的使用者用户的角度来看软件,软件难以理解,不易使用就是软件缺陷。可以从以下几个方面重点来检查用户界面:
      1.易用性检查:确保软件易于理解,方便使用。
      2.一致性检查:
      a.注意系统页面的风格是否一致,如字的大小、颜色、字体要相同。
      b.提示信息的表达方式是否一致。
      c.按钮排列顺序是否一致。
      d.back, cancel等按钮跳转页面处理是否一致。
      e.各字段的名称,位置、长度、类型是否和设计文档要求一致,如Employee No和LoginName不一致。
      3.正确性检查:检查页面上的form, button, table, header, footer,提示信息,还有其他文字拼写,句子的语法等是否正确。
      4.友好性检查:
      a.提示信息是否友好.
      b.系统应该在用户执行错误的操作之前提出警告,提示信息.
      c.页面分辨率检查,在各种分辨率浏览系统检查系统界面友好性。
      5.合理性检查:做delete, update, add, cancel, back等操作后,查看信息回到的页面是否合理。
      6.检查本地化是否通过:英文版不应该有中文信息,英文翻译准确,专业。
      7.页面最大化检查:测试最大化/最小化/还原时页面是否做了对应的处理。
    http://www.rjgc.net/control/content/content.php?nid=11715
  • 网站测试技术简介

    2009-11-04 14:34:03

    1 概述

      在一个软件项目开发中,系统测试是保证整体项目质量的重要一环,本文将就网站的测试技术及相应的自动测试工具做一个简要的介绍。主要就如下几个方面进行探讨:
      功能测试
      性能测试
      安全性测试
      稳定性测试
      浏览器兼容性测试
      可用性/易用性测试
      链接测试
      代码合法性测试
      2 测试内容
      2.1 功能测试
      在实际工作中,功能在每一个系统中的具有其不确定性,而我们不可能采用穷举的方法进行测试,因而导致了功能测试较为困难,我们依据80/20原则(即80%的错误存在于系统的20%的部分)对于测试用例的设计采用如下两种方法
      2.1.1 白盒测试
      白盒测试即使用程序设计的控制结构导出测试用例。基于目前的现状我们采用基本路径测试方法进行白盒测试,此种方法简单高效。基本路径测试方法的简单说明如下:
      ¨ 首先通过系统设计的流程图导出数据流图
      ¨ 根据数据流图计算其环形复杂性
      V(G)=E-N+2
      或 V(G)=P+1
      V(G):环形负责性
      E :流图中边的数量
      N :流图中节点的数量
      P :流图中判定节点的数量
      ¨ 我们设定V(G)条路径
      ¨ 我们设计V(G)条路径的模拟数据
      ¨ 根据数据进行相应的测试
      2.1.2 黑盒测试
      黑盒测试即派生出执行程序所有功能需求的输入条件,从而导出测试用例,进行测试的方法,黑盒测试用于辅助白盒测试。
      我们采用等价划分的方法进行测试,即为将程序的输入域划分为数据类,以便导出测试用例。一般情况下输入条件为:一个特定的数值、一个数值域、一组相关值或者一个布尔条件。
      2.1.3 网站功能测试
      对于网站的测试而言,每一个独立的功能模块需要单独的测试用例的设计导出,主要依据为《需求分析》,对于应用程序模块需要设计者提供基本路径测试法的测试用例
      具有测试用例后可以采用OpenSTA(Open System Testing Architecture)进行自动化测试
      2.2 性能测试
      网站的性能测试对于网站的运行而言异常重要,但是目前对于网站的性能测试做的不够,我们在进行系统设计时也没有一个很好的基准可以参考,因而建立网站的性能测试的一整套的测试方案将是至关重要的。
      网站的性能测试主要从两个方面进行:负荷测试(Load)和压力测试(Stress),负荷测试指的是进行一些边界数据的测试,压力测试更像是恶意测试,压力测试倾向应该是致使整个系统崩溃。
      性能测试可以采用相应的工具进行自动化测试,我们目前采用如下工具
      ab -----Apache 的测试工具
      OpenSTA—开发系统测试架构
      2.3 安全性测试
      目前网络安全问题日益重要,特别对于有交互信息的网站及进行电子商务活动的网站尤其重要。目前我们的测试没有涵盖网站的安全性的测试,我们拟定采用工具来测定,工具如下
      SAINT------- Security Administrator's Integrated Network Tool
      此工具能够测出网站系统的相应的安全问题,并且能够给出安全漏洞的解决方案,不过是一些较为常见的漏洞解决方案。
      2.4 稳定性测试
      网站的稳定性测试是指网站的运行中整个系统是否运行正常,目前没有更好的测试方案,主要采用将测试服务器长时间运转进行测试。
      2.5 浏览器兼容性测试
      通过白盒测试或者黑盒测试导出的测试用例,采用相应的工具进行测试,可以采用OpenSTA进行测试,此测试工具可以采用不同的浏览器进行测试。
      2.6 可用性/易用性测试
      可用性/易用性方面目前我们只能采用手工测试的方法进行评判,而且缺乏一个很好的评判基准进行,此一方面需要大家共同讨论。
      2.7 链接测试
      超级链接对于网站用户而言意味着能不能流畅的使用整个网站提供的服务,因而链接将作为一个独立的项目进行测试。目前我们已经有了一个测试工具
      Xenu------主要测试链接的正确性的工具
      可惜的是对于动态生成的页面的测试会出现一些错误。
      2.8 代码合法性测试
      代码合法性测试主要包括2个部分:程序代码合法性检查与显示代码合法性检查
      ¨ 程序代码合法性检查
      程序代码合法性检查主要标准为《intergrp小组编程规范》,目前采用由SCM管理员进行规范的检查,未来期望能够有相应的工具进行测试。
      ¨ 显示代码合法性检查
      显示代码的合法性检查,主要分为Html、JavaScript、Css代码检查,目前采用
      HTML代码检查------采用CSE HTML Validator进行测试
      JavaScript、Css也可以在网上下载相应的测试工具。
      3 测试工具
      OpenSTA
      主要做性能测试的负荷及压力测试,使用比较方便,可以编写测试脚本,也可以先行自动生成测试脚本,而后对于应用测试脚本进行测试。
      SAINT
      网站安全性测试,能够对于指定网站进行安全性测试,并可以提供安全问题的解决方案。
      CSE HTML Validator
      一 个有用的对于HTML代码进行合法性检查的工具
      Ab(Apache Bench)
      Apache自带的对于性能测试方面的工具,功能不是很多,但是非常实用。
      Crash-me
      Mysql自带的测试数据库性能的工具,能够测试多种数据库的性能。
      上述工具除Ab及Crash-me外均可在以下目录中找得到
      \smbserver\apps\linuxapp\intergrp
      ab及Crash-me请至相应的网站上察看相应的资料}
      4 后记
      此文只是对于网站的测试方面做了一个简单的介绍,提供的工具比较少,但是可以保证能够使用(当然都是可以从网上免费得到的),另外还有很多测试工具是 需要Money的,大家有兴趣可以试用,对于上述提到的测试工具我也只是做了一个初步的调研,详细的功能说明请察看相关的说明文档。
      对于网站的测试中比较重要的还有一个部分就是对于数据库的测试,由于对于数据库性能测试较好的工具需要一些Money因而我们采用Mysql的 Crash-me,但是同时也存在一个问题就是对于不同的数据库的测试采用第三方的工具较好。因而大家可以对于其他数据库性能测试的工具进行研究。
    http://www.rjgc.net/control/content/content.php?nid=17981
  • 软件测试中输入框测试考虑侧重点

    2009-08-28 10:12:22

    一、普通输入框字段校验测试   二、邮箱输入框字段校验测试

      三、验证码输入框字段校验测试(假设是4位数字)

      四、手机号码输入框字段校验测试(假设限制16个字符,只能输入数字)

      异常情况包括如下:

      一、普通输入框字段校验测试

      01)不输入,空内容

      02)输入1个字符

      03)若输入框有长度限制为N个字符,测试N-1个字符,N个字符,N+1个字符,N+N+...(超长)这几个边界值

      还需要测试下通过复制大于长度的值粘贴进去看是否能输入

      04)输入半角/全角空格

      05)输入半角/全角,大写/小写英文字符

      06)输入半角/全角数字

      07)输入简体中文字符(默认全角)

      08)输入繁体中文字符(默认全角)

      09)输入半角特殊字符:!@#¥%……&*()

      10)输入全角特殊字符:!@#$%^&*()

      11)输入html字符保持:&nbsp空格的转义字符;<scrīpt></scrīpt>;<br>;<tr>;<td>;< /tr>;</td>;</html>;</body>;</table>

      12)输入Javascrīpt函数:<b>Hello</b>,alert("hello")

      13)在需要密码验证,或者需要二次输入确认的地方,通过复制粘贴第一次的输入内容应该是不能通过的

      14)高危词,违禁词,敏感词

      15)输入正常内容的前,后,中间加入多个空格,看保存时是否会过滤掉或过滤为一个,是否会引起保存问题,是否算入长度计算

      16)输入日文字符

      二、邮箱输入框字段校验测试

      01)输入合理的英文及数字字符组成的正确格式

      02)格式正确的前提下输入第一部分中的异常字段校验

      03)输入无@的格式,如:ab.com

      04)输入@前无内容的格式,如@b.com

      05)输入@后无内容的格式,如a@

      06)输入@前后均没有内容的格式,如@

      07)输入没有域名的格式,如a@b.,a@b

      08)输入email中有多个@的,如a@@b.com,a@b@c.d

      09)输入@后面直接跟域名的,如a@.com

      10)输入@后面有多个分隔符的,如a@b.c.d,a@b.c.d.e

      11)输入@前面有分隔符的情况,如a.b@c.d,a.b.c@d.e,a.b@c,a.b.c@d

    三、验证码输入框字段校验测试(假设是4位数字)

      01)不输入,空内容

      02)空格输入

      03)输入空格+正确验证码,空格出现在开头,中间,结尾均需要测试

      04)输入4位其他非数字内容

      05)输入第一部分中的异常字段校验

      06)输入前3位或后3位验证码正确数字

      07)输入4位正确验证码+其他数字

      四、手机号码输入框字段校验测试(假设限制16个字符,只能输入数字)

      01)不输入,空内容

      02)空格输入

      03)输入空格+数字,空格出现在开头,中间,结尾均需要测试

      04)输入其他非数字内容

      05)输入第一部分中的异常字段校验

      06)输入1个数字

      07)输入16位数字

      08)输入超过17位数字

      09)输入超长全数字测试

      10)输入空格+数字,空格出现在开头,中间,结尾均需要测试


  • UI和GUI的区别

    2009-08-27 17:23:14

    UI
    UI的本意是用户界面,是英文User和interface的缩写。从字面上看是用户与界面2个组成部分,但实际上还包括用户与界面之间的交互关系,所以这样可分为3个方向,他们分别是:用户研究、交互设计、界面设计。 UI的本意是用户界面( user interface ) ,概括成一句话就是——人和工具之间的界面。这个界面实际上是体现在我们生活中的每一个环节的,例如我们切菜的时候刀把手就是这个界面,开车时候方向盘和仪表盘就是这个界面 ,看电视的时候遥控器和屏幕就是这个界面,用电脑的时候键盘和显示器就是这个界面。于是我们可以把UI可以分成两大类:硬件界面和软件界面。

    GUI

    GUI( Graphical User Interface )是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分析的人机系统工程,强调人—机—环境三者作为一个系统进行总体设计。

    这种面向客户的系统工程设计其目的是优化产品的性能,使操作更人性化,减轻使用者的认知负担,使其更适合用户的操作需求,直接提升产品的市场竞争力。

    GUI 即人机交互图形化用户界面设计。纵观国际相关产业在图形化用户界面设计方面的发展现状,许多国际知名公司早己意识到GUI在产品方面产生的强大增值功能,以及带动的巨大市场价值,因此在公司内部设立了相关部门专门从事GUI的研究与设计,同业间也成立了若干机构,以互相交流GUI设计理论与经验为目的。随着中国IT产业,移动通讯产业,家电产业的迅猛发展,在产品的人机交互界面设计水平发展上日显滞后,这对于提高产业综合素质,提升与国际同等业者的竞争能力等等方面无疑起了制约的作用。

    GUI 定义

    GUI--Graphical User Interface即人机交互图形化用户界面设计经常读做“goo-ee”

    准确来说GUI就是屏幕产品的视觉体验和互动操作部分。

    GUI基本测试内容

    图形用户界面( GUI )对软件测试提出了有趣的挑战,因为 GUI 开发环境有可复用的构件,开发用户界面更加省时而且更加精确。同时, GUI 的复杂性也增加了,从而加大了设计和执行测试用例的难度。因为现在 GUI 设计和实现有了越来越多的类似,所以也就产生了一系列的测试标准。下列问题可以作为常见 GUI 测试的指南:

    ○ 窗口:

    ● 窗口是否基于相关的输入和菜单命令适当地打开?

    ● 窗口能否改变大小、移动和滚动?

    ● 窗口中的数据内容能否用鼠标、功能键、方向键和键盘访问?

    ● 当被覆盖并重新调用后,窗口能否正确地再生?

    ● 需要时能否使用所有窗口相关的功能?

    ● 所有窗口相关的功能是可操作的吗?

    ● 是否有相关的下拉式菜单、工具条、滚动条、对话框、按钮、图标和其他控制可为窗口使用,并适当地显示?

    ● 显示多个窗口时,窗口的名称是否被适当地表示?

    ● 活动窗口是否被适当地加亮?

    ● 如果使用多任务


  • 网站测试流程、要求及测试报告

    2009-08-24 11:26:22

    基于Web的系统测试与传统的软件测试既有相同之处,也有不同的地方,对软件测试提出了新的挑战。基于Web的系统测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。   本文从功能、性能、可用性、客户端兼容性、安全性等方面讨论了基于Web的系统测试方法。 
      随着Internet和Intranet/Extranet的快速增长,Web已经对商业、工业、银行、财政、教育、政府和娱乐及我们的工作和生活产生了深远的影响。许多传统的信息和数据库系统正在被移植到互联网上,电子商务迅速增长,早已超过了国界。范围广泛的、复杂的分布式应用正在Web环境中出现。Web的流行和无所不在,是因为它能提供支持所有类型内容连接的信息发布,容易为最终用户存取。 

      Yogesh Deshpande和Steve Hansen在1998年就提出了Web工程的概念。Web工程作为一门新兴的学科,提倡使用一个过程和系统的方法来开发高质量的基于Web的系统。它"使用合理的、科学的工程和管理原则,用严密的和系统的方法来开发、发布和维护基于Web的系统"。目前,对于web工程的研究主要是在国外开展的,国内还刚刚起步。 

      在基于Web的系统开发中,如果缺乏严格的过程,我们在开发、发布、实施和维护Web的过程中,可能就会碰到一些严重的问题,失败的可能性很大。而且,随着基于Web的系统变得越来越复杂,一个项目的失败将可能导致很多问题。当这种情况发生时,我们对Web和Internet的信心可能会无法挽救地动摇,从而引起Web危机。并且,Web危机可能会比软件开发人员所面对的软件危机更加严重、更加广泛。 
      在Web工程过程中,基于Web系统的测试、确认和验收是一项重要而富有挑战性的工作。基于Web的系统测试与传统的软件测试不同,它不但需要检查和验证是否按照设计的要求运行,而且还要测试系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。然而,Internet和Web媒体的不可预见性使测试基于Web的系统变得困难。因此,我们必须为测试和评估复杂的基于Web的系统研究新的方法和技术。 
      一般软件的发布周期以月或以年计算,而Web应用的发布周期以天计算甚至以小时计算。Web测试人员必须处理更短的发布周期,测试人员和测试管理人员面临着从测试传统的C/S结构和框架环境到测试快速改变的Web应用系统的转变。 

      网站测试流程、要求及测试报告 
    一个网站基本完工后,需要通过下面三步测试才可以交活。 
    一、 制作者测试,包括美工测试页面、程序员测试功能。在做完后第一时间内有制作者本人进行测试。 
    a) 页面 包括首页、二级页面、三级页面的页面在各种常用分辨率下有无错位;图片上有没有错别字;各连接是否是死连接;各栏目图片与内容是否对应等 
    b) 功能 达到客户要求;数据库连接正确;各个动态生成连接正确;传递参数格式、内容正确;试填测试内容没有报错;页面显示正确 
    二、 全面测试 根据交工标准和客户要求,由专人进行全面测试 
    也是包括页面和程序两方面,而且要结合起来测,保证填充足够的内容后不会导致页面变形。另外要检查是否有错别字,文字内容是否有常识错误。 
    三、 发布测试 网站发布到主服务器之后的测试,主要是防止环境不同导致的错误 



    软件缺陷的原则 
    软件缺陷区别于软件bug,它是在测试过程中出现的对系统有影响的,但是在设计中没有的或者对修改后的bug测试和开发人员有不同意见等 
    软件未达到产品说明书标明的功能。 
    软件出现了产品说明书指明不会出现的错误。 
    软件功能超出产品说明书指明范围。 
    软件未达到产品说明书虽未指出但应达到的目标。 
    软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。 



    测试的主要方面: 

    一、功能测试 

    对于网站的测试而言,每一个独立的功能模块需要单独的测试用例的设计导出,主要依据为《需求规格说明书》及《详细设计说明书》,对于应用程序模块需要设计者提供基本路径测试法的测试用例。 

    1、链接测试 
       链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面: 

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

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

    3)保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。 

    链接测试可以自动进行,现在已经有许多工具可以采用。链接测试必须在集成测试阶段完成,也就是说,在整个Web应用系统的所有页面开发完成之后进行链接测试。 

    Xenu------主要测试链接的正确性的工具 
    可惜的是对于动态生成的页面的测试会出现一些错误。 

    2、表单测试 

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

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

    B/S结构实现的功能可能主要的就在这里,提交数据,处理数据等如果有固定的操作流程可以考虑自动化测试工具的录制功能,编写可重复使用的脚本代码,可以在测试、回归测试时运行以便减轻测试人员工作量。 

    我们对UM子系统中各个功能模块中的各项功能进行逐一的测试,主要测试方法为:边界值测试、等价类测试,以及异常类测试。测试中要保证每种类型都有2个以上的典型数值的输入,以确保测试输入的全面性。 

    3、Cookies测试 
       Cookies通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用Cookies访问了某一个应用系统时,Web服务器将发送关于用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。 

    如果Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作而且对这些信息已经加密。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保存,刷新对Cookies有什么影响等。 

    4、设计语言测试 

    Web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的脚本语言,例如Java、JavaScript、 ActiveX、VBScript或Perl等也要进行验证。 

    5、数据库测试 

      在Web应用技术中,数据库起着重要的作用,数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在Web应用中,最常用的数据库类型是关系型数据库,可以使用SQL对信息进行处理。 

    在使用了数据库的Web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。 

    二、性能测试 

    网站的性能测试对于网站的运行而言异常重要,但是目前对于网站的性能测试做的不够,我们在进行系统设计时也没有一个很好的基准可以参考,因而建立网站的性能测试的一整套的测试方案将是至关重要的。 
    网站的性能测试主要从三个方面进行:连接速度测试、负荷测试(Load)和压力测试(Stress), 

    连接速度测试指的是打开网页的响应速度测试。负荷测试指的是进行一些边界数据的测试,压力测试更像是恶意测试,压力测试倾向应该是致使整个系统崩溃。 

    1、连接速度测试 

      用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果Web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。 

      另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。 

    2、负载测试 

      负载测试是为了测量Web系统在某一负载级别上的性能,以保证Web系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问Web系统的用户数量,也可以是在线数据处理的数量。例如:Web应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象?Web应用系统能否处理大量用户对同一个页面的请求? 

    3、压力测试 

      负载测试应该安排在Web系统发布以后,在实际的网络环境中进行测试。因为一个企业内部员工,特别是项目组人员总是有限的,而一个Web系统能同时处理的请求数量将远远超出这个限度,所以,只有放在Internet上,接受负载测试,其结果才是正确可信的。 

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

    压力测试的区域包括表单、登陆和其他信息传输页面等。 

    采用的测试工具: 

    性能测试可以采用相应的工具进行自动化测试,我们目前采用如下工具 
    ab -----Apache 的测试工具 
    OpenSTA—开发系统测试架构 

    三、接口测试 
    在很多情况下,web 站点不是孤立。Web 站点可能会与外部服务器通讯,请求数据、 

    验证数据或提交订单。 

    1、 服务器接口 
    第一个需要测试的接口是浏览器与服务器的接口。测试人员提交事务,然后查看服务器 

    记录,并验证在浏览器上看到的正好是服务器上发生的。测试人员还可以查询数据库,确认事务数据已正确保存。 

    2、 外部接口 
    有些 web 系统有外部接口。例如,网上商店可能要实时验证信用卡数据以减少欺诈行 

    为的发生。测试的时候,要使用 web 接口发送一些事务数据,分别对有效信用卡、无效信用卡和被盗信用卡进行验证。如果商店只使用 Visa 卡和 Mastercard 卡, 可以尝试使用 Discover 卡的数据。(简单的客户端脚本能够在提交事务之前对代码进行识别,例如 3 表示 American Express,4 表示 Visa,5 表示 Mastercard,6 代表Discover。)通常,测试人员需要确认软件能够处理外部服务器返回的所有可能的消息。 

    3、错误处理 
    最容易被测试人员忽略的地方是接口错误处理。通常我们试图确认系统能够处理所有错 

    误,但却无法预期系统所有可能的错误。尝试在处理过程中中断事务,看看会发生什么情况? 

    订单是否完成?尝试中断用户到服务器的网络连接。尝试中断 web 服务器到信用卡验证服 

    务器的连接。在这些情况下,系统能否正确处理这些错误?是否已对信用卡进行收费?如果 

    用户自己中断事务处理,在订单已保存而用户没有返回网站确认的时候,需要由客户代表致 

    电用户进行订单确认。 

    四、可用性测试 

    可用性/易用性方面目前我们只能采用手工测试的方法进行评判,而且缺乏一个很好的评判基准进行,此一方面需要大家共同讨论。 

    1、导航测试 

      导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;或在不同的连接页面之间。通过考虑下列问题,可以决定一个Web应用系统是否易于导航:导航是否直观?Web系统的主要部分是否可通过主页存取?Web系统是否需要站点地图、搜索引擎或其他的导航帮助? 

      在一个页面上放太多的信息往往起到与预期相反的效果。Web应用系统的用户趋向于目的驱动,很快地扫描一个Web应用系统,看是否有满足自己需要的信息,如果没有,就会很快地离开。很少有用户愿意花时间去熟悉Web应用系统的结构,因此,Web应用系统导航帮助要尽可能地准确。 

      导航的另一个重要方面是Web应用系统的页面结构、导航、菜单、连接的风格是否一致。确保用户凭直觉就知道Web应用系统里面是否还有内容,内容在什么地方。 

    Web应用系统的层次一旦决定,就要着手测试用户导航功能,让最终用户参与这种测试,效果将更加明显。 

    2、图形测试 

      在Web应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。一个Web应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。图形测试的内容有: 

      (1)要确保图形有明确的用途,图片或动画不要胡乱地堆在一起,以免浪费传输时间。Web应用系统的图片尺寸要尽量地小,并且要能清楚地说明某件事情,一般都链接到某个具体的页面。 

      (2)验证所有页面字体的风格是否一致。 

      (3)背景颜色应该与字体颜色和前景颜色相搭配。 

      (4)图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF压缩。 

    3、内容测试 

      内容测试用来检验Web应用系统提供信息的正确性、准确性和相关性。 

    信息的正确性是指信息是可靠的还是误传的。例如,在商品价格列表中,错误的价格可能引起财政问题甚至导致法律纠纷;信息的准确性是指是否有语法或拼写错误。这种测试通常使用一些文字处理软件来进行,例如使用Microsoft Word的"拼音与语法检查"功能;信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口,也就是一般Web站点中的所谓"相关文章列表"。 

    4、整体界面测试 

      整体界面是指整个Web应用系统的页面结构设计,是给用户的一个整体感。例如:当用户浏览Web应用系统时是否感到舒适,是否凭直觉就知道要找的信息在什么地方?整个Web应用系统的设计风格是否一致? 

    对整体界面的测试过程,其实是一个对最终用户进行调查的过程。一般Web应用系统采取在主页上做一个调查问卷的形式,来得到最终用户的反馈信息。 

      对所有的可用性测试来说,都需要有外部人员(与Web应用系统开发没有联系或联系很少的人员)的参与,最好是最终用户的参与。 

    五、兼容性测试 

    需要验证应用程序可以在用户使用的机器上运行。如果您用户是全球范围的,需要测试各种操作系统、浏览器、视频设置和 modem 速度。最后,还要尝试各种设置的组合。 

    1、平台测试 

      市场上有很多不同的操作系统类型,最常见的有Windows、Unix、Macintosh、Linux等。Web应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样,就可能会发生兼容性问题,同一个应用可能在某些操作系统下能正常运行,但在另外的操作系统下可能会运行失败。 

    因此,在Web系统发布之前,需要在各种操作系统下对Web系统进行兼容性测试。 

    2、浏览器测试 

      浏览器是Web客户端最核心的构件,来自不同厂商的浏览器对Java,、JavaScript、 ActiveX、 plug-ins或不同的HTML规格有不同的支持。例如,ActiveX是Microsoft的产品,是为Internet Explorer而设计的,JavaScript是Netscape的产品,Java是Sun的产品等等。另外,框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。不同的浏览器对安全性和Java的设置也不一样。 

    测试浏览器兼容性的一个方法是创建一个兼容性矩阵。在这个矩阵中,测试不同厂商、不同版本的浏览器对某些构件和设置的适应性。 

    采用测试工具: 

    通过白盒测试或者黑盒测试导出的测试用例,采用相应的工具进行测试,可以采用OpenSTA进行测试,此测试工具可以采用不同的浏览器进行测试。 

    3.视频测试 

    页面版式在 640x400、600x800 或 1024x768 的分辨率模式下是否显示正常? 字体是否太小以至于无法浏览? 或者是太大? 文本和图片是否对齐? 

    4.Modem/连接速率测试 
    是否有这种情况,用户使用 28.8 modem下载一个页面需要 10 分钟,但测试人员在测 

    试的时候使用的是 T1 专线? 用户在下载文章或演示的时候,可能会等待比较长的时间, 

    但却不会耐心等待首页的出现。最后,需要确认图片不会太大。 

    5、打印机测试 

    用户可能会将网页打印下来。因此网页在设计的时候要考虑到打印问题,注意节约纸张和油墨。有不少用户喜欢阅读而不是盯着屏幕,因此需要验证网页打印是否正常。有时在屏幕上显示的图片和文本的对齐方式可能与打印出来的东西不一样。测试人员至少需要验证订单确认页面打印是正常的。 

    6、组合测试 
    最后需要进行组合测试。600x800 的分辨率在 MAC 机上可能不错,但是在 IBM 兼容 

    机上却很难看。在 IBM 机器上使用 Netscape 能正常显示,但却无法使用 Lynx 来浏览。 

    如果是内部使用的 web 站点,测试可能会轻松一些。如果公司指定使用某个类型的浏览器, 

    那么只需在该浏览器上进行测试。如果所有的人都使用 T1 专线,可能不需要测试下载施加。 

    (但需要注意的是,可能会有员工从家里拨号进入系统) 有些内部应用程序,开发部门可能 

    在系统需求中声明不支持某些系统而只支持一些那些已设置的系统。但是,理想的情况是, 

    系统能在所有机器上运行,这样就不会限制将来的发展和变动。 

    六、安全测试 

    Web应用系统的安全性测试区域主要有: 

    1、 目录设置 
    Web 安全的第一步就是正确设置目录。每个目录下应该有 index.html 或 main.html 页 

    面,这样就不会显示该目录下的所有内容。如果没有执行这条规则。那么选中一幅图片,单击鼠标右键,找到该图片所在的路径"…com/objects/images"。然后在浏览器地址栏中手工输入该路径,发现该站点所有图片的列表。这可能没什么关系。但是进入下一级目录 "…com/objects" ,点击 jackpot。在该目录下有很多资料,其中有些都是已过期页面。如果该公司每个月都要更改产品价格信息,并且保存过期页面。那么只要翻看了一下这些记录,就可以估计他们的边际利润以及他们为了争取一个合同还有多大的降价空间。如果某个客户在谈判之前查看了这些信息,他们在谈判桌上肯定处于上风。 

    2.登录 

      现在的Web应用系统基本采用先注册,后登陆的方式。因此,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限制,是否可以不登陆而直接浏览某个页面等。  

    3.Session 

    Web应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。 

    4.日志文件 

    为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。 

    5.加密 

    当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性。 

    6.安全漏洞 

    服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。 

    目前网络安全问题日益重要,特别对于有交互信息的网站及进行电子商务活动的网站尤其重要。目前我们的测试没有涵盖网站的安全性的测试,我们拟定采用工具来测定, 

    工具如下 
    SAINT------- Security Administrator’s Integrated Network Tool 
    此工具能够测出网站系统的相应的安全问题,并且能够给出安全漏洞的解决方案,不过是一些较为常见的漏洞解决方案。 

    七、代码合法性测试 
    代码合法性测试主要包括2个部分:程序代码合法性检查与显示代码合法性检查。 

    1、程序代码合法性检查 
    程序代码合法性检查主要标准为《intergrp小组编程规范》,目前采用由SCM管理员进行规范的检查,未来期望能够有相应的工具进行测试。 

    2、显示代码合法性检查 
    显示代码的合法性检查,主要分为Html、JavaScript、Css代码检查,目前采用 
    HTML代码检查------采用CSE HTML Validator进行测试 
    JavaScript、Css也可以在网上下载相应的测试工具。 

    八、 文档测试 
    l、产品说明书属性检查清单 
    1)完整.是否有遗漏和丢失,完全吗? 单独使用是否包含全部内容 
    2)准确.既定解决方案正确吗? 目标明确吗? 有没有错误? 
    3)精确、不含糊、清晰.描述是否一清二楚? 还是自说自话?容易看懂和理解吗? 
    4)一致.产品功能能描述是否自相矛盾,与其他功能有没有冲突 
    5)贴切.描述功能的陈述是否必要?有没有多余信息? 功能是否原来的客户要求? 
    6)合理.在特定的预算和进度下,以现有人力,物力和资源能否实现? 
    7)代码无关.是否坚持定义产品,而不是定义其所信赖的软件设计,架构和代码 
    8)可测试性.特性能否测试? 测试员建立验证操作的测试程序是否提供足够的信息? 
    2、 产品说明书用语检查清单 
    1)说明。 对问题的描述通常表现为粉饰没有仔细考虑的功能----可归结于前文所述的属性.从产品说明书上找出这样的用语,仔细审视它们在文中是怎样使用的.产品说明书可能会为其掩饰和开脱,也可能含糊其词----无论是哪一种情况都可视为软件缺陷. 
    2)总是,每一种,所有,没有,从不.如果看到此类绝对或肯定的,切实认定的叙述,软件测试员就可以着手设计针锋相对的案例. 
    3)当然,因此,明显,显然,必然.这些话意图诱使接受假定情况.不要中了圈套. 
    4)某些,有时,常常,通常,惯常,经常,大多,几乎.这些话太过模糊."有时"发生作用的功能无法测试. 
    5)等等,诸如此类,依此类推.以这样的词结束的功能清单无法测试.功能清单要绝对或者解释明确,以免让人迷惑,不知如何推论. 
    6)良好,迅速,廉价,高效,小,稳定.这些是不确定的说法,不可测试.如果在产品说明书中出现,就必须进一步指明含义. 
    7)已处理,已拒绝,已忽略,已消除.这些廉洁可能会隐藏大量需要说明的功能. 
    8)如果...那么...(没有否则).找出有"如果...那么..."而缺少配套的"否则"结构的陈述.想一想"如果"没有发生会怎样. 

    相关的测试工具 
    OpenSTA 
    主要做性能测试的负荷及压力测试,使用比较方便,可以编写测试脚本,也可以先行自动生成测试脚本,而后对于应用测试脚本进行测试。 
    SAINT 
    网站安全性测试,能够对于指定网站进行安全性测试,并可以提供安全问题的解决方案。 
    CSE HTML Validator 
    一个有用的对于HTML代码进行合法性检查的工具 
    Ab(Apache Bench) 
    Apache自带的对于性能测试方面的工具,功能不是很多,但是非常实用。 
    Crash-me 
    Mysql自带的测试数据库性能的工具,能够测试多种数据库的性能。 


  • 网站测试方案

    2009-08-24 11:17:04

     简介:     
      本指引为软件测试工作提供详细的指引,以提高软件开发工作的质量。  
       
       
      内容:  
       
      测试工作分以下几个方面进行:  
       
       
      安装与测试环境:  
       
       
      将程序单位的所有程序以及用到的公共子程序安装到指定的多用户测试环境,该环境应与程序实际运行环境一致;  
       
       
      将系统编译成可执行文件。  
       
       
      程序代码检查:  
       
       
      程序单位的首部应有程序说明和修改备注,内容包括编写或更改程序的人员、时间、程序的功能及调用关系等;  
       
       
      变量、过程、函数应符合统一的命名规则;  
       
       
      程序中不同的功能部分应有清楚的说明信息,较复杂的程序段落也应有说明信息;  
       
       
      如果是修改,在修改的代码处应有修改注释,注释说明修改的人员、时间及内容。  
       
       
      画面及报表格式检查:  
       
       
      画面、报表的格式以及程序的命名应符合统一的规则;  
       
       
      画面、报表的字段位置、长度、类型应与设计文档的要求一致。  
       
       
      功能测试:  
       
       
      如果有多个画面,多个画面之间切换正确;  
       
       
      每一个画面的功能键、触发键、按钮、菜单、选择项功能正确;  
       
       
      检查数据项的关联与限制功能是否正确;  
       
       
      找出设计文档中要求的未被包含在上述几项测试中的功能,逐项测试,检查是否达到设计文档要求的功能。  
       
       
      正确性测试:  
       
       
      有写/删除操作的程序,写/删除操作的结果正确,测试时应手工打开数据库表,以检查写/删除的效果;  
       
       
      有查询或报表操作时,检查在各种选择项的合理组合下,所产生的结果,对照数据库中的数据是否正确;  
       
       
      对照设计文档的要求,测试程序是否正确。  
       
       
      可靠性测试:  
       
       
      非法键容错测试:在不同的画面,不同的字段处输入非法键,被测试程序应有非法键容错能力;  
       
       
      异常数据容错测试:在不同的画面,不同的字段输入异常数据,被测试程序应有异常数据容错能力;  
       
       
      程序负作用检查,退出被测试程序后应恢复到进入前的系统状态,不应影响其它程序的正确运行;  
       
       
      残留文件检查,退出程式后在本地机和服务器的有关目录或TEMP目录下不应留下任何无用的文件。  
       
       
      效率测试:  
       
      本项测试需分开单用户及多用户的情况下进行。  
       
       
      画面操作效率测试:逐项测试每一项操作,特别是读/写、翻页、滚屏等操作,记录延迟最长的操作及时间;  
       
       
      报表及查询效率测试:分别选择最小范围(非空)的数据及最大范围(根据实际情况定)的数据,记下机器型号及产生结果所花的时间;  
       
       
      评价程序效率是否合理;  
       
       
      多用户测试:  
       
       
      随机测试:在两个或以上的终端同时多次进入和退出被测试程序,程序应正确无误;  
       
       
      共享测试:在两个或以上的终端同时调用被测试程序做同样的工作,程序正确无误;  
       
       
      同步测试:就程序中使用到的同步机构,有针对性地组织数据进行测试,有关同步的命令包括对数据库表、文件的共享,互斥操作,文件程序或记录的加锁、解锁,对公共数据区域的操作等。  
       
       
      测试报告:  
       
       
      进行软件测试的同时需填写软件测试报告,软件测试报告格式见附页;  
       
       
      每一项编程工作要经过程序员和测试工程师两级测试均合格后方可安装给用户;  
       
       
      填表说明:  
       
       
      表中程序员、测试工程师等空格由测试人员自己签字,当有多次反复测试时,日期填第一次通过测试的日期;  
       
       
      测试结果有两种填写形式,第一种形式由两个小方块“□”提示,分别由程序员,测试工程师填写,当通过测试时填“√”。第二种形式由长条提示,需填写测试内容;  
       
       
      测试工程师发现问题时,要在测试备忘中记录签字,若问题较多可另用A4纸记录,然后退回程序员更正;  
       
       
      不需要测试的项目用“\”号画去;  
       
       
      “其它测试”是为上八条未涉及的测试内容而设计的。

  • 搜索引擎技术原理及其应用

    2009-07-09 12:03:14

    搜索引擎技术原理及其应用

    WEB

    ——浅谈GOOGLE和BAIDU搜索技术

    2004级计算机科学与技术三班 刘xx

    本文将分为以下几部分阐述

    一、Web搜索引擎技术综述

    二、Google技术

    三、百度技术

    四、结束语

      搜索引擎(search engine)是指根据一定的策略、运用特定的计算机程序搜集互联网上的信息,在对信息进行组织和处理后,为用户提供检索服务的系统。

    一、 Web搜索引擎技术综述

    (一) 、引子

    随着网络技术的应用与发展,互连网已经成为信息的重要来源地。搜索引擎以一定的策略在互联网中搜集、发现信息,对信息进行理解、提取、组织和处理,并为用户提供检索服务,从而起到信息导航的目的,互联网用户使用网络获取信息过程中,搜索引擎也成为必不可少的工具。调查表明,当前的所有互连网应用中,网络信息搜索是仅次于电子邮件的第二大应用,而这些搜索绝大多数是专门的,高度复杂的搜索引擎实现的。

    按照信息搜集方法和服务提供方式的不同,搜索引擎系统可以分为三大类:

    ① 目录式搜索引擎,以人工方式或半自动方式搜集信息,由编辑员查看信息之后,人工形成信息摘要,并将信息置于事先确定的分类框架中,由于web信息的海量性和人工处理能力、经济代价的限制,这类搜索引擎信息的即时性和全面性难以保证它的优秀代表是Yahoo等;

    ② 机器人搜索引擎,由一个称为蜘蛛(Spider)的机器人程序以某种策略自动地在互联网中搜集和发现信息,由索引器为搜集到的信息建立索引,由检索器根据用户的查询输入检索索引库,并将查询结果返回给用户,这类搜索引擎实现较为复杂,但能很好的实现信息的全面获取和即时更新,它的优秀代表是Google等,后文如非特别说明,都指这类搜索引擎;

    ③ 元搜索引擎,这类搜索引擎没有自己的数据,而是将用户的查询请求同时向多个搜索引擎递交,将返回的结果进行重复排除、重新排序等处理后,作为自己的结果返回给用户,这类搜索引擎兼集多个搜索引擎的信息,并且加入新的排序和信息过滤,可以很好的提高用户满意度。

    (二) 、web搜索引擎的原理和实现

    web搜索引擎的原理通常为:首先是用蜘蛛(Spider)进行全网搜索,自动抓取网页;然后将抓取的网页进行索引,同时也会记录与检索有关的属性,中文搜索引擎中还需要首先对中文进行分词;最后,接受用户查询请求,检索索引文件并按照各种参数进行复杂的计算,产生结果并返回给用户。

    1.利用网络蜘蛛获取网络资源

    这是一种半自动化的资源(由于此时尚未对资源进行分析和理解,不能成为信息而仅是资源)获取方式。所谓半自动化,是指搜索器需要人工指定起始网络资源URL(Uniform. Resource Locator),然后获取该URL所指向的网络资源,并分析该资源所指向的其他资源并获取。如Google的在利用蜘蛛程序获取网络资源时,是由一个认为管理程序负责任务的分配和结果的处理,多个分布式的蜘蛛程序从管理程序活动任务,然后将获取的资源作为结果返回,并从新获得任务。

    2.利用索引器从搜索器获取的资源中抽取信息,并建立利于检索的索引表

    当用网络蜘蛛获取资源后,需要对这些进行加工过滤,去掉控制代码及无用信息,提取出有用的信息,并把信息用一定的模型表示,使查询结果更为准确。Web上的信息一般表现为网页,对每个网页,须生成一摘要,此摘要将显示在查询结果的页面中,告诉查询用户各网页的内容概要。模型化的信息将存放在临时数据库中,由于web数据的数据量极为庞大,为了提高检索效率,须按照一定规则建立索引。不同搜索引擎在建立索引时会考虑不同的选项,如是否建立全文索引,是否过滤无用词汇,是否使用meta信息等。

    3.检索及用户交互

    这部分的主要内容包括:用户查询(query)理解,即最大可能贴近的理解用户通过查询串想要表达的查询目的,并将用户查询转换化为后台检索使用的信息模型;根据用户查询的检索模型,在索引库中检索出结果集;结果排序:通过特定的排序算法,对检索结果集进行排序。由于web数据的海量性和用户初始查询的模糊性,检索结果集一般很大,而用户一边不会有足够的耐性逐个查看所有的结果,所以怎样设计结果集的排序算法,把用户感兴趣的结果排在前面就十分重要。

    (三) 、web搜索引擎的最新动态

    当前,搜索引擎技术已经趋于成数,用户满意度也保持在一个可以接受的水平。在信息搜集技术,索引建立技术,检索技术和结果集排序技术方面,最近几年,除了Google创造性的提出page rank技术,并把他用于结果排序外,基本没有什么突破性的进展。而搜索引擎的研究与信息集成逐渐融合,在这方面的研究主要集中在两个方面:查询扩展(query expansion)和结果集的动态分类。

    二、 Google技术

    (一) Google技术概论

    Google 秉持开发“完美的搜索引擎”的信念,在业界独树一帜。所谓完美的搜索引擎,就如公司创始人之一 Larry Page 所定义的那样,可以“确解用户之意,切返用户之需”。为了实现这一目标,Google 坚持不懈地追求创新,而不受现有模型的限制。因此,Google 开发了自己的服务基础结构和具有突破性的 Page Rank™ 技术,使得搜索方式发生了根本性变化。

    Google 的开发人员从一开始就意识到:要以最快的速度提供最精确的搜索结果,则需要一种全新的服务器设置。大多数的搜索引擎依靠少量大型服务器,这样,在访问高峰期速度就会减慢,而 Google 却利用相互链接的 PC 来快速查找每个搜索的答案。 这一创新技术成功地缩短了响应时间,提高了可扩展性,并降低了成本。这也是其他公司一直在效仿的技术。与此同时,Google 从未停止过对其后端技术的改进,以使其技术效率更高。

    Google 搜索技术所依托的软件可以同时进行一系列的运算,且只需片刻即可完成所有运算。而传统的搜索引擎在很大程度上取决于文字在网页上出现的频率。Google 使用 Page Rank™ 技术检查整个网络链接结构,并确定哪些网页重要性最高。然后进行超文本匹配分析,以确定哪些网页与正在执行的特定搜索相关。在综合考虑整体重要性以及与特定查询的相关性之后,Google 可以将最相关最可靠的搜索结果放在首位。

    ⑴Page Rank 技术:

    通过对由超过 50,000 万个变量和 20 亿个词汇组成的方程进行计算,Page Rank 能够对网页的重要性做出客观的评价。Page Rank 并不计算直接链接的数量,而是将从网页 A 指向网页 B 的链接解释为由网页 A 对网页 B 所投的一票。这样,Page Rank 会根据网页 B 所收到的投票数量来评估该页的重要性。此外,Page Rank 还会评估每个投票网页的重要性,因为某些网页的投票被认为具有较高的价值,这样,它所链接的网页就能获得较高的价值。重要网页获得的 Page Rank(网页排名)较高,从而显示在搜索结果的顶部。Google 技术使用网上反馈的综合信息来确定某个网页的重要性。搜索结果没有人工干预或操纵,这也是为什么 Google 会成为一个广受用户信赖、不受付费排名影响且公正客观的信息来源。 

    ⑵超文本匹配分析:

    Google 的搜索引擎同时也分析网页内容。然而,Google 的技术并不采用单纯扫描基于网页的文本(网站发布商可以通过元标记控制这类文本)的方式,而是分析网页的全部内容以及字体、分区及每个文字精确位置等因素。Google 同时还会分析相邻网页的内容,以确保返回与用户查询最相关的结果。 

    Google 的创新并不限于台式机。 为了确保通过便携式设备访问网络的用户能够快速获得精确的搜索结果,Google 还率先推出了业界第一款无线搜索技术,以便将 HTML 即时转换为针对 WAP、I-mode、J-SKY 和 EZWeb 优化的格式。

    (二) Google 查询的全过程

    Google 查询的全过程通常不超过半秒时间,但在这短短的时间内需要完成多个步骤,然后才能将搜索结果交付给搜索信息的用户。
     
    3. 瞬间返回用户需要的搜索结果。
      
     1. 网络服务器将查询发送到索引服务器。索引服务器所包含的内容与书本末尾的索引目录相似,即说明哪些网页包含与查询匹配的文字。
      
     2.查询传输到文档服务器,由后者实际检索所存储的文档。然后,生成描述每个搜索结果的摘录。
      
    三、 百度技术

    (一)、百度搜索引擎概论

    百度搜索引擎由四部分组成:蜘蛛程序、监控程序、索引数据库、检索程序。百度搜索引擎使用了高性能的“网络蜘蛛”程序自动的在互联网中搜索信息,可定制、高扩展性的调度算法使得搜索器能在极短的时间内收集到最大数量的互联网信息。百度在中国各地和美国均设有服务器,搜索范围涵盖了中国大陆、香港、台湾、澳门、新加坡等华语地区以及北美、欧洲的部分站点。百度搜索引擎拥有目前世界上最大的中文信息库。

    (二)、百度搜索关键技术

    ⑴查询处理以及分词技术

    随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。网络离开了搜索将只剩下空洞杂乱的数据,以及大量等待去费力挖掘的金矿。 

    但是,如何设计一个高效的搜索引擎?我们可以以百度所采取的技术手段来探讨如何设计一个实用的搜索引擎.搜索引擎涉及到许多技术点,比如查询处理,排序算法,页面抓取算法,CACHE机制,ANTI-SPAM等等.这些技术细节,作为商业公司的搜索引擎服务提供商比如百度,GOOGLE等是不会公之于众的.我们可以将现有的搜索引擎看作一个黑盒,通过向黑盒提交输入,判断黑盒返回的输出大致判断黑盒里面不为人知的技术细节. 

    查询处理与分词是一个中文搜索引擎必不可少的工作,而百度作为一个典型的中文搜索引擎一直强调其“中文处理”方面具有其它搜索引擎所不具有的关键技术和优势.那么我们就来看看百度到底采用了哪些所谓的核心技术. 

    ⑵Spelling Checker拼写检查错误提示(以及拼音提示功能) 

    拼写检查错误提示是搜索引擎都具备的一个功能,也就是说用户提交查询给搜索引擎,搜索引擎检查看是否用户输入的拼写有错误,对于中文用户来说一般造成的错误是输入法造成的错误。这就依赖于百度的拼写检查系统,其大致运行过程如下: 

    后台作业: (1)前面的文章我们说过,百度分词使用的词典至少包含两个词典一个是普通词典,另外一个是专用词典(专名等),百度利用拼音标注程序依次扫描所有词典中的每个词条,然后标注拼音,如果是多音字则把多个音都标上,比如“长大”,会被标注为“zhang da /chang da”两个词条。(2)通过标注完的词条,建立同音词词典,比如上面的“长大”,会有两个词条: zhang daà长大 , chang daà长大。(3)利用用户查询LOG频率信息给予每个中文词条一个权重; (4)OK,同音词词典建立完成了,当然随着分词词典的逐步扩大,同音词词典也跟着同步扩大。

    拼写检查: (1)用户输入查询,如果是多个子字符串,不作拼写检查; (2)对于用户查询,先查分词词典,如果发现有这个单词词条,OK,不作拼写检查; (3)如果发现词典里面不包含用户查询,启动拼写检查系统;首先利用拼音标注程序对用户输入进行拼音标注; (4)对于标注好的拼音在同音词词典里面扫描,如果没有发现则不作任何提示; (5)如果发现有词条,则按照顺序输出权重比较大的几个提示结果; 

    拼音提示: (1)对于用户输入的拼音在同音词词典里面扫描,如果没有发现则不作任何提示; (2)如果发现有词条,则按照顺序输出权重比较大的几个提示结果。

    四、 结束语

    本文就以上三个方面对Web搜索引擎的原理做了简单阐述,并结合现今流行使用的两个权威网站:GOOGLE和百度,对Web搜索引擎的应用的分析,做出简单理解。出于个人爱好和篇幅因素,未有详尽之处,势之必然。

    参考:

    1、 本文图片来自www.google.com.

    2、 本文部分内容参考CSDN


Open Toolbar