业精于勤,荒于嬉,行成于思,毁于随。

发布新日志

  • 原来自己好久没来了

    2011-01-13 16:41:42

    今天工作完毕后,突然觉得好久没上51testing了,第一次登录时竟然连密码都忘记了。可见有多久没来过了!顺便打开自己空间时,感觉自己以前还是蛮勤奋的嘛,收集了这么多好的文章。希望以后自己再接再厉!
  • 【转】WEB测试新说

    2009-10-29 15:12:05

    WEB应用的发展真是太迅猛了,搜索引擎,WEB2.0,SNS,MiniBlog真是一个接一个,随之带来开发技术,测试技术的变革也是日新月异。曾经坊间流传的各类WEB测试总结文章显然已经不适应这样的发展了,什么链接测试啊,表单测试啊,cookie测试啊,这些对于大多数测试人来说已经是小巫见大巫了,写此文的用意,也是想通过自己的总结,对原先WEB测试的技术做一个补充,将WEB测试放置到一个更高的位置。

    1. Track测试
    Track是什么,其实很简单,对于互联网的应用,点击率就是命门,那就是说每个应用都需要记录自己的点击率,说细致了,就是重要的链接都需要有自己的点击记录,无论你用的是哪种Track技术,作为测试人员,对于这么重要的测试点怎么能够放过呢。这里需要注意的是Track是否有效:很好理解,是否正确计数嘛;Track是否有合理的区分机制:不同的链接起码要能区别Track;Track的实际意义:毕竟Track本身也是有消耗的,并不是所有链接都Track就可以了

    2. Ajax注入测试
    现在的网站都大量的使用JS和Ajax技术,当然这里就需要加强注入的测试了,其实这是一个后台处理程序对输入参数的校验严谨性的问题。但是由于Ajax是异步提交的过程,而一般通过页面的黑盒测试又比较难发现此类的BUG,所以对于那些有安全性要求的应用,应当提高这类的测试力度,幸好,我们还有firebug之类好用的工具,来帮助我们完成测试

    3. Cache机制的测试
    由于对于性能的追求,以及各类缓存架构的层出不穷,缓存机制成为了每个WEB应用不可缺少的架构组成部分。对于缓存的测试无非是有效性的测试,缓存过期的测试,缓存更新的测试等

    4. 分布式架构的测试
    这个测试范畴就有点大了,对于现在的互联网应用,分布式的架构是解决性能和存储最有效的解决之道,诸如静态文件存储,缓存服务,甚至数据库都有可能是分布式的。对于测试的要求当然也需要涉及到性能,备份,读取等的测试,以保证分布式系统中的同步与离散存储的有效性

    5. 爬虫的测试
    做互联网,当然是希望google,百度收录的多多益善,而那些盗窃内容的爬虫则被挡在门外了。所以这也是一种新型的安全性测试,可能涉及到系统防火墙的测试,白名单爬虫稳定率的测试等。当然其实像google webmaster这类工具,还能反过来对我们的测试提供有效的测试数据,像外链的质量和链接有效性等

    6. 搜索引擎的测试
    对于有搜索服务的网站而言,这是避不开的一个测试点。比如索引建立的测试,索引更新的测试,搜索结果,纠错词,提示词这些都不能忽视。并且搜索服务又往往和缓存机制有千丝万缕的联系,所以对于测试的要求也是复核性的

    7. API的测试
    对于互联网提供的各种API,除了功能的测试外,特别需要注意安全性和性能的测试
  • 【转】QTP与QC的完美结合实现自动化测试框架-业务组件测试(转)

    2009-10-29 14:50:51

    摘要:利用QTP和QC相结合搭建功能自动化测试框架

           关键词:自动化测试    测试框架    组件

            做功能自动化测试都会不约而同的遇到一个比较棘手的问题-测试框架的搭建。这也是直接影响功能自动化测试成功与否的关键。框架做的好可以使测试事半功倍,反之轻则很难看到工作的成果重则会使整个测试失败。目前网上有很多关于测试框架的讨论,其中也有成型的测试框架,其中有很多好的思想在里边,很值得借鉴。但今天要讨论的不是网上已有的,而是HP已经为我们设计好的一个测试体系,业务组件测试。他是利用QTP与QC的完美结合组成的一个体系架构。它可以轻易实现目前比较流行的三层测试架构:脚本层,业务层,数据层相分离,为开展功能自动化测试提供一个高效、稳定、容易的测试实现。

            一.概述

            1.1业务组件(Bussiness ProcessTesting)简介

            业务组件是组成流程测试的基本单元,组合不同的业务组件可以实现不同的业务流程测试。如将fligt系统的登录最为一个组件,选择航班最为一个组件等。这样可以实现组件的复用,提高开发效率。

             1.2 Bussiness Process Testing的优点

            1)   相关业务人员可以在没有脚本的环境下组合业务组件,实现业务流程。

            2)   对业务人员的编程能力没有要求,业务人员只需了解系统的业务流程,不用关心具体的脚本实现。这一点也实现了业务层和脚本层的分离。

            3)   一旦某个组件开发完毕,即可在不同的流程中使用该组件,实现高可复用性,从而加快业务流程测试的速度。

            4)   明确的角色分工,业务人员负责流程的开发、组织;QTP工程师负责脚本的开发、维护以及相应函数库的开发、维护。

            5)   因为实现了脚本的复用,提高了自动化开发的效率,无形中就降低了测试过程中维护的时间和成本。

            1.3 Bussiness Process Testing的简易流程

    软件测试

            如图所示,整个过程分为2条线:第一个是由业务测试人员划分组件并组合不同的组件实现不同的流程测试;其次QTP专家负责组件的脚本具体实现并负责调试成功,上传到QC供业务测试人员调用。

            注:测试数据的组织后边介绍,以便实现三层的测试架构;此过程需要QC有Bussiness Process Testing组件许可的支持,也就是需要单独向HP购买。

            下边以QTP自带的示例程序演示整个流程的开发过程

            2.1划分组件

            本次将系统划分为:登录;选择航班并插入;打开订单;更新订单;删除订单;注销。这样划分仅为演示之用,不用在实际的测试之中。

            2.2组织业务测试流程

            本次只是用于演示,所以流程不会100%覆盖,在实际的测试过程中要达到100%的流程覆盖。本次测试流程如下:

            流程1:登录-选择航班并插入-注销

            流程2:登录-选择航班并插入-更新订单-注销

            流程3:登录-选择航班并插入-更新订单-删除订单-注销

            流程4:登录-打开订单-更新订单-删除订单-注销

            下边需要根据划分的组件来实现组件脚本的实现。

            2.3创建应用程序区域

            在开发脚本之前首先要做的是要创建一个应用程序区域。应用程序区域提供创建业务组件所需的所有资源和设置,每个业务组建都居于一个应用程序区域,并从这些应用程序区域集成这些资源和设置。在此创建一个名为“订票系统流程测试”的区域,如图所示。

            创建过程:依次选择:file-New-Function library。保存后自动上传至QC默认目录。

    软件测试

            在此也可以加载自己的函数库,对象库,恢复场景等,这样以后创建的组建都可以共享该应用程序区域的资源。同时也方便维护,这也是一个优点所在,例如一旦函数库改变在此从新加载新的函数库即可,不用在脚本理修改。总之这个应用程序区域很重要,以后所有的脚本均是基于这个区域。应用程序路径一定要加载正确,否则录制时不能生成脚本。

            2.4创建脚本

            在创建脚本之前最好在QC中组织好目录树,方便保存及调用。关于脚本的开发过程,每个人、每个公司都有自己的方法。在此源代码也没法一一贴出。所以在此只列出输入参数和输出参数,方便后边的参数化以及数据组织。本次也采用最通用的方式即对象库解决对象识别问题。脚本的开发规范以及参数命名也以我自己惯用方式。

    软件测试

    注:“-”为无相应参数。
            在QTP中创建组件脚本有2中模式:Bussiness Component和Scripted Component。区别:Bussiness Component只能见关键字视图,QC中亦可见关键字视图;Scripted Component可以看见专家视图,在QC中脚本代码不可见。一般创建后者,本次也是采用后者,方便编辑脚本,控制脚本结构。
            注意:参数一定要合理设置并对代码中的输入项做参数化与参数关联,否则测试数据传不到脚本,导致脚本运行失败。参数可以在QTP中创建,也可以在QC中创建,效果等同。
            脚本开发完保存至QC,如图:

     

            至此脚本开发完毕。也实现了脚本和业务层、数据层的脱离,现在单个组件脚本实现业务流程中的某一个功能且脚本中不会涉及具体的测试数据,从而为实现三层结构打下基础。接下来的工作就是在QC中组织需要测试的业务流程以及需要的测试数据。
            这里有一个需要注意的地方,就是在QTP创建脚本如果选择Bussiness Component类型,在“设计步骤”选项卡可以看到QTP中的关键字视图,相关人员可以像在QTP操作一样,但是看不到代码。这也是为何上边为何创建脚本组件的原因。
            2.5业务流程的组织
            业务流程的组织主要是在“测试计划”模块中实现。这的主要工作是由业务测试人员完成。规划好目录结构以后,根据需要测试的业务流程拖拽需要的组件即可。这一步和在“测试计划”中拖拽测试用例很相似,区别就是这个是组合业务流程,而且可以自动执行。组织好后的效果如图:

            需要注意的是,创建用例是请选择“BUSINESS-PROCESS”测试类型,否则组件脚本拖拽不过来。拖拽脚本是在“测试脚本”选项卡中进行,如上图。限于篇幅,在此创建目录和拖拽等动作不再详述,请参见QC的用户手册。另外,根据实际的系统,可以把组件分组,以组的形式控制流程。例如,选择如图的2到4的组件,然后选择工具栏叉号旁边的图标,即可把组件分成一组。这样可以更好的控制流程。
    至此,所有的业务流程均以实现。可以在QC中选择运行(绿色箭头),进行相关的调试。
            这里实现的是三层结构中的业务层。这里进行的业务流程组织和脚本没有任何关系,相关人员不用关心脚本如何实现,只要保证所有的流程均已覆盖即可。
            接下来就是要实现数据层的工作了,从而实现三层的测试架构。
            2.6测试数据的组织
            测试数据的组织也是在“测试计划”模块中实现。选择某一个流程,在“测试脚本”选项卡中右击要设计数据的组件,在弹出窗口中选择“迭代”,弹出组件迭代设置窗口,如图:

            在此可以根据测试需求设置组件要迭代的次数,以及每次迭代的参数值。如上图,设置了3次迭代每次迭代输入的订单信息均不相同。同时可以设置输入参数选择上一个组件的输出参数(在复选框中打勾,按提示操作即可),如下图。是流程4中的“打开订单”组件,orderNo参数使用的是“选择航班并插入”组件的输出参数。注意,此流程的“选择航班并插入”设置了三次迭代,所以“打开订单”也要对应三次迭代,否则会提示错误。


     
            在组织数据时,可以在单个组件中设置每次迭代的数据,由于组件的重用次数很多,所以这样做还是有些麻烦。解决方法就是在外部组织好数据后,批量导入。QC默认是txt文本文件,格式可以把现有参数导出,参照它给的格式设计自己数据即可。
            至此,数据层的设计也已完毕。同时也实现了测试数据和具体的业务流程相分离。
            其实,这里的数据和业务层的分离并不是很彻底,不能根据自己的想法去设计,所以还有很大的改进空间,还需要进一步研究。
            通过以上几个步骤,开发工作基本结束。以后就是需要相关的维护即可。当然,最后还是要执行测试。

    2.7执行测试
            测试的执行是在“测试实验室”中进行的。这里和操作QC执行用例很相似。也是组织目录,拖拽相应的测试流程即可,这里也不在累述。可参见用户手册执行测试用例部分。当然执行测试可以选择本机执行,也可以选择在远程机器上执行测试,但要注意要安装相应组件和设置主机。执行效果如下图:

            QC会记录每次执行的结果,包括流程中每个组件的执行状态,执行时间等信息。这也是QC的强大之处,它会给出一个很人性化的结果,方便我们后续的分析工作,以及对系统给出一个量化的指标。这一点QC做的相当完善,从需求开始到最后的缺陷分析以及测试报告,都会有一个图形的界面供我们参考,这对我们写测试报告提供了极大的方便,给我们提供了强有力的,可靠的数据支持。
            注:以上全部工作在WinXP(sp3)+QTP9.5+QC9.0环境下完成。
            三.总结
            本文只是针对业务组件测试给出了一个简单叙述,QTP以及QC的强大之处远不及这些。对于QTP和QC的其他功能本文没有提及,其他功能在自动化测试中起到的作用,是有些工具不能代替的,也许这也是现在很多公司、很多人都在学习、使用的原因之一吧!前一段时间51的调查文件就是一个很好的证明,HP(Mercury)的所有产品都是遥遥领先其他工具。当然有很多公司也有自己的测试框架,也有自己开发的测试工具。但不可否认QTP确实是一个很好的测试工具,虽然它很贵。
    需要提到的是,QTP和QC是一个开放式的架构,HP(也就是以前的MERCURY)为我们提供了很多接口,我们完全可以利用这些接口开发出自己的框架,实现三层乃至更高的框架结构。这些接口以及函数说明都能在QTP的帮助文档中找到。
            最后希望国内的测试发展越来越好,中国的软件越做越好。

  • 【转】LoadRunner性能测试学习流程

    2009-10-29 11:40:07

    因部门成员反馈学习性能测试时:

      (1)常常没有方向感,不知道自己要做哪些事;

      (2)学习时,不知道哪些要先学,哪些后学;

      (3)当学到一定程度时,不知道还要学习哪些东西;

      希望能有一个总体流程或思路做参考,所以编写了如下内容;

      以下只是个人的一些想法,仅供参考,希望大家发表自己的看法,共同探讨,共同进步;

      1、准备知识

      (1)什么是性能测试;

      (2)为什么做性能测试;

      (3)选择一款适合的工具;——推荐LR;

      2、LR的学习

      (1)了解LR能够做些什么;

      (2)了解LR整体流程,有个大概认识;

      选择协议——录制脚本——调试脚本——场景设置——运行场景——分析结果

      (3)了解流程中的每一步应该怎么做;

      选择协议:了解几个常用协议,一个一个来学习;(目前最常用的是WEB的HTTP协议;这个是重点学习对象,以后有时间时,再学习win socket协议及其它协议)主要还是根据自己公司的被测系统类型来选择;

      录制脚本:如何录制、录制时参数怎么配置等;

      调试脚本:运行时设置、集合点、事务、脚本参数化、关联等;

      场景设置:了解不同场景设置的区别;

      运行场景:如何查看运行日志,分析错误,各种监控器的使用(事务响应时间、系统资源等等)

      分析结果:对各种监控器监控的数据进行分析;(这个较多要靠个人经验,不同的项目有自己的特殊性,不能一概而论);

      这个阶段,很考查个人知识的全面性;知识越全面,分析的越到位;

      需要了解的知识:网络知识、操作系统知识、硬件知识、软件知识(WEB服务器配置、数据库知识、底层架构使用到的各软件)等等;

      一开始我们只能做一个粗略的分析,后面再慢慢的积累经验;通常会由项目经理或系统配置管理人员来配合做结果分析;

      (4)推荐一些资料:

      LoadRunner文档资料大全.chm

      LR 227个问题.chm

      比较全面的学习资料;

      其它大部份为一些针对性的资料,根据当前学习的进度来选择查看;

      3、最最最重点的是:多操作

      有操作才会遇到各种各样的问题;解决问题是一种很好的积累经验的方法;

      遇到问题时:

      (1)首先自己先尝试解决(这个就是一个摸索的过程,可以发现很多以前没注意到的东西);

      (2)自己确实无法解决时(不要一个人闷着头在那想半天),网上查找资料;

      大部份你会遇到的问题,别人也会遇到,网上可能已有解决方案;

      查找的过程,也会学到很多东西;

      (3)还是没解决的话,问身边的同事,朋友;吸收别人的经验;

      4、有一定的理论和实践基础后,可以考虑学习别的性能测试工具

      LR不是万能的,单单靠它来实现所有的性能测试是不可能的;使用多了,会发现很多力不从心的时候;

      所以需要了解别的性能测试工具,不同的时候使用不同的工具,选择适合的才是最好的。

  • 开始→运行→输入的命令集锦(转)

    2009-10-20 17:32:37

    开始→运行→输入的命令集锦

    mstsc--远程桌面连接
    logoff--注销命令
    rononce -p --15秒关机
    tsshutdn--60秒倒计时关机命令
    iexpress--木马捆绑工具,系统自带
    tourstart--xp简介(安装完成后出现的漫游xp程序)
    winchat--XP自带局域网聊天
    sndrec32--录音机
    Nslookup--IP地址侦测器
    explorer--打开资源管理器
    lusrmgr.msc--本机用户和组
    services.msc---本地服务设置
    oobe/msoobe /a--检查XP是否激活
    notepad---打开记事本
    cleanmgr--**整理
    net start messenger--开始信使服务
    compmgmt.msc---计算机管理
    net stop messenger---停止信使服务
    conf----启动 netmeeting
    dvdplay---DVD播放器
    charmap---启动字符映射表
    diskmgmt.msc---磁盘管理实用程序
    calc----启动计算器
    dfrg.msc--磁盘碎片整理程序
    chkdsk.exe---Chkdsk磁盘检查
    devmgmt.msc--- 设备管理器
    regsvr32 /u *.dll--停止dll文件运行
    drwtsn32---- 系统医生
    rononce -p --15秒关机
    dxdiag----检查DirectX信息
    regedt32--注册表编辑器
    Msconfig.exe---系统配置实用程序
    rsop.msc--组策略结果集
    mem.exe---显示内存使用情况
    regedit.exe--注册表
    progman---程序管理器
    winmsd----系统信息
    perfmon.msc--计算机性能监测程序
    winver----检查Windows版本
    sfc /scannow---扫描错误并复原
    taskmgr---任务管理器(2000/xp/2003)
    wmimgmt.msc--打开windows管理体系结构(WMI)
    wupdmgr---windows更新程序
    w脚本---windows脚本宿主设置
    write-----写字板
    winmsd----系统信息
    wiaacmgr--扫描仪和照相机向导
    mem.exe---显示内存使用情况
    Msconfig.exe---系统配置实用程序
    mplayer2--简易widnows media player
    mspaint---画图板
    mplayer2--媒体播放机
    magnify---放大镜实用程序
    mmc-----打开控制台
    mobsync---同步命令
    dxdiag----检查DirectX信息
    drwtsn32---- 系统医生
    devmgmt.msc--- 设备管理器
    dfrg.msc--磁盘碎片整理程序
    diskmgmt.msc---磁盘管理实用程序
    dcomcnfg--打开系统组件服务
    ddeshare--打开DDE共享设置
    dvdplay---DVD播放器
    net stop messenger---停止信使服务
    net start messenger--开始信使服务
    notepad---打开记事本
    nslookup--网络管理的工具向导
    ntbackup--系统备份和还原
    narrator--屏幕“讲述人”
    ntmsmgr.msc--移动存储管理器
    ntmsoprq.msc---移动存储管理员操作请求
    netstat -an--(TC)命令检查接口
    syncapp---创建一个公文包
    sysedit---系统配置编辑器
    sigverif--文件签名验证程序
    sndrec32--录音机
    shrpubw---创建共享文件夹
    secpol.msc---本地安全策略
    syskey----系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
    services.msc---本地服务设置
    Sndvol32--音量控制程序
    sfc.exe---系统文件检查器
    sfc /scannow---windows文件保护
    taskmgr---任务管理器
    eventvwr--事件查看器
    eudcedit--造字程序
    explorer--打开资源管理器
    packager--对象包装程序
    perfmon.msc--计算机性能监测程序
    progman---程序管理器
    regedit.exe--注册表
    rsop.msc--组策略结果集
    regedt32--注册表编辑器
    regsvr32 /u *.dll--停止dll文件运行
    regsvr32 /u zipfldr.dll----取消ZIP支持
    cmd.exe---CMD命令提示符
    chkdsk.exe---Chkdsk磁盘检查
    certmgr.msc--证书管理实用程序
    calc----启动计算器
    charmap---启动字符映射表
    cliconfg--SQL SERVER 客户端网络实用程序
    Clipbrd---剪贴板查看器
    conf----启动netmeeting
    compmgmt.msc---计算机管理
    cleanmgr--**整理
    ciadv.msc----索引服务程序
    osk-----打开屏幕键盘
    odbcad32--ODBC数据源管理器
    oobe/msoobe /a--检查XP是否激活
    lusrmgr.msc--本机用户和组
    Nslookup--IP地址侦测器
    fsmgmt.msc---共享文件夹管理器
    utilman---辅助工具管理器
    gpedit.msc---组策略
  • 【转】健康题板

    2009-10-20 16:53:08

    粉色题板
    1. 在干净的床上裸睡
    2. 生理期不吃巧克力,因为会加重痛经
    3. 养成记录生理周期的习惯
    4. 通过运动而非调整型内衣来塑造曲线
    5. 不翘二郎腿,以免压迫神经
    6. 贴身衣物不干洗
    7. 拉风的丁字裤不适宜日常穿着
    8. 去年的衣服要进行曝晒后才可以穿
    9. 如非必要,不使用卫生护垫
    10. 定期检查化妆品的保质期
    11. 洗浴后一小时再化妆
    12. 即使爱美,也不要在耳朵上部的外缘软骨部位穿耳洞
    13. 了解自己的家庭病史,特别是母亲和外婆的病史

    蓝色题板
    1. 每天踏进办公室,先将窗户打开透气,再坐下来工作
    2. 如果一天要接听5小时电话,使用无线耳机
    3. 复印文件时,与复印机保持至少一米
    4. 只在非常必要时才使用滴眼液
    5. 不趴在办公桌上午睡
    6. 在办公室为自己准备小靠垫,放在腰部
    7. 不要将笔记本电脑放在膝上使用
    8. 在办公桌上养一盆仙人掌,帮助吸收辐射
    9. 阅读完报纸后,记得清洗掉沾在手上的油墨
    10. 每30分钟伸一次懒腰
    11. 办公室地毯定期清洗杀虫
    12. 用完电脑后要清洁面部及手部,清除辐射微尘
    13. 单肩的短带挎包会加重肩周炎症状
    14. 公文包里的口红与签字笔分格存放
    15. 每天保证有2小时以上的时间,让脚从高跟鞋时解放出来
    16. 每周晚过22:00的加班不超过一次

    绿色题板
    1. 浴室保持干燥,防止霉菌滋生
    2. 沐浴不超过10分钟
    3. 用温水刷牙,同时刷刷舌头
    4. 用冷热水交替洗脸
    5. 不用塑料器皿盛装热水
    6. 定期清理冰箱
    7. 微波炉在工作时,请离开厨房
    8. 使用抽油烟机
    9. 晚餐时关掉电视机
    10. 尽量避免使用厚绒布窗帘
    11. 杀虫剂和清洁剂要放在远离起居场所的储物间
    12. 用天然的花香或果香代替芳香剂
    13. 冬天居室里的加湿器使用纯净水
    14. 不要贪图方便将电脑带进卧室
    15. 不要把手机放在枕边充当闹钟
    16. 头发没干时,别急着入睡
    17. 卧室的房间要用柔和色彩

    黄色题板
    1. 在牛奶和豆浆之间,选择后者
    2. 觉得还可以再吃半碗饭时,离开餐桌
    3. 如果身体不感到饥渴,每天只需饮用4杯水
    4. 多喝酸奶
    5. 无论什么原因,都别抽烟
    6. 在食谱里添加杂粮和蔬菜
    7. 饮绿茶胜过红茶
    8. 重视早餐多过晚餐
    9. 控制盐的用量
    10. 起床后先刷牙,再喝水
    11. 经常嚼口香糖
    12. 一早一晚,两个苹果可以有效改善便秘
    13. 纯素食可能导致荷尔蒙分泌异常,造成不孕
    14. 每周至少吃一次鱼
    15. 远离可乐等碳酸饮料
    16. 不喝久煮的火锅汤
    17. 没有果汁牛奶这回事,它们是天生的冤家
    18. 饭前吃水果胜过饭后
    19. 睡前可以来一杯红葡萄酒
    20. 喝咖啡可能引起女性骨质疏松

    橙色题板
    1. 多享受早晨8-9点的阳光
    2. 跑步、骑脚踏车等运动可以保持优美的腿部线条
    3. 热水泡脚可有效预防静脉曲张
    4. 精神极度疲倦时并不适宜以运动减压,休息更重要
    5. 冬季少做户外运动
    6. 10层以下,不乘坐电梯
    7. 每三个月改变一次你的健身菜单
    8. 每天运动半小时,而非周末运动3小时
    9. 边看电视边做柔软体操
    10. 经常散步
    11. 午休也是健身的好时间,不一定非等到晚上
    12. 光脚穿运动鞋固然舒服,却对健康不利
    13. 睡半硬的床铺更有利于颈椎健康
    14. 去正规的医院而非美容院接受按摩
    15. 非运动状态下不喝功能性饮料
    16. 运动后休息半小时再入浴
    17. 不在过吵的健身房中锻炼
    18. 正确的姿势比专程去健身更有效 (来源)

  • 【转】测试人员容易遗漏一些隐藏的缺陷(转)

    2009-10-20 16:09:02


     


    通常软件测试会暴露软件中的缺陷,经过修正后可以保证软件系统的功能满足需求并正确运行。但是,在系统测试和确认测试中,测试人员容易遗漏一些隐藏的缺陷。众所周知,软件测试不可能发现所有的缺陷,而软件开发周期各个阶段仍然存在注入缺陷的可能,但是,有一些缺陷是测试中容易忽略的,也就是说,通过测试方法和用例可以充分暴露这些缺陷,遗憾的是,它们往往被忽略或者某种原因忘记测试了,这就给软件留下了隐患或者危机。这些容易被忽略的缺陷包括:

      1、安装缺陷

      通常项目组完成代码后,发布时候安装打包是最后一个环节,而软件测试人员通常在测试的时候,没有仔细的测试这一部分,而把用例集中在其他功能上。安装时候的缺陷通常通过拷贝而不是运行安装程序方式给测试人员安装软件,结果正式安装时候出现问题,引起例如控件没有注册,注册表没有导入等。删除时候没有注意安装文件夹是否存在用户文件,造成数据丢失;使用绝对路径;安装顺序没有说明书。

      2、配置文件

      有些文件在ini等配置文件中写出了管理员口令密码等信息,而且是明文的!这是一个安全隐患。另外,有些安装文件的 XML 文件,为了方便在数据库和中间层连接文件中写入了Admin 口令和密码。作为一个合格的软件测试人员,必须检查这些可以用记事本打开的文件。因为,一个稍有常识而且喜欢探索的用户,可能从中获取信息而成为不自觉的黑客。所以,配置文件可能成为软件安全方面的一个缺陷。

      3、网页安全缺陷

      现在网站开发已经注意到:登陆网站进入其内部网页后,直接拷贝网址,然后粘贴到另一IE 窗口输入,可以绕过登陆直接访问。也许商业网站很关注这个问题,但是很多行业软件却很容易忽略。

      网页安全缺陷还可能存在于 IE 弹出的子窗口。有些设计不严格的软件,在主页面关闭的时候子页面还可以运行,这是一个明显的漏洞,而且还大大增加了错误发生的几率。

      4、判断顺序/逻辑缺陷

      对界面进行多个输入判断的时候,非常容易出现这种问题。例如判断年月顺序,判断长度,判断非空等。假如操作员仅仅满足单个条件,保存不能成功;而按界面从上之下顺序一一满足条件之后,保存是没有问题的。但是,改变一下输入的次序,校验失效。例如,一一满足条件之后,不保存,倒过来将上面的输入改成非法输入,然后保存,结果居然也能成功,这是因为原先的判断由于发生过,或者根据语句顺序只检查最后一个判断,所以没有报错。这种错误尤其在Javascrīpt 脚本的页面中要注意。能够保存不能保证数据正确,有可能引起系统崩溃或者后续数据错误。所以,在测试的时候,不要按照正常的顺序输入,而是要打乱步骤,看看代码是否强健,是否在判断逻辑上没有错误。良好的代码应该经得起折腾,至少保存时会再此全部进行判断,而不只是简简单单走到判断的最后一行。

      5、调试语句和冗余信息

      维护项目和升级改造的推广系统最容易潜伏这类缺陷。典型表现在没有删除或者屏蔽调试语句。弹出一个界面不友好的提示信息,会使不明真相的用户产生误以为系统发生了严重故障,从而引起对软件的不信任感。页面中某个角落存在当前客户不需要的冗余按钮和功能也是一种缺陷。多余的功能会使用户以为是额外附加部分而去使用,其结果可想而知;而多余的按钮会误导好奇心强的用户操作,产生不必要的错误。

      同样值得关注的还有参数设置,由于没有实际数据,开发人员在调试或者单元测试的时候,习惯性的进行自我设定而忘了删除,软件测试人员可能会忽略掉了这部分测试,也可能导致在客户现场发生错误而影响系统发布和验收。

      6、不可重现的故障

      新参加软件测试的人员或者新来的开发人员总是要问,不可重现的缺陷是否需要记录,有必要吗?回答是肯定的。测试必须如实的记录发生的问题,也许不能重现,或者使非软件系统本身问题,但是,可能这些偶然性背后是有规律的,不记录这些,就不可能发现这些规律。

      7、多节点的逆向流转缺陷

      当前软件不少喜欢使用工作流来驱动。工作流的问题,就是可能出现多个流向分支。测试容易忽略的部分,就是工作流多节点的逆向流转。例如,通过不通过涉及两个分支,但是流程逆转的时候,有可能不是回到上一节点而是平级的另一个节点去了。软件测试要格外注意这类用例的设计。另外,有些时候默认分支在向前的时候是有默认值的,例如默认通过,那么保存的时候要提示用户是否通过,否则可能由于操作疲劳而走错了节点,引起回退。

      8、输入框缺陷

      试过往输入框粘贴数据而不是直接输入吗?可能这里会出现问题。按 Ctrl+V 的时候,输入框会根据长度大小自动截断输入长度。但是用鼠标,截断可能会失效。有一次测试人员就是用这种方法把一篇 Word 文档输入进去了,保存的时候,数据库崩溃。有些网站登陆的口令****可以拷贝下来的,只要放在剪贴板里面马上明文显示。

      输入框可以说是问题最多的部分,能够引起的麻烦也很多。日期、数字、文本等等,都需要耐心的测试一下。

      9、界面布局缺陷

      曾经有一次,项目经理回来向测试部反映一个问题,客户对界面不满意。原因很简单,因为界面上删除按钮和保存按钮挨得很近。结果有些操作不熟练的业务人员,很容易误按。这个问题是测试人员没有意料到的,因此注意关闭、删除、退出按钮与保存、下一步等按钮的距离。类似的按钮应按此规则排列分布。

      界面布局还可能发生在窗口最大化和最小化上,有可能窗口缩小的时候没有下拉框或不匹配分辨率,对用户来讲,这个错误实在很低级。有些用户由于操作习惯,非常不喜欢腾出手使用鼠标,尤其是大量输入的界面,因此,要注意设置键盘的快捷方式。还有,按 Tab定位到下一焦点时要注意顺序,避免跳转太灵活而让操作人员感到无从适应,在界面进行维护或者修改的时候,不要忘了软件测试开发人员是否无意改变了这些快捷方式和跳转顺序。

      10、版本和补丁包的环境问题

      理论上讲,这属于兼容性测试应该覆盖的问题。有些客户很喜欢更新最新的软件版本或者微软时不时打些补丁包,问题就出现了。有时候升级不一定是好事。这些问题最好在测试的时候增加几个用例,多用不同软件版本的机器跑一跑。软件测试有个定律是:你没跑过的地方,就一定会出事。经常听到开发人员抱怨,怎么我的机器没问题,你的机器就有事了呢?这不能完全靠配置管理员解决问题,环境配置项是大家最容易忽略的。

      11、用户管理缺陷

      用户管理的角色和授权需要好好研究一下,作过测试的人员都知道,有时候为了测试的方便,测试用户都是具有超级权限的用户。而且,比较容易忽略用户管理这一部分的测试。往往发往客户的时候,很多测试用户都没有删除。

      另外,有些接口的用户和口令,到软件使用寿命结束都没有更改过。在一次测试中,软件测试人员发现,给一个用户授超级用户权限,之后更改这个用户为受限权限。使用中发现,用户居然没有真正回收权限,用户管理界面上没有任何不对。及早准备用户管理用例,不要等到测试快结束时候才想起。

      12、常识缺陷

      从逻辑或者统计学上讲,计算机是允许如此处理的,但是从常识上来讲,这些情况不可能发生。例如电话号码不可能出现小数点,终止时间不能大于开始时间等等。除此之外,常识还要结合业务特点来进行判断,因此,开发和测试人员要格外注意对自己知识的培养以及增加对需求细节的了解。不能因为一味追求进度而采用最简单的代码来实现,对用户来说,这些错误可能是很荒谬的。

      尽管我们不可能完美的测试一个软件,但是我们仍然可以改进我们的软件测试。每次测试结束,及时总结测试中的不足,进一步完善用例。思考一下那些容易忽略的软件缺陷,能提高对软件测试的认识,提高所在组织软件的质量。
     
  • 【转】Web网站测试技术要领集合

    2009-10-16 17:28:58

    Web网站测试技术要领集合

    基于Web的系统测试与传统的软件测试既有相同之处,也有不同的地方,对软件测试提出了新的挑战。基于Web的系统测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。

      本文从功能、性能、可用性、客户端兼容性、安全性等方面讨论了基于Web的系统测试方法。

      随着InternetIntranet/Extranet的快速增长,Web已经对商业、工业、银行、财政、教育、政府和娱乐及我们的工作生活产生了深远的影响。许多传统的信息和数据库系统正在被移植到互联网上,电子商务迅速增长,早已超过了国界。范围广泛的、复杂的分布式应用正在Web环境中出现。Web的流行和无所不在,是因为它能提供支持所有类型内容连接的信息发布,容易为最终用户存取。

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

      在基于Web的系统开发中,如果缺乏严格的过程,我们在开发、发布、实施和维护Web的过程中,可能就  会碰到一些严重的问题,失败的可能性很大。而且,随着基于Web的系统变得越来越复杂,一个项目的失败将可能导致很多问题。当这种情况发生时,我们对WebInternet的信心可能会无法挽救地动摇,从而引起Web危机。并且,Web危机可能会比软件开发人员所面对的软件危机更加严重、更加广泛。

      在Web工程过程中,基于Web系统的测试、确认和验收是一项重要而富有挑战性的工作。基于Web的系统测试与传统的软件测试不同,它不但需要检查和验证是否按照设计的要求运行,而且还要测试系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。然而,InternetWeb媒体的不可预见性使测试基于Web的系统变得困难。因此,我们必须为测试和评估复杂的基于Web的系统研究新的方法和技术

      一般软件的发布周期以月或以年计算,而Web应用的发布周期以天计算甚至以小时计算。Web测试人员必须处理更短的发布周期,测试人员和测试管理人员面临着从测试传统的C/S结构和框架环境到测试快速改变的Web应用系统的转变。

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

      一个网站基本完工后,需要通过下面三步测试才可以交活。

      一、 制作者测试,包括美工测试页面、程序员测试功能。在做完后第一时间内有制作者本人进行测试。

      a) 页面 包括首页、二级页面、三级页面的页面在各种常用分辨率下有无错位;图片上有没有错别字;各连接是否是死连接;各栏目图片与内容是否对应等

      b) 功能 达到客户要求;数据库连接正确;各个动态生成连接正确;传递参数格式、内容正确;试填测试内容没有报错;页面显示正确

      二、 全面测试 根据交工标准和客户要求,由专人进行全面测试

      也是包括页面和程序两方面,而且要结合起来测,保证填充足够的内容后不会导致页面变形。另外要检查是否有错别字,文字内容是否有常识错误。

      三、 发布测试 网站发布到主服务器之后的测试,主要是防止环境不同导致的错误

    软件缺陷的原则

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

      测试的主要方面:

      一、功能测试

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

      1、链接测试

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

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

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

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

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

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

      可惜的是对于动态生成的页面的测试会出现一些错误。

      2、表单测试

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

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

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

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

      3Cookies测试

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

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

      4、设计语言测试

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

      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 外部接口

    查看(366) 评论(0) 收藏 分享 管理

  • 关于测试数据的准备

    2009-10-16 17:17:24

    对于一些业务比较复杂的中型以上项目来说,准备正确、真实的测试数据对于成功的测试项目是至关重要的。很庆幸在网站上看到了一些关于这方面的帖子总结的都非常好。这里综合了一下,以备日后的参考!

    不管是自动测试还是手动测试,都会涉及到基础数据的准备问题。通常情况下,可以根据系统实际情况,按照如下顺序来准备数据:

      1. Production Data 生产数据

      如果系统前一版本已经发布,我们能够拿到这些生产数据来测试,那是最为理想的,最能反映最终用户环境,是需要优先考虑的。

      2. Legacy System Data 遗留系统数据

      虽然当前系统还没有发布任何版本,但是有一个遗留系统,那就应该利用数据迁移,尽量拿到遗留系统相对比较真实的数据,这样的数据跟最终用户环境也比较接近,也是比较理想的。

      3. UI Input UI输入创建数据

      如果既没有发布任何版本,也没有遗留系统,那么就要考虑从UI上输入相关数据,这种数据跟真实数据比较接近,较为可信赖。

      4. Script. create 用脚本创建数据

      最后,对于不符合一二两种情况,而且没有UI,或者需要的数据量太大,没法一条一条的通过UI输入创建。这时候,就要考虑用脚本来产生,尽量模拟用户的真实数据。

      总之,测试过程中数据的真实性很重要,有些缺陷并不是程序本身的问题,而是一些脏数据引起的,因此我们在进行测试数据准备的时候,要按照上述优先顺序来准备数据。

    软件测试过程中,测试数据的准备是一个工作量很大而且也是一个技术活。因此如何准备大量的测试数据,而且如何准备高质量的测试数据,满足测试的需求,就是一个重要的话题。
            首先看数据的来源,数据的来源一般来讲有三个个,一个是根据被测系统需求的分析,针对正常业务,异常情况,边界情况等来构建完整的数据,又称为“造”数据。这不仅仅包括最基本的基础数据,比如:用户、权限、配置、基础编码、原数据等,还包括上面提到的业务数据。这对于比较小型的系统来说还是可行的,对于大型的系统来说可能就是一个巨大的工程了。
            第二种方式就是利用现有系统,这适合已有类似系统,测试是针对升级或者增加功能的产品化的系统。这种情况把已经在生产环境中运行的数据导出。在此基础上再进行数据的整理、加工为测试数据。
            还有一种方式就是将现有非电子化的业务数据录入到系统中,在验证业务的同时也完成了测试数据的积累。即边测试边积累数据。但是这种情况积累的数据往往有一定局限性,因为已经发生的业务数据基本是正确的、一致的,而且可能缺少某些特定业务的数据(不常发生的业务)。这样就需要根据对测试需求的分析,追加新的测试数据,以便能完整覆盖业务类型。
            确定好数据来源后,还需要对已有数据进行分析、验证、检查,保证数据的质量,数据的质量一般要满足测试需求、覆盖被测业务、覆盖测试边界,以及要满足完整性、一致性等要求。检查完后要整理和完善数据,清除无用和冗余的数据、补录不完整的数据,修改一些错误的数据。
            经过整理好的数据要纳入配置管理,以后根据需求和变更要进行数据的维护和更新,以保证满足系统测试的要求。

                       

  • 【转】一个成功测试人解读测试这条路

    2009-10-16 17:10:31

    那我说一下我的看法吧。因为大家都是搞测试的,这里我也只谈测试。

      首先,我们可以有两条路发展,技术和管理。管理就是做team lead, manager, director这么走。因为我没有走这条路,所以,我这里也只谈技术。而且,即使走管理,也是应该具备很强的技术能力才行,所以技术是我们的发展之本。我个人不喜欢技术不精通的领导,也不喜欢被这种人管理。

      技术的发展是分阶段的,基本上你要是能发展到最后的阶段,工作,钱,房子,车子,老婆都不用发愁了。当然要一步一步走,不可能一步升天,而且一路走过来也不是很容易,应该说大部分人可能都达不到。不过只要你肯努力,坚持不懈,就一定能达到。

      第一阶段:就是基本功的问题。这个阶段从大学入学就开始了,我接触不少人工作几年都没有达到要求。这个要求是一定要达到的,不然以后没法往高发展。大学的一些课程一定要学好,主要是数据结构,算法,数据库操作系统,计算机网络。争取精通两门。数据结构,算法对软件开发非常的重要,很多大公司面试就考这些。你不过关,根本通过不了面试,一两道算法题一下就把你难住了。另外,我可以告诉你,顶尖公司的面试80%都是考算法,你有没有经验不要紧,做没做过项目不要紧。关键是考察你的基本功,基本功打好了,其他工作就都容易很多了,基本功打不好,什么都白说。操作系统,争取要精通windows或者linux内核,看你走哪条路了,我是搞windows的,不过他们之间很多地方也是相通的。计算机网络,争取精通TCP/IP协议。数据库我不怎么懂,我的理解是要精通oracle, sqlserver, 还有sql编程。

      另外就是编程技术了。C,C++,面向对象一定要搞懂,搞熟。大公司面试的算法就是要你用C/C++实现的。这些搞熟了,学习其他语言就是几个小时的事情。(我指的是上手,不是精通)。这些东西搞不透,不管你其他语言用多少年,回来学他们还是难。

      再有就是英语水平了,听说读写,各个方面都要达到要求。技术到了一定程度,英语对你的发展就起到了非常决定性的作用了。你英语好,就可以去外企,就可以外派出国,甚至国外发展。

      以上这些都是在大学应该掌握好的。当然了,能在大学掌握好这些的毕竟是少数。这些少数人就是去了微软,google的那些,一毕业就拿到月薪上万工资的。大部分人都是达不到要求的,这没关系,毕业后一定要找时间把这些基本功补上。不然的话,在下个阶段的发展就很受限制了。

      第二阶段:计算机知识的扩展,行业知识的精通。这个阶段从你大学毕业走向第一个工作岗位开始。工作之后,发现计算机的世界比大学的知识要博大精深很多。一开始工作,就要拼命吸收以前没有接触过的,新的知识。这个就不多说了,大家都会有很多感受的,会觉得很多东西都不会,不会就学。以后你跳槽去面试,人家就会看你工作几年,这几年干什么了。工作1,2年之后,很重要的一件事情就是要选择一个行业了。也许是你现在正在从事的行业,也许是一个新的行业。总之,你自己要为自己规划,选择一个适合自己,而且又热门,以后有发展的行业。无论是现在的行业,还是跳槽到一个新的行业,都需要你开始积累在这个行业的经验了,要精通这个行业。有这个基础之后,就要去这个行业里top的公司了,国企,外企都可以,一定要有名气,大公司。比如,通信的华为,搜索的百度,等等。如果你精通了这个行业,去这些公司不是很难。

      另外有一点很重要,如果你本科不是一所名校毕业的话,争取能上一个名校的研究生,全职,兼职都可以。这样可以为下一阶段做好充分的准备,否则的话会有比较大的困难。总之了,是自己的短处都要想办法去弥补,不然发展总会受限制。

      第三阶段:国际著名大公司。有了前两个阶段的积累,加上自己的英文水平,就要找机会进入国际的大公司了。相信这个时候就会有很多猎头来联系你了。选择你这个行业的世界前3,最好是第一或者第二。进去之后要学习两个方面,一是英文,中国人可以学一辈子英文的。另外一个就是大公司的管理。可以这样说,国际大公司的管理有很多类似的地方,因此他们的招聘非常愿意招其他国际大公司的职员。这就是为什么,你一旦踏上一家公司,一辈子都不用愁工作了,可以在这些大公司跳来跳去,工资节节高。到了这个阶段,你基本上可以有个比较不错的生活了,房子,车子都不会是太大的问题。

      第四阶段:向国际化发展。如果你还不满足,觉得自己还有能力更进一步,那我就建议你向国际化发展了。中国的工资毕竟有限,到了第三阶段也不过就是20万左右,你可能还不满足。那么你就可以联系国外的公司了,有了你的英文,你的经验,你的背景,到时候就是水到渠成了。我相信国际的猎头也会盯上你的。

      最后说一下,如果你现在已经具备了我所说的各个阶段的能力,那么你的简历是任何公司都很难拒绝的了。因为目前的情况,具有这些素质的测试人员在世界都紧缺。很多公司都招不到人,即使连google,MS也不列外。他们都在到处寻找这种人。

      最后说一下测试。我一直没有讨论测试的问题,因为我一直没有把测试当作一个难得东西来看待。我认为测试是表面上的,我前边提到的东西要比它重要的多。欢迎大家一起来讨论。我也是进入测试才2年多的时候,其中大多数的时间也像大家一样的迷惘,很多时候也很悲观。不过通过自己的努力,最后终于得到了一个满意的结果。我发现自己对测试这个行业的理解和很多人都不同,希望我的理解能给大家一点帮助。

      那我说一下各阶段掌握的知识吧:

    • 大学主要是C,C++,VC。
    • 工作第一年就是VC编程,TCP/IP编程。
    • 后来的半年主要是C编程。
    • 研究生搞了很多,不过都不算精通,Java,Linux,并行计算,分布式计算。
    • 做测试以后搞了.net, C#, 开发自动化测试系统。
    • 另外,英文水平可以和外国人直接沟通。
  • 【转】软件测试方法大全

    2009-10-16 17:03:00

    β测试_Beta测试

      β测试,英文是Beta testing。又称Beta测试,用户验收测试(UAT)。

      β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。

      当开发和测试根本完成时所做的测试,而最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其他人员员完成,不能由程序员或测试员完成。

      α测试_Alpha测试

      α测试,英文是Alpha testing。又称Alpha测试.

      Alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由该系统的程序员或测试员完成。

      在系统开发接近完成时对应用系统的测试;测试后,仍然会有少量的设计变更。这种测试一般由最终用户或其他人员来完成,不能由程序员或测试员完成。

      可移植性测试

      可移植性测试,英文是Portability testing。又称兼容性测试。

      可移植性测试是指测试软件是否可以被成功移植到指定的硬件或软件平台上。

      用户界面测试-UI测试

      用户界面测试,英文是User interface testing。又称UI测试。

      用户界面,英文是User interface。是指软件中的可见外观及其底层与用户交互的部分(菜单、对话框、窗口和其它控件)。

      用户界面测试是指测试用户界面的风格是否满足客户要求,文字是否正确,页面是否美观,文字,图片组合是否完美,操作是否友好等等。UI 测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏览功能。确保用户界面符合公司或行业的标准。包括用户友好性、人性化、易操作性测试。

      用户界面测试用户分析软件用户界面的设计是否合乎用户期望或要求。它常常包括菜单,对话框及对话框上所有按钮,文字,出错提示,帮助信息 (Menu 和Help content)等方面的测试。比如,测试Microsoft Excel中插入符号功能所用的对话框的大小,所有按钮是否对齐,字符串字体大小,出错信息内容和字体大小,工具栏位置/图标等等。

      冒烟测试

      冒烟测试,英文是Smoke testing。

      冒烟测试的名称可以理解为该种测试耗时短,仅用一袋烟功夫足够了。也有人认为是形象地类比新电路板功基本功能检查。任何新电路板焊好后,先通电检查,如果存在设计缺陷,电路板可能会短路,板子冒烟了。

      冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。

      随机测试

      随机测试,英文是Ad hoc testing。

      随机测试没有书面测试用例、记录期望结果、检查列表、脚本或指令的测试。主要是根据测试者的经验对软件进行功能和性能抽查。随机测试是根据测试说明书执行用例测试的重要补充手段,是保证测试覆盖完整性的有效方式和过程。

      随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试样例(TestCase)没有覆盖到的部分。另外,对于软件更新和新增加的功能要重点测试。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其对以前测试发现的重大Bug,进行再次测试,可以结合回归测试 (Regressive testing)一起进行。

      本地化测试

      本地化测试,英文是Localization testing。

      本地化就是将软件版本语言进行更改,比如将英文的windows改成中文的windows就是本地化。本地化测试的对象是软件的本地化版本。本地化测试的目的是测试特定目标区域设置的软件本地化质量。本地化测试的环境是在本地化的操作系统上安装本地化的软件。从测试方法上可以分为基本功能测试,安装/卸载测试,当地区域的软硬件兼容性测试。测试的内容主要包括软件本地化后的界面布局和软件翻译的语言质量,包含软件、文档和联机帮助等部分。

      本地化能力测试

      本地化能力测试,英文是Localizability testing。

      本地化能力测试是指不需要重新设计或修改代码,将程序的用户界面翻译成任何目标语言的能力。为了降低本地化能力测试的成本,提高测试效率,本地化能力侧是通常在软件的伪本地化版本上进行。

      本地化能力测试中发现的典型错误包括:字符的硬编码(即软件中需要本地化的字符写在了代码内部),对需要本地化的字符长度设置了国定值,在软件运行时以控件位置定位,图标和位图中包含了需要本地化的文本,软件的用户界面与文档术语不一致等。

      国际化测试

      国际化测试,英文是International testing。又称国际化支持测试。

      国际化测试的目的是测试软件的国际化支持能力,发现软件的国际化的潜在问题,保证软件在世界不同区域都能正常运行。国际化测试使用每种可能的国际输入类型,针对任何区域性或区域设置检查产品的功能是否正常,软件国际化测试的重点在于执行国际字符串的输入/输出功能。国际化测试数据必须包含东亚语言、德语、复杂脚本字符和英语(可选)的混合字符。

      国际化支持测试是指验证软件程序在不同国家或区域的平台上也能够如预期的那样运行,而且还可以按照原设计尊重和支持使用当地常用的日期,字体,文字表示,特殊格式等等。比如,用英文版的 Windows XP 和 Microsoft Word 能否展示阿拉伯字符串?用阿拉伯版的 Windows XP 和 阿拉伯版的Microsoft Word 能否展示阿拉伯字符串?又比如,日文版的Microsoft Excel对话框是否显示正确翻译的日语?一旦来说执行国际化支持测试的测试人员往往需要基本上了解这些国家或地区的语言要求和期望行为是什么。

      安装测试

      安装测试,英文是Installing testing。

      安装测试是确保软件在正常情况和异常情况下,例如,进行首次安装、升级、完整的或自定义的安装都能进行安装的测试。异常情况包括磁盘空间不足、缺少目录创建权限等场景。核实软件在安装后可立即正常运行。安装测试包括测试安装代码以及安装手册。安装手册提供如何进行安装,安装代码提供安装一些程序能够运行的基础数据。

      白盒测试-结构测试-逻辑驱动测试

      白盒测试,英文是White Box Testing。又称结构测试或者逻辑驱动测试。

      白盒测试是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。

      白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。

      白盒测试是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

      白盒测试常用工具有:Jtest、VcSmith、Jcontract、C++ Test、CodeWizard、logiscope。

      黑盒测试-功能测试-数据驱动测试

      黑盒测试,英文是Black Box Testing。又称功能测试或者数据驱动测试。

      黑盒测试是根据软件的规格对软件进行的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子。

      软件测试人员以用户的角度,通过各种输入和观察软件的各种输出结果来发现软件存在的缺陷,而不关心程序具体如何实现的一种软件测试方法。

      黑盒测试常用工具有:AutoRunner、winrunner、loadrunner。

      自动化测试

      自动化测试,英文是Automated Testing。

      使用自动化测试工具来进行测试,这类测试一般不需要人干预,通常在GUI、性能等测试和功能测试中用得较多。通过录制测试脚本,然后执行这个测试脚本来实现测试过程的自动化。国内领先的自动化测试服务提供商是泽众软件。自动化测试工具有AutoRunner和TAR等。

      回归测试

      回归测试,英文是Regression testing。

      回归测试是指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。

      根据修复好了的缺陷再重新进行测试。回归测试的目的在于验证以前出现过但已经修复好的缺陷不再重新出现。一般指对某已知修正的缺陷再次围绕它原来出现时的步骤重新测试。通常确定所需的再测试的范围时是比较困难的,特别当临近产品发布日期时。因为为了修正某缺陷时必需更改源代码,因而就有可能影响这部分源代码所控制的功能。所以在验证修好的缺陷时不仅要服从缺陷原来出现时的步骤重新测试,而且还要测试有可能受影响的所有功能。因此应当鼓励对所有回归测试用例进行自动化测试。

      验收测试

      验收测试,英文是Acceptance testing。

      验收测试是指系统开发生命周期方法论的一个阶段,这时相关的用户或独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。

      验收测试一般有三种策略:正式验收、非正式验收活Alpha 测试、Beta 测试。

      动态测试

      动态测试,英文是Moment Testing。

      动态测试是指通过运行软件来检验软件的动态行为和运行结果的正确性。

      根据动态测试在软件开发过程中所处的阶段和作用,动态测试可分为如下几个步骤:

      1、单元测试

      2、集成测试

      3、系统测试

      4、验收测试

      5、回归测试

      探索测试

      探索测试,英文是Exploratory Testing。

      探索测试是指通常用于没有产品说明书的测试,这需要把软件当作产品说明书来看待,分步骤逐项探索软件特性,记录软件执行情况,详细描述功能,综合利用静态和动态技术来进行测试。探索测试人员只靠智能、洞察力和经验来对bug的位置进行判断,所以探索测试又被称为自由形式测试。

      单元测试

      单元测试,英文是Unit Testing。

      单元测试是最微小规模的测试;以测试某个功能或代码块。典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。这个工作不容易做好,除非应用系统有一个设计很好的体系结构; 还可能需要开发测试驱动器模块或测试套具。

      集成测试

      集成测试,英文是Integration Testing。

      集成测试是指一个应用系统的各个部件的联合测试,以决定他们能否在一起共同工作并没有冲突。部件可以是代码块、独立的应用、网络上的客户端或服务器端程序。这种类型的测试尤其与客户服务器和分布式系统有关。一般集成测试以前,单元测试需要完成。

      集成测试是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。此外,如果程序由多个进程组成,应该成对测试它们,而不是同时测试所有进程。

      集成测试识别组合单元时出现的问题。通过使用要求在组合单元前测试每个单元,并确保每个单元的生存能力的测试计划,可以知道在组合单元时所发现的任何错误很可能与单元之间的接口有关。这种方法将可能发生的情况数量减少到更简单的分析级别

      系统测试

      系统测试,英文是System Testing。

      系统测试是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。

      系统测试的对象不仅仅包括需要测试的产品系统的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。因此,必须将系统中的软件与各种依赖的资源结合起来,在系统实际运行环境下来进行测试。

      端到端测试

      端到端测试,英文是End to End Testing。

      端到端测试类似于系统测试,测试级的“宏大”的端点,涉及整个应用系统环境在一个现实世界使用时的模拟情形的所有测试。例如与数据库对话,用网络通讯,或与外部硬件、应用系统或适当的系统对话。端到端架构测试包含所有访问点的功能测试及性能测试。端到端架构测试实质上是一种"灰盒"测试,一种集合了白盒测试和黑盒测试的优点的测试方法。

      健全测试

      健全测试,英文是Sanity testing。

      健全测试是指一个初始化的测试工作,以决定一个新的软件版本测试是否足以执行下一步大的测试努力。例如,如果一个新版软件每5分钟与系统冲突,使系统陷于泥潭,说明该软件不够“健全”,目前不具备进一步测试的条件。

      衰竭测试

      衰竭测试,英文是Failure Testing。

      衰竭测试是指软件或环境的修复或更正后的“再测试”。可能很难确定需要多少遍再次测试。尤其在接近开发周期结束时。自动测试工具对这类测试尤其有用。

      接受测试

      接受测试,英文是Accept Testing。

      接受测试是基于客户或最终用户的规格书的最终测试,或基于用户一段时间的使用后,看软件是否满足客户要求。一般从功能、用户界面、性能、业务关联性进行测试。

      负载测试

      负载测试,英文是Load testing。

      负载测试是测试一个应用在重负荷下的表现。例如测试一个 Web 站点在大量的负荷下,何时系统的响应会退化或失败,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。

      负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关的方面。

      强迫测试

      强迫测试,英文是Force Testing。

      强迫测试是在交替进行负荷和性能测试时常用的术语。也用于描述象在异乎寻常的重载下的系统功能测试之类的测试,如某个动作或输入大量的重复,大量数据的输入,对一个数据库系统大量的复杂查询等。

      压力测试

      压力测试,英文是Stress Testing。和负载测试差不多。

      压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽等。一般用并发来做压力测试。

      性能测试

      性能测试,英文是Performance Testing。

      性能测试是在交替进行负荷和强迫测试时常用的术语。理想的“性能测试”(和其他类型的测试)应在需求文档或质量保证、测试计划中定义。性能测试一般包括负载测试和压力测试。

      通常验证软件的性能在正常环境和系统条件下重复使用是否还能满足性能指标。或者执行同样任务时新版本不比旧版本慢。一般还检查系统记忆容量在运行程序时会不会流失(memory leak)。比如,验证程序保存一个巨大的文件新版本不比旧版本慢。

      可用性测试

      可用性测试,英文是Practical Usability Testing。

      可用性测试是对“用户友好性”的测试。显然这是主观的,且将取决于目标最终用户或客户。用户面谈、调查、用户对话的录象和其他一些技术都可使用。程序员和测试员通常都不宜作可用性测试员。

      卸载测试

      卸载测试,英文是Uninstall Testing。

      卸载测试是对软件的全部、部分或升级卸载处理过程的测试。主要是测试软件能否卸载,卸载是否干净,对系统有无更改,在系统中的残留与后来的生成文件如何处理等。还有原来更改的系统值是否修改回去

      恢复测试

      恢复测试,英文是Recovery testing。

      恢复测试是测试一个系统从如下灾难中能否很好地恢复,如遇到系统崩溃、硬件损坏或其他灾难性问题。恢复测试指通过人为的让软件(或者硬件)出现故障来检测系统是否能正确的恢复,通常关注恢复所需的时间以及恢复的程度。

      恢复测试主要检查系统的容错能力。当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。恢复测试首先要采用各种办法强迫系统失败,然后验证系统是否能尽快恢复。对于自动恢复需验证重新初始化(reinitialization)、检查点(checkpointing mechanisms)、数据恢复(data recovery)和重新启动 (restart)等机制的正确性;对于人工干预的恢复系统,还需估测平均修复时间,确定其是否在可接受的范围内。

      安全测试

      安全测试,英文是Security Testing。

      安全测试是测试系统在防止非授权的内部或外部用户的访问或故意破坏等情况时怎么样。这可能需要复杂的测试技术。安全测试检查系统对非法侵入的防范能力。安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。例如:

      ①想方设法截取或破译口令;

      ②专门定做软件破坏系统的保护机制;

      ③故意导致系统失败,企图趁恢复之机非法进入;

      ④试图通过浏览非保密数据,推导所需信息,等等。理论上讲,只要有足够的时间和资源,没有不可进入的系统。因此系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。此时非法侵入者已无利可图。

      兼容性测试

      兼容测试,英文是Compatibility Testing。

      兼容测试是测试软件在一个特定的硬件/软件/操作系统/网络等环境下的性能如何。向上兼容向下兼容,软件兼容硬件兼容。软件的兼容性有很多需要考虑的地方。

      比较测试

      比较测试,英文是Compare Testing。

      比较测试是指与竞争伙伴的产品的比较测试,如软件的弱点、优点或实力。来取长补短,以增强产品的竞争力。

      可接受性测试

      可接受性测试,英文是Acceptability Testing。

      可接受性测试是在把测试的版本交付测试部门大范围测试以前进行的对最基本功能的简单测试。因为在把测试的版本交付测试部门大范围测试以前应该先验证该版本对于所测试的功能基本上比较稳定。必须满足一些最低要求。比如不会很容易程序就挂起或崩溃。如果一个新版本没通过可测试性的验证,就应该阻拦测试部门花时间在该测试版本上测试。同时还要找到造成该版本不稳定的主要缺陷并督促尽快加以修正

      边界条件测试

      边界条件测试,英文是Boudary Testing。又称边界值测试。

      一种黑盒测试方法,适度等价类分析方法的一种补充,由长期的测试工作经验得知,大量的错误是发生在输入或输出的边界上。因此针对各种边界情况设计测试用例,可以查出更多的错误。

      边界条件测试是环绕边界值的测试。通常意味着测试软件各功能是否能正确处理最大值,最小值或者所设计软件能够处理的最长的字符串等等。

      强力测试

      强力测试,英文是Mightiness Testing。

      强力测试通常验证软件的性能在各种极端的环境和系统条件下是否还能正常工作。或者说是验证软件的性能在各种极端环境和系统条件下的承受能力。比如,在最低的硬盘驱动器空间或系统记忆容量条件下,验证程序重复执行打开和保存一个巨大的文件1000次后也不会崩溃或死机。

      装配/安装/配置测试

      装配/安装/配置测试是验证软件程序在不同厂家的硬件上,所支持的不同语言的新旧版本平台上,和不同方式安装的软件都能够如预期的那样正确运行。比如,把英文版的 Microsoft Office 2003安装在韩文版 的Windows Me 上,再验证所有功能都正常运行。

      静态测试

      静态测试,英文是Static Testing。

      静态测试指测试不运行的部分,例如测试产品说明书,对此进行检查和审阅.。静态方法是指不运行被测程序本身,仅通过分析或检查源程序的文法、结构、过程、接口等来检查程序的正确性。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。

      静态测试常用工具有:Logiscope、PRQA;

      隐藏数据测试

      隐藏数据测试在软件验收和确认阶段是十分必要和重要的一部分。程序的质量不仅仅通过用户界面的可视化数据来验证,而且必须包括遍历系统的所有数据。

      假设一个应用程序要求用户两条信息-----用户名和密码来创建帐户。这个用户输入这两条数据后保存。最后,一个确认窗口将通过数据库中找到这条数据来显示用户名和密码给用户。为了验证所有的数据保存是否正确,一个QA测试人员会在这个确认窗口简单的查看下用户名和密码。如果他们成功了?假设数据库记录了第三条信息----创建日期,它可能不会出现在确认窗口,而只在存档中才出现。如果创建日期保留的不正确,而QA测试人员只验证屏幕上的数据,那么这个问题就不可能被发现。创建日期可能就是一个bug,由于一个用户帐户保存了一个错误的日期到数据库中,这个问题也不可能会被引起注意,因为它被用户界面所隐藏。这只是一个简单的例子,但是它却演化出了一点:隐藏数据测试的重要性。

  • 【转】如何估算测试时间

    2009-10-16 16:56:36

    测试时间在什么阶段要评估出来?

      个人认为:最迟在申请测试资源时要评估出来,测试资源包括时间、人力、工具等。

      而测试时间体现在什么文档中以便作为测试依据呢?

      个人认为在测试计划中需要阐明。测试计划中至少要写明,要测试什么(即范围),谁来测试(即测试中的人力资源),怎么测试(测试策略),什么时间测试(测试中的时间资源),风险评估,然后就是一些约定和术语解释避免歧义。

      测试资源中用多少人力和时间资源是互相牵制的,都是依据这个项目或者产品按单位人需要的时间来计算的。

      测试时间如何估算呢?

      经验所得:开发的coding的时间和项目环境下测试的时间是1:1,前提是开发和测试的比例是3:1

      那麽这个时间的估算有些受到开发估算coding时间的牵制,那麽最好再结合:项目需要测试的范围来评估,根据测试范围大概会有多少用例产出,以及有多少牵扯到的用例需要回归,测试的平均执行效率来大概估算测试时间。

      在上面大的估算时间上,个人认为还要综合以下几点来保证测试时间比较靠谱:

      1、测试中由于需求与代码实现差异而产生的用例维护时间,以及和开发沟通,和需求方确认的时间。

      2、测试环境的稳定性,有时候测试环境宕掉,影响测试进度。

      3、开发人员的编码质量

      4、开发人员修复bug的速率

      5、开发人员中新人的比例,一般新人对业务不熟悉,编码考虑会欠周到。

      6、测试人员对执行测试用例的效率

      7、测试用例的复杂度,可能一个case里面有很多的step

      8、测试数据对项目的影响,如果项目本身测试过程中对数据的依赖很大,而数据的重用性不好

      9、测试中因为bug和开发人员的沟通时间,以及不断帮助开发人员重现bug的时间。

      10、项目中如果需要UIUED其他部门资源的支持,这些资源的配合沟通时间。

  • 【转】职场树(阶级图)

    2009-10-09 16:29:08

    职场树

    发现一张图,当时还没看懂什么意思,结果发现第二张带备注的版本,最上面那个叫经理,下面的就不说了,大家自己去思考吧。

    注:
    manager:经理
    executives:主管
    departments:部门
    the rest:其余者

  • 【转】测试工程师的职业发展

    2009-10-09 15:16:02

    1.技术类
    基础:
    (1)精通测试理论知识
    (2)精通1,2种测试类型及工具(性能测试自动化测试,安全类测试)(Loadrunner+Jmeter;WVS+APPSCAN+其他工具)
    中级:
    (3)熟练掌握2,3种编程语言(C#+VBS+php)
    (4)熟练掌握数据库知识(MSSQL+MYSQL)
    (5)熟练掌握windows和Linux(能搭建各类测试环境)(testlink+bugzilla+WordPress+公司产品)
    (6)熟练掌握应用服务器及中间件知识(IIS,Apache)
    高级:
    (7)熟悉各个平台下的系统架构及本公司的产品技术架构(petshop+PHP架构)
    (8)熟悉各类算法,数据结构等
    (9)独立建立完善的自动化测试架构(QC+QTP+Loadrunner)
    2.管理类
    基础:
    (1)精通测试理论知识
    (2)项目管理知识
    中级:
    (3)熟练掌握质量管理,流程管理和控制,配置管理的知识
    (4)熟悉掌握各种测试类型
    (5)非常熟悉公司的产品及产品的发展策略
    高级:
    (6)职业经理人

  • 【转】IT行业职位与薪资水平

    2009-10-09 15:10:42

    IT行业职位描述:

    程序员和系统分析员

        程序员和系统分析员,不存在哪个高级、哪个低级的区别,他们是两种职业,对职业技能的要求完全不同。程序员,顾名思义,主要是编写程序,是计算机专业入行需要练好的基本功。

        系统分析员的技能要求他必须要懂得如何写程序,但是他的重心在于如何把一个很大的项目切割成适合个人的小块,然后将这些小块组织起来。程序员的职责就是如何更好更快的实现这些小块。

        软件公司通常很看重程序员的实践经历,曾提出过哪些受到采纳的建议,开发过哪些可重用的组件等等。在哪方面进行过深入研究及简要过程,以及做过的每一项目中采用的软件产品与工具(如数据库、开发工具、语言等)、自己的职责、在哪些开发论坛活动过等等

        根据年限、经验、业绩、地区不同而不同。

        而IT就业岗位增加幅度落后于市场人才供给,给人力资源市场造成了一定压力。

    软件工程师

        是整个IT行业中基础岗位。根据开发进度和任务分配,完成相应模块软件的设计、开发、编程任务;进行程序单元、功能的测试,查出软件存在的缺陷并保证其质量;进行编制项目文档和质量记录的工作;维护软件使之保持可用性和稳定性。

        软件开发是一个系统的过程,需要经过市场需求分析、软件代码编写、软件测试、软件维护等程序。软件开发工程师在整个过程中扮演着非常重要的角色,主要从事根据需求开发项目软件工作。如某公司想实现办公自动化,需要专门的软件进行资源整合,该公司的软件开发工程师就可以开发相关办公软件。

        一般要求大专以上学历,两年以上工作经验,熟悉各类相关的编程语言和操作环境。

        熟悉Windows平台下的应用软件开发;精通C/C++、Visual Basic等编程语言,2年以上编程经验;熟悉MS SQL数据库,了解SQL语句以及ODBC编程,并具有实际开发经验;有一定网络编程经验,熟悉TCP/IP等网络协议;熟悉设计思想,了解软件工程规范;精通编译原理者优先;熟悉COM/DCOM,有开发OPC Server经验者优先;

        英语能力要求较高,能够熟练阅读并理解英文技术资料;有较强的学习和接受新事物的能力。如今日资企业在华外包产业的扩张,精通日语的软件开发人才更为紧俏。

        上海的平均年薪为6万元,北京为5.8万元,广州与杭州的薪资均衡,都徘徊在5.4万元左右,深圳地区最高,6.6万元奠定IT业龙头老大的地位。从不同公司性质来分析,欧美企业内软件工程师的薪酬普遍高于平均水平,多者突破8万大关;非欧美独资企业也以6.6万元的年薪险胜,其他各类企业都处在5.3万—5.5万元之间。

        软件工程师的需求几近三分之一,属于高端行业,技术含量高。以往没有引起足够的重视,随着中国的软件外包业的快速发展,软件开发专业人才的人数逐年增长。随着企业发展得更加成熟,IT行业细分化,对软件开发方面的人才需求会进一步加大。近两年,除了北京、上海、深圳、广州等IT产业相对发达的城市以外,杭州、大连、成都也相继成为IT业发展的新兴地带。

    软件测试工程师

        几乎每个大中型IT企业的产品在发布前都需要大量的质量控制、测试和文档工作,而这些工作必须依靠拥有娴熟技术的专业软件人才来完成。软件测试工程师就是这类企业的重头角色。同时软件测试是软件开发的重要环节,负责对程序员编写的程序进行检测,给程序员相关的修改意见。

        测试工程师一般会分为以下几个等级:初级测试工程师、中级测试工程师、高级测试工程师和测试管理人员。不同的级别的测试工程师薪资差异很大。

      初级测试工程师   

      工作通常是按照测试方案和流程对产品进行功能测试,检查产品是否有缺陷。具有一些手工测试经验,开发测试脚本并开始熟悉测试生存周期和测试技术;   

      测试工程师   

      能够编写测试方案,测试文档、与项目组一起制定测试阶段的工作计划。能够在项目中合理利用测试工具来完成测试任务。能够独立编写自动测试脚本程序并担任测试编程初期的领导工作,进一步拓展编程语言、操作系统、网络与数据库方面的技能;  

      高级测试工程师   

      不但需要掌握测试与开发技术,而且对所测试软件对口的行业非常了解,能够对测试方案可能出现的问题能够进行分析和评估。帮助开发或维护测试或编程标准与过程,负责同级的评审,并能够指导初级的测试工程师;

      Team Leader(测试主管)   

      一般具有5年左右工作经验,负责管理一个小团队。负责进度安排、工作规模/成本估算、按进度表和预算目标交付产品,负责开发项目的技术方法,能够为用户提供支持与演示;  

      测试经理   

      能够担当测试领域内的整个开发生存周期业务,能够为用户提供交互和大量演示,负责项目成本、进度安排、计划和人员分工;

      计划经理   

      具有多年纯熟的开发与支持(测试/质量保证)活动方面的经验,管理从事若干项目的人员以及整个开发生存周期,负责把握项目方向与盈亏责任。软件测试工程师在IT行业中越来越受到重视,其薪资也节节高升;但上述分析,具体视不同地域、不同性质企业、测试工程师的不同能力而定。

    大专以上学历,一年以上相关工作经验,不仅需要理解和掌握测试理论、标准和规范,根据不同企业的产品特点,要求了解相应的开发测试方法,而且还要熟练操作一种甚至多种测试工具。对于资深的软件测试人员,有些企业还要求其本身有自主开发测试工具的能力。

        4年的工作经验,正常的发展,会成为一名高级测试工程师。

        作为软件质量控制中的重要一环,软件测试工程师基本处于"双高"地位,即地位高、待遇高。高级测试工程师年薪可高达10万元。从近期的企业人才需求和薪金水平来看,软件测试工程师的年工资还有逐年上升的明显趋势。测试工程师的起薪从2000~5000元/月不等,若有4年工作经验的话,薪资在8000元/月左右。

    硬件工程师

        根据项目进度和任务分配,完成符合功能要求和质量标准的硬件开发产品;依据产品设计说明,设计符合功能要求的逻辑设计、原理图;编写调试程序,测试开发的硬件设备;编制项目文档及质量记录。

    电子、自动化的相关专业本科以上。一至两年以上硬件开发经验。以上硬件研发经验,熟悉各类设计开发工具。具有扎实数字模拟电路专业基础,具有16位单片机硬件开发经验,熟悉CPLD、FPGA,熟练应VHDL/VERILOG,有过设计FPGA/CPLD经验。熟悉CAN网协议。熟悉电路设计、PCB布板、电路调试,能熟练使用PROTEL等EDA工具。具有单片机网卡驱动开发经验者优先。

        有一定的英语要求,至少能够通读英语资料。

        上海的平均年薪为5.5万元;欧美独资企业8万元;欧美合资几近7万;非欧美独资与国营企业分别为5.6万元、5.3万元,非欧美合资企业的年薪达到5.2万元,民营私企依旧最低,只有4.4万元。其中英语能力对于硬件工程师的薪资有比较大的影响,英语熟练者的年薪为6.4万元,英语精通者可达到7.1万元。

         近两年,伴随着硬件转向软件,硬件工程师遭遇了冷落。越来越多的人投身到软件开发的行列中,却恰恰忽略了硬件的基础作用——“没有硬件,软件又如何依附?”现在无论政府机构还是企业,信息化进程促进了他们大量地添置IT硬件设备,这些设备如何在市场中拔得头筹,硬件工程师的研发能力是关键中的关键。

    硬件测试工程师

        属于专业人员职位,他负责硬件产品的测试工作,保证测试质量及测试工作的顺利进行;编写测试计划、测试用例;提交测试报告,撰写用户说明书;参与硬件测试技术和规范的改进和制定。

        大专以上学历,计算机、通信、电子工程或自动化专业皆可(视不同的硬件设备而定)。具有2年以上硬件测试、诊断、排错或设计经验。个人需具备较强的分析判断能力,来应对突发事件。沟通能力也相当重要,不仅是团队内部,还是团队之间,都需要畅通的信息传递,来达到事半功倍的效果。

        上海的平均薪资为5.7万元;欧美独资企业7.6万元;国营企业6.9万元;非欧美合资企业达到5.8万元。唯独非欧美独资企业和民企低于平均线,5.3万元和4.1万元的薪酬。工作经验对于硬件测试工程师的薪资影响很大,每递增两个工作年限,年薪便上涨2万。

        目前,这个职位不仅存在于电脑生产厂家,还被通信设备、自动化、网络、手机等企业广泛需求。在竞争激烈的硬件市场中,拥有一名优秀的硬件测试工程师,将会推动硬件产品的销售推广和进一步完善研发。

    IT行业薪资,IT行业各职位年薪如下:

    初级测试工程师:约在2-4万元左右;

    测试工程师:约在5-6万元左右;

    高级测试工程师:约8-10万元左右;

    测试主管(Team Leader):在8-15万; 

    测试经理:在12-20万;

    计划经理:20-30万

        随着IT行业的发展,产品的质量控制与质量管理正逐渐成为企业生存与发展的核心。从软件、硬件到系统集成,都需要这样的专业人员。同时,软件测试的人才需求缺口超过20万人,而人才的紧缺也促使软件测试工程师的薪资逐渐走高,

    技术支持工程师

        是一个跨行业的职位,负责平台、软、硬件的技术支持;负责用户培训、安装系统以及与用户的联络;从技术角度辅助销售工作的进行。如果细分的话,可以分成企业对内技术支持,和企业对外技术支持,在对外技术支持中又可以分为售前与售后两大类。售前技术支持更倾向于产品销售,而售后技术支持则更偏向于工程师角色。

        大专学历以上,计算机等相关专业毕业。一年以上客户服务工作经验,因为常常需要直接面对客户,良好的沟通协调和应变能力,是非常需要的。

        上海地区的平均薪资为5.7万元。欧美独资企业突破9万元,欧美合资企业为8万元。非欧美独资企业与国营企业不相上下,薪资最低的则是非欧美合资企业和民营私企,分别为4.8万元和4.4万元。

        在激烈竞争的市场状态下,一个好的技术支持工程师能够不仅能够给予客户优质的服务,同时也能给企业带来良好信誉,效益自然也会倍增。

    网络工程师

        主要负责信息安全、系统集成、数据处理、交换机和服务器的配置、局域网组建、网络维护、综合布线等工作。负责构筑企业内部网络的组建、调试、维护,优化网络结构,为各部门提供网络服务;指定网络管理规程,做好故障预防和制定网络受到攻击后的紧急处理措施;利用网管平台监控网络设备、服务器等各种设备的运行状态;参与、指导公司计算机系统建设工作,如机房施工、布线等。

        至少大专以上学历,计算机、通信及电子相关专业。2年以上网络项目和管理经验,持有国家或网络厂商的专业技术证书(例如Cisco)。

        具备一定的LAN/WAN/WIRELESS/VOIP等网络设备的调试技能;熟练掌握一到两门网络操作系统,如WINZK/LINUX/LINIX。

        上海平均年薪达到5.2万元。欧美企业普遍偏高,独资企业与合资企业的薪资分别为6.9万元、6.7万元;非欧美独资企业高于平均水平6千元之多;国营企业中,网络工程师的薪酬维持在中位线上;非欧美合资企业和民营私企的年只有4.9万元和4.3万元。

        随着信息化的深入发展,网络管理员、网络工程师等相关人才目前,这个岗位比较热门、就业宽泛。从具体的需求来看,政府机构、企业上网工程以及网络构建,现在的从业人数为42.5万人,未来10年潜在人才需求在135万人以上,平均每年人才需求将不低于13.5万人。

    系统工程师

        系统工程师是一个精细活,需要从业者有足够的耐心和责任心,对工作中出现的状况有一定的把握度和解决能力。

        本科以上学历,计算机相关专业,两年以上工作经验,根据不同的软件产品需求,系统工程师所熟悉的操作系统及应用软件技术也大不相同,在此未能做逐一介绍。

        上海地区系统工程师的年薪接近7万元。欧美独资企业的薪酬最高,几近10万元,欧美合资企业8.8万元也不甘落后。非欧美独资企业与国营企业相差无几,达到6.4万元。非欧美合资企业与民企私企不分上下,游走在5.7万元左右。

        在一个IT企业里,系统工程师相当于管家的地位,从接受客户需求,到开发软件项目,最后进行完善调节,每个环节都缺少不了系统工程师。举足轻重的地位自然对应聘该职位的人才要求也很高,尤其目前国内低端IT人才普遍偏多,系统工程师不言而喻就显得捉襟见肘了。

    数据库工程师

        负责大型数据库的设计开发和管理;负责软件开发与发布实施过程中数据库的安装、配置、监视、维护、性能调节与优化、数据转换、数据初始化与倒入倒出、备份与恢复等,保证开发人员顺利开发;保持数据库高效平稳运行以保证开发人员及客户满意度。

        本科以上学历,一年以上数据库工作经验,计算机相关专业,熟悉UNIX、NT,熟悉SQL、数据库编程;精通UNIX平台下的数据库设计,熟悉DB2、Oracle,Sybase数据库中一种,熟悉WebSphere、MQ。

        上海的年薪达到6.2万元,欧美企业依旧独领风骚,8万元薪酬令人垂涎。非欧美独资企业略低一筹,为6.5万元,其他类型企业均低于标准水平。

        数据库工程师的需求正在不断上涨。随着企业信息化程度的不断提高,数据库的开发和维护被提上了议事日程。目前,信息产业部国家信息化工程师认证考试管理中心已经推出国家数据库技术水平考试(NCDE),未来该职位也将有证可循。

    信息安全工程师

        信息安全工程师主要负责信息安全解决方案和安全服务的实施;负责公司计算机系统标准化实行,指定公司内部网络的标准化,计算机软硬件标准化;提供互联网安全方面的咨询、培训服务;协助解决其他项目出现的安全技术难题。

        大专以上学历,一年以上网络服务经验,需具备相关网络资质认证,如Cisco或Microsoft相关认证。能够独立完成网络管理,并解决与网络有关的各种问题。

        虽然属于IT行业中的新贵,但薪资丝毫也不马虎。上海的平均年薪为6.4万元;其中欧美非合资企业收入最高,达到8.2万元;欧美独资企业反倒与之相距1万元之多;国营企业位居第三,薪酬为6.9万;非欧美独资企业、民营私企分别为6.7万元、5.9万元。非欧美合资企业落在最后,只有5万元。

        网络发展到现在,关于网络安全问题的解决方法问题,大家已经形成一种共识,那就是,网络安全体系的建立关键在于人,尤其是网络安全人才,网络安全的攻与守完全是高素质人才的对抗。目前我国共有信息化安全专业人才3500多人,人才培训与培养的滞后,使得我国信息安全产业在开发、管理、运用等方面求才若渴。

    软件架构师

        在很多公司中,架构师不是一个专门的和正式的职务。通常在一个开发小组中,最有经验的程序员会负责一些架构方面的工作。在一个部门中,最有经验的项目经理会负责一些架构方面的工作。实际上就是软件的总体设计师,架构师是在工程实践中培养出来的。

        软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。

        可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。

        必须对开发技术非常了解,并且需要有良好的组织管理能力。需要与各路人马经常打交道,客户、市场人员、开发人员、测试人员、项目经理、网络管理员、数据库工程师等等,而且在很多角色之间还要起沟通者的作用。在技术能力方面,软件架构师最重要也是最需求掌握的知识是构件通信机制方面的知识,比如远程过程调用、JAVARMI、CORBA、COM/DCOM、各种标准的通信协议、网络服务、面对对象数据库、关系数据库等等,另外,架构师应时刻注意新软件设计和开发方面的发展情况,并不断探索更有效的新方法。开发语言、设计模式和开发平台不断很快地升级,软件架构师需要吸收这些新技术新知识,并将它们用于软件系统开发工作中。

        稀有职位,年薪一般在几十万。

        悄然间,架构师已经成为全球IT业职场上最让人羡慕的职位。在我国,随着软件业规模的不断扩大,软件人才结构性矛盾将更加突出。全国计算机应用专业人才的需求每年将增加百万人左右。其中,架构师这样的专业高级人才每年培养人数全国不过数百名,缺口非常之大,而其中尤其以Java架构师缺口最为明显。

    3G技术人员

        一个合格的3G人才需要掌握从传统电信到互联网的所有相关知识,同时又精通移动通信和软件知识,是拥有综合素质的技术人员,即既懂互联网又掌握电信技术的人员。

        3G工程师必须拥有通信、电子类专业本科以上学历,熟练使用C或C++语言编程方法,熟悉移动通信原理及微波通信技术,具有4年以上数字电路设计或硬件开发工作经验,有CDMA、GSM或TD-SCDMA、WCDMA等手机软/硬件开发经验等。

        并了解WCDMA(FDD)系统的成帧、同步、信道映射、业务复用等物理层关键技术;WCDMA核心网的基本结构、工作原理和Release 99(R3)、Release4、Release5/6、all IP等不同WCDMA网络标准的新特性比较和演进策略,以及面向3G、NGN网络的新业务研究;CDMA2000系统的主要特点以及无线信道配置、编码、业务扩展、网络优化及移动IP等关键技术;TD-SCDMA系统的同步、CDMA、智能天线、联合检测、接力切换、动态信道分配和软件无线电等关键技术和发展现状。

        俗话说“物以稀为贵”,以目前国内3G核心人才区区万人的阵容去争夺据称有上千亿元的市场,其身价由此可见一斑。按照现在电信行业的薪金核算,3G高级技术人员的年薪应该在15万—20万元之间。

    是即将开启的金领行业,在3G人才争夺战中,有两类人最受欢迎。一类是有着海外留学背景或者工作经验的工程师,另一类是拥有综合素质的技术人员,即既懂互联网又掌握电信技术的人员。

        业内人士保守估计,根据产业发展的需要,未来3年,我国3G软件人才的市场缺口在50万以上,其中嵌入式软件开发是未来几年最热门和最受欢迎的职业之一,其需求量在15万人以上。而2004年中国嵌入式软件的市场规模为255亿元,预计2008年将达到550亿元;2004年中国企业移动商务应用市场规模为78.2亿元,预计2008年将达306.5亿元,年复合增长率超过40%。强劲的市场增长必然带动人才需求的攀升。随着“三网融合”不断提速,3G网络全面铺开,这一数字还将成倍增长;移动商务和移动增值服务软件开发人员的需求量约在35万人左右。按照经济学家胡鞍钢的估算,3G正式启动之后,每年直接增加的就业机会在100万人以上。

    计算机图形图像设计制作师

        计算机图形图像设计制作师(CG),是一种前卫职业,制作师的创意在动画制作过程中显得尤为重要。

        深入地了解动画剧本,对动画人物、场景进行艺术性的创造,要求必须具备扎实的美术功底和强烈的镜头感

  • 好久没来了

    2009-10-09 14:51:35

    好久没来自己的空间了,今天进来后,心中不免有种久违了的感觉。不禁打扮了一下自己的小窝,同时希望自己在今年也有新貌新气象!为自己加油一下!

  • 程序测试规范

    2007-08-21 17:46:18

    作者:葛宏宾的专栏 文章出处:csdn bolg
     

    第一部分 应用程序测试

     第一章 界面测试

     界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。

     1.1易用性测试

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

    1) 常用的按钮要有键盘快捷方式。
    2) 界面应按功能划分出区域,要有功能说明或标题。
    3) 界面及按钮的风格应尽量统一。
    4) 界面要支持键盘自动浏览按钮功能,即按Tab键的自动切换功能。
    5) 界面上首先应输入的和重要信息的控件在Tab顺序中应当靠前,位置也应放在窗口上较醒目的位置。
    6) 有输入的界面进入时焦点应停留在第一个EDIT上。
    7) 界面上的控件摆放的数目是否过多。一般最好不要超过10个,多于10个应建议使用分页界面显示。
    8) 同一界面的功能数量是否过多。一般最好不要多于10个,过多导致使用不便。
    9) 分页界面要支持在页面间的快捷切换,常用组合快捷键Ctrl+Tab
    10) 默认按钮要支持Enter及选择操作,即按Enter后自动执行默认按钮对应操作。
    11) 可写控件检测到非法输入后应给出说明并能自动获得焦点。
    12) Tab键的顺序与控件排列顺序要一致,目前流行总体从上到下,同时行间从左到右的方式。
    13) 复选框和选项框中的内容应尽量按选择几率的高低而先后排列。
    14) 复选框和选项框通常要有默认选项。
    15) 选项数相同时多用选项框而不用下拉列表框。
    16) 界面空间较小时使用下拉框而不用选项框。
    17) 选项数较少时使用选项框,相反使用下拉列表框。
    18) 专业性强的软件要使用相关的专业术语,通用性界面则提倡使用通用性词眼。

    1.2 规范性

     通常界面设计都按Windows界面的规范来设计,即包含“菜单条、工具栏、工具箱、状态栏、滚动条、右键快捷菜单”的标准格式,可以说:界面遵循规范化的程度越高,则易用性相应的就越好。小型软件一般不提供工具箱。

    1) 常用菜单要有命令快捷方式。
    2) 完成相同或相近功能的菜单用横线隔开放在同一位置。
    3) 菜单前的图标能直观的代表要完成的操作。
    4) 菜单深度一般要求最多控制在三层以内。
    5) 菜单的说明要跟弹出的窗体一致。
    6) 大型软件一般工具栏要求可以根据用户的要求自己选择定制。
    7) 相同或相近功能的工具按钮放在一起。
    8) 工具栏中的每一个按钮要有及时提示信息。
    9) 一条工具栏的长度最长不能超出屏幕宽度。
    10) 工具栏太多时可以考虑使用工具箱。
    11) 工具箱要具有可增减性,由用户自己根据需求定制。
    12) 工具箱的默认总宽度不要超过屏幕宽度的1/5。
    13) 状态条要能显示用户切实需要的信息,常用的有:
    目前的操作、系统状态、用户位置、用户信息、提示信息、错误信息等,如果某一操作需要的时间较长,还应该显示进度条和进程提示。
    14) 状态条的高度以放置五号字为宜,滚动条的宽度比状态条的略窄。
    15) 菜单和工具条要有清楚的界限;菜单要求凸出显示,这样在移走工具条时仍有立体感。
    16) 右键快捷菜单采用与菜单相同的准则,且右键快捷菜单在对话框中不应出现。

    1.3 帮助设施

     系统应该提供详尽而可靠的帮助文档,在用户使用产生迷惑时可以自己寻求解决方法。

    1) 操作时要提供及时调用系统帮助的功能。常用F1。
    2) 在界面上调用帮助时应该能够及时定位到与该操作相对的帮助位置。也就是说帮助要有即时针对性。
    3) 最好提供目前流行的联机帮助格式或HTML帮助格式。
    4) 用户可以用关键词在帮助索引中搜索所要的帮助,当然也应该提供帮助主题词。
    5) 打包新系统时,对作了修改的地方在帮助文档中要做相应的修改。
    6) 在帮助中应该提供我们的技术支持方式,一旦用户难以自己解决可以方便的寻求新的帮助方式。

    1.4 合理性

     屏幕对角线相交的位置是用户直视的地方,正上方四分之一处为易吸引用户注意力的位置,在放置窗体时要注意利用这两个位置。

    1) 父窗体或主窗体的中心位置应该在对角线焦点附近。即采取屏幕居中。
    2) 子窗体位置应该在主窗体的左上角或正中。
    3) 多个子窗体弹出时应该依次向右下方偏移,以显示出窗体标题为宜。
    4) 重要的命令按钮与使用较频繁的按钮要放在界面上较注目的位置。
    5) 与正在进行的操作无关的按钮应该加以屏蔽(Windows中用灰色显示,没法使用该按钮)。
    6) 对可能造成数据无法恢复的操作必须提供确认信息,给用户放弃选择的机会。并且将按钮的缺省焦点置在“取消”按钮上。
    7) 非法的输入或操作应有足够的提示说明。
    8) 对运行过程中出现问题而引起错误的地方要有提示,让用户明白错误出处,避免形成无限期的等待。
    9) 提示、警告、或错误说明应该清楚、明了、恰当。
    10) 对于需要执行长时间的操作,必须使用状态条,让用户了解进展情况,避免使用户误解为死机。
    11) 大多数下拉框(ComboBox),应该不允许用户输入,如果需要输入,应在设计文档中指出。
    12) 当下拉框(ComboBox)允许用户不选择任何选项时,不应显示一个空的选项,应使用文字描述,如“请选择…”等。
    13) 对于文本框(TextBox)一般需要根据其对应的数据库字段的类型以及长度来限制用户允许输入的字符和长度,测试时要注意输入框中的数值的最大数和最小数,以及默认值、空白值或空格时的情况。
    14) 对于ListView以Report形式(ViewStyle属性=vsReport)显示数据,一般要求实现列排序,如果由于特殊原因不能实现列排序,应该禁止用户点击列。
    15) 对于日期输入框是否接受正确的日期输入;是否拒绝错误的日期输入;日期输入框在日期输入后是否按既定的日期格式显示日期。
    16) 对于单选组内是否有且只有一个单选钮可选;如果单选组内无单选钮可选,这种情况是否允许存在。
    17) 复选框组内是否允许多个复选框(包括全部可选)可选;如果复选框组内无复选框可选,这种情况是否允许存在;文本框及某些控件拒绝输入和选择时显示区域是否变灰或按既定规约处理。
    18) 密码输入框是否按掩码的方式显示。
    19) 对于有增加、修改或删除等有变动操作的页面,要随操作及时刷新。
    20) 对于数据录入界面,重点考虑如何提高用户的录入速度。例如界面中有“身份证号”和“出生日期”,当用户输入了一个合法的身份证号后,系统应该自动根据身份证号将出生日期提取出来并填入“出生日期”控件中。
    21) 系统的提示框样式应统一,即使用标准的Windows提示框,其中包括标题、图标、提示语和功能按钮。图标使用要规范,要根据提示信息的性质选择不同的图标,而且除非严重的错误,一般不使用“X”图标,以免使用户产生畏惧心理。
    22) 如果系统中需要经常录入一些重复数据,应考虑将其提取出来,让用户进行一次配置,然后系统自动根据配置完成该信息的录入。例如:系统有登记企业信息的功能,其中企业信息包括该企业所在的省、市、区,由于该系统安装到某个市级单位后,所登记企业的所在省、市都是确定的,让用户每次登记时都重复选择省、市将给用户带来很大的不便。应该由用户在系统初始化时设置好缺省的省、市,在企业登记时只要选择该企业所在的区即可,这样就提高了用户的登记效率。
    23) 对于输入型控件禁止为其指定输入法。
    24) 窗体显示后,缺省的焦点应该设在最合理的控件上,方便用户操作。
    25) 输入型控件一般不允许只输入空格或可存入输入值两端的空格。

    1.5 美观与协调性

    界面大小应该适合美学观点,感觉协调舒适,能在有效的范围内吸引用户的注意力。

    1) 长宽接近黄金点比例(宽高比为4:3),切忌长宽比例失调。
    2) 布局要合理,不宜过于密集,也不能过于空旷,合理的利用空间。
    3) 按钮大小基本相近,忌用太长的名称,免得占用过多的界面位置,要与界面的大小和空间要协调。
    4) 避免空旷的界面上放置很大的按钮。
    5) 放置完控件后界面不应有很大的空缺位置。
    6) 字体的大小要与界面的大小比例协调, 通常使用的字体中宋体9-12较为美观,很少使用超过12号的字体。建议使用宋体9号字。
    7) 前景与背景色搭配合理协调,反差不宜太大,最好少用深色,如大红、大绿等。常用色考虑使用Windows界面色调。
    8) 如果使用其他颜色,主色要柔和,具有亲和力与磁力,坚决杜绝刺目的颜色。
    9) 大型系统常用的主色有"#E1E1E1"、"#EFEFEF"、"#C0C0C0"等。
    10) 界面风格要保持一致,字的大小、颜色、字体要相同,除非是需要艺术处理或有特殊要求的地方。
    11) 如果窗体支持最小化和最大化或放大时,窗体上的控件也要随着窗体而缩放;切忌只放大窗体而忽略控件的缩放。对于窗体中包含ListView、TreeView、DBGrid、StringGrid等控件,必须支持最大化,使用户能够尽量多的获得信息。当处于“往下还原”状态时,默认窗体应居中。
    12) 如果能给用户提供自定义界面风格则更好,由用户自己选择颜色、字体等。
    13) 除主窗体外,其他窗体大部分都要支持敲“Esc”键退出的功能,除非设计文档中特殊指明。

    1.6 菜单位置

     菜单是界面上最重要的元素,菜单位置按照按功能来组织。

    1) 菜单通常采用“常用--主要--次要--工具--帮助”的位置排列,符合流行的Windows风格。
    2) 常用的有“文件”、“编辑”,“查看”等,几乎每个系统都有这些选项,当然要根据不同的系统有所取舍。
    3) 下拉菜单要根据菜单选项的含义进行分组,并切按照一定的规则进行排列,用横线隔开。
    4) 一组菜单的使用有先后要求或有向导作用时,应该按先后次序排列。
    5) 没有顺序要求的菜单项按使用频率和重要性排列,常用的放在开头, 不常用的靠后放置;重要的放在开头,次要的放在后边。
    6) 如果菜单选项较多,应该采用加长菜单的长度而减少深度的原则排列。
    7) 对常用的菜单要有快捷命令方式。
    8) 对与进行的操作无关的菜单要用屏蔽的方式加以处理,如果采用动态加载方式——即只有需要的菜单才显示——最好。
    9) 菜单前的图标不宜太大,与字高保持一致最好。
    10) 主菜单的宽度要接近,字数不应多于四个,每个菜单的字数能相同最好。
    11) 主菜单数目不应太多,最好为单排布置。

    1.7 独特性

    如果一味的遵循业界的界面标准,则会丧失自己的个性.在框架符合以上规范的情况下,设计具有自己独特风格的界面尤为重要。尤其在商业软件流通中有着很好的潜移默化的广告效用。

    1) 安装界面上应有单位介绍或产品介绍,并有自己的图标。
    2) 主界面,最好是大多数界面上要有公司图标。
    3) 登录界面上要有本产品的标志,同时包含公司图标。
    4) 帮助菜单的“关于”中应有版权和产品信息。
    5) 公司的系列产品要保持一致的界面风格,如背景色、字体、菜单排列方式、图标、安装过程、按钮用语等应该大体一致。

    1.8 快捷方式的组合

     在菜单及按钮中使用快捷键可以让喜欢使用键盘的用户操作得更快一些,在西文Windows及其应用软件中快捷键的使用大多是一致的。

     菜单中:
     1) 面向事务的组合有:
     组合键 Ctrl-D Ctrl-F Ctrl –H Ctrl-I Ctrl-N Ctrl-S Ctrl-O
     功能 删除 寻找 替换 插入 新记录 保存 打开
     2) 编辑:
     组合键 Ctrl-A Ctrl-C Ctrl-V Ctrl-X Ctrl-Z Ctrl-Y
     功能 全选 拷贝 粘贴 剪切 撤消操作 恢复操作
     3) 文件操作:
     组合键 Ctrl-P Ctrl-W
     功能 打印 关闭
     4) 系统菜单
     组合键 Alt-F Alt-E Alt-T Alt-W Alt-H
     功能 文件 编辑 工具 窗口 帮助
     5) MS Windows保留键:
     组合键 Ctrl-Esc Ctrl-F4 Alt-F4 Alt-Tab Enter Esc Shift-F1
     功能 任务列表 关闭窗口 结束应用 下一应用 缺省按钮/确认操作 取消按钮/取消操作 上下文相关帮助
     6) 按钮中:(可以根据系统需要而调节,以下只是常用的组合。)
     组合键 Alt-Y Alt-C Alt-N Alt-D Alt-Q Alt-A Alt-E Alt-B Alt-R Alt-W
     功能 确定 取消 否 删除 退出 添加 编辑 浏览 读 写
     这些快捷键也可以作为开发中文应用软件的标准,但亦可使用汉语拼音的开头字母。

     第二章 功能测试

     在测试前,首先要根据《需求分析报告》全面了解用户需求并透彻理解。测试时要注意以下几点:

    A、测试时要分清主次,即先测试主要功能,后测试次要功能。要选找出系统的功能主干,让数据依次流经功能主干,测试功能实现的是否正确。只要功能主干有问题,这个系统就是失败的。
    B、 功能主干用正常正确后,我们还要考虑测试其异常处理功能。
    C、 功能主干测试正确后,再进行分支功能的测试。
    E、要对程序的功能进行方便性测试,将不够满意的地方,都应当成系统缺陷向项目负责人或系统开发者指出。
    F、检查系统需求和设计说明书中要求的功能是否在系统中都被实现、性能是否达到指标。
    G、数据之间的逻辑关系是否正确。
    H、要有预览和打印功能。对于企业端软件,打印不能只针对一种打印机,要用多种打印机进行测试。

    第三章 环境测试

     配置测试环境是测试实施的一个重要阶段,测试环境适合与否会严重影响测试结果的真实性和正确性。测试环境包括硬件环境和软件环境,硬件环境指测试必需的服务器、客户端、网络连接设备,以及打印机/扫描仪等辅助硬件设备所构成的环境;软件环境指被测软件运行时的操作系统、数据库及其他应用软件构成的环境。在实际测试中,软件环境又可分为主测试环境和辅测试环境。主测试环境是测试软件功能、安全可靠性、性能、易用性等大多数指标的主要环境。一般来说,配置主测试环境可遵循下列原则:

    1.符合软件运行的最低要求。测试环境首先要保证能支撑软件正常运行。
    2.选用比较普及的操作系统和软件平台。一般都要在win98、win2000、2000server、windows xp下进行测试,除非软件的设计文档上有特殊要求。
    3.要保证系统至少在时下流行的两种以上的浏览器上测试通过。如IE5、IE5.5、IE6、NS7等。
    4.营造相对简单、独立的测试环境。除了操作系统,测试机上只安装软件运行和测试必需的软件,以避免不相关的软件影响测试实施。
    5.无毒的环境。利用有效的正版杀毒软件检测软件环境,保证测试环境中没有病毒。并检测软件与时下流行的两种杀毒软件没有充突。
    6.分辨率环境。要在不同的分辨率下进行测试,保证软件的每个页面的显示都正常。对于在Win2000下编制的程序,应在Win9X环境下检查界面上的字体和控件是否失真。
    7.网络环境。要看网络连接是否正常;是否需要局域网和互联网等。

    辅测试环境常常用来满足不同的测试需求或特殊测试项目:

     兼容性测试:在满足软件运行要求的范围内,可选择一些典型的操作系统和常用应用软件对其安装卸载和主要功能进行验证。  
     
     模拟真实环境测试:有些软件,特别是面向大众的商品化软件,在测试时常常需要考察在真实环境中的表现。如测试杀毒软件的扫描速度时,硬盘上布置的不同类型文件的比例要尽量接近真实环境,这样测试出来的数据才有实际意义。
    横向对比测试:利用辅测试环境“克隆”出完全一致的测试环境,从而保证各个被测软件平等对比。

    第四章 压力测试

     压力测试用来检查程序对异常情况的抵抗能力。当关于容量的信息不确定的时候,需要确定是否分配了足够的磁盘空间,通讯的容量是否足够,测试系统过载的情况。压力测试总是迫使系统在异常的资源配置下运行。例如,①当中断的正常频率为每秒一至两个时,运行每秒产生十个中断的测试用例;②定量地增长数据输入率,检查输入子功能的反映能力;③运行需要最大存储空间(或其他资源)的测试用例;④运行可能导致虚存操作系统崩溃或磁盘数据剧烈抖动的测试用例;⑤多用户、超过系统设定的用户同时使用系统;⑥以比预期更快的速度与系统进行交互;⑦让系统长时间运行等等。

     第五章 恢复测试

     恢复测试主要检查系统的容错能力。当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。恢复测试首先要采用各种办法强迫系统失败,然后验证系统是否能尽快恢复。对于自动恢复需验证重新初始化、检查点、数据恢复和重新启动等机制的正确性;对于人工干预的恢复系统,还需估测平均修复时间,确定其是否在可接受的范围内。

     第六章 性能测试

     性能测试主要是对响应时间、事务处理速率、数据显示速度、计算速度、网络传输速度、数据库查询响应时间、扫描时间、扫描识别率等和其他与时间相关的需求进行评测和评估。性能评测的目标是核实性能需求是否都已满足。实施和执行性能评测的目的是将测试对象的性能行为当作条件(例如工作量或硬件配置)的一种函数来进行评测和微调。

     对于那些实时和嵌入式系统,软件部分即使满足功能要求,也未必能够满足性能要求,虽然从单元测试起,每一测试步骤都包含性能测试,但只有当系统真正集成之后,在真实环境中才能全面、可靠地测试运行性能系统性能测试是为了完成这一任务。性能测试有时与强度测试相结合,经常需要其他软硬件的配套支持。

     另外,还需要注意程序对系统消耗资源的测试,如CPU负载、内存、显存、硬盘资源消耗情况。

    第七章 安全测试

     安全测试检查系统对非法侵入的防范能力。安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。例如,①想方设法截取或破译口令;②专门定做软件破坏系统的保护机制;③故意导致系统失败,企图趁恢复之机非法进入;④试图通过浏览非保密数据,推导所需信;⑤权限控制是否合理、正确等等。理论上讲,只要有足够的时间和资源,没有不可进入的系统。因此系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。此时非法侵入者已无利可图。

    第八章 安装测试

    A、在一台与用户的运行环境基本一致,没有安装过开发工具(如BCB、DELPHI、VB或VC)和没有安装过特殊字体的计算机上,依据产品《使用手册》/《安装手册》中的安装说明部分进行安装,要求无论是自动安装和手工配置都能够依据向导正确实施安装,安装退出后,软件能正确启运、运行。
    B、产品安装界面上的提示要正确,对安装起指导作用,版权说明文件与该程序相符。
    C、安装时,对默安装路径、用户自己指定的路径都要求能进行正确安装。
    D、用户自已指定路径时,如为已存在路径能够进行安装,如为不存在的路径,应能创建该路径并进行安装。
    E、程序安装完成后,在开始-程序菜单中要生成中文的快捷方式或程序组,本公司的软件产品,要生成“伍陆柒捌**软件”程序组,在其下生成中文的快捷方式。
    F、卸载测试,如果系统提供自动卸载工具,那卸载后,检查是否把所有文件都全部删除,注册表中的有关注册信息是否也被删除。
    G、安装完成在简单的使用后在执行卸载操作,看是否能执行成功。
    H、先安装客户端,在安装服务端,看是否会出现问题。
    I、考察安装该系统是否对其他的应用程序造成影响。

    第九章 文档测试

     将文档同程序相比较,看是否有不相符的情况。检查文档的截图是否跟程序一致,检查文档是否有错字或不符合语法规范的地方。

    A、程序的帮助文档要说明准确、通俗易懂,不用专业术语,且操作步骤要符合程序的要求。
    B、要图文并茂,易于理解。
    C、从程序抓取的图片中,数据要有代表意义,而不是一些乱七八糟的字母、数字的组合。有意义的数据也能对用户的操作起着指导作用。

    总之,对文档要进行完整性校验、正确性校验、一致性校验、易理解性校验、易浏览性校验、版本统一性校验。

    第十章 回归测试

     当程序修改后,为了确保功能的正确性,需要重新测试应用程序中没有改变的部分。在时间和条件允许的情况下,要测试修改相关的整个模块甚至整个程序。

    第二部分 WEB程序的测试

     一、按测试类型分类

     字段编辑测试。字段编辑检查要查看格式编排、边界以及计算错误。如果日期需要限制在特定的时间范围内,该软件是否允许输入该时间范围外的日期?是否要求数字字段只包含数字?如果输入了字母会出现什么情况?如果包含计算,计算执行是否正确?字段输入框对请求的输入来说,是否足够大?如果有下拉框,其值否正确?

     流控制和状态测试。在用户填写完表单中的字段并按下按钮后,逻辑是否会到达期望的进程?下一次显示同一页面时,其中的值是否正确?有时页面第一次显示了正确的值,而以后不再显示;或者情况相反。

     配置测试。在可行的情况下,会用尽可能多的“受支持服务器”和客户程序配置对应用程序进行测试。

     负载测试。在将页面或 Web 应用程序作为整体进行测试之前,应首先在组件级别进行负载和性能测试,以确保应用程序的每一部分能够在适当的指标下运行。这种隔离测试使测试小组能够更迅速地发现使用特定技术的问题。如果一个执行数据库查询功能的小脚本太慢,进行组件级别的测试比进行整个页面或应用程序测试更容易发现它。

     回归测试。开发部门修复了代码中的错误后,我们会重新进行测试,以检查错误是否被修复并确保所做的修复不会引起其它问题。

     二、按窗体位置分类:

    左侧导航窗格:

    是否能够在左侧的导航窗格中来回移动,该窗格显示是否正确?
    是否能够在大于屏幕的区域内滚动?
    是否能够选择不同的新闻组,文章列表是否显示在右上窗格中?
    是否能够调整左侧导航窗格以及右上和右下窗格的大小?

    右上窗格:

    右上窗格是否正确地显示文章,是否保持了每篇文章的连载状况?
    是否可以遍历连载文章?
    读过一篇文章后,它是否被标记为红色?
    如果文章列表大于一个页面,是否能够遍历右上窗格中的各个页面?

    右下窗格:

    是否可以选择一篇文章并显示在该页面的右下窗格中?
    是否能够发布新消息,回复组,回复个人或转发文章?
    在回复个人或转发消息时,默认的邮件客户程序是否启动并显示新消息?
    是否能够伴随文章发送附件?
    是否可以查看附件?

    工具栏:

    验证工具栏适合其所在的页面并能够根据浏览器窗口调整大小。
    验证本地菜单能够正常运行。
    验证本地菜单中的链接。
    验证全局菜单能够正常运行。
    验证全局菜单中的链接。
    验证工具栏上的所有图形。
    验证工具栏框架大小不可调整。
    界面测试
    站点地图和导航条

    确认你测试的站点是否有地图。有些网络高手可以直接去自己要去的地方,而不必点击一大堆页面。另外新用户在网站中可能会迷失方向。站点地图和/或导航条可以引导用户进行浏览。需要验证站点地图是否正确。确认地图上的链接是否确实存。地图有没有包括站点上的所有链接。是否每个页面都有导航条? 导航条是否一致? 每个页面的链接是否正常? 导航条是否直观?

     内容

     测试人员应确保站点看起来更专业些。过分地使用粗体字、大字体和下划线可能会让用户感到不舒服。在进行用户可用性方面的测试时,最好先请图形设计专家对站点进行评估。你可能不希望看到一篇到处是黑体字的文章,所以相信您也希望自己的站点能更专业一些。 最后,需要确定是否列出了相关站点的链接。很多站点希望用户将邮件发到一个特定的地址,或者从某个站点下载浏览器。但是如果用户无法点击这些地址,他们可能会觉得很迷惑。

     颜色/背景

     由于 web 日益流行,很多人把它看作图形设计作品。不幸的是,有些开发人员对新的背景颜色更感兴趣,以至于忽略了这种背景颜色是否易于浏览。典型的站点是在紫色图片的背景上显示黄色的文本(如果你没有见过这样的站点,请浏览一下 GeoCities 或 AOL 上的个人主页,有不少这样的)。这种页面显得"非常高贵",但是看起来很费劲。通常来说,使用少许或尽量不使用背景是个不错的选择。如果您想用背景,那么最好使用单色的,和导航条一起放在页面的左边。另外,图案和图片可能会转移用户的注意力。

     图片

     无论作为屏幕的聚焦点或作为指引的小图标,一张图片都胜过千言万语。有时,告诉用户一个东西的最好办法就是将它展示给用户。但是,带宽对客户端或服务器来说都是非常宝贵的,所以要注意节约使用内存。是否所有的图片对所在的页面都是有价值的,或者它们只是浪费带宽? 使用其它的文件格式(.GIF, .JPG) 是否能使图片的大小减小到 30k 以下? 通常来说,不要将大图片放在首页上,因为这样可能会使用户放弃下载首页。如果用户可以很快看到首页,他可能会浏览站点,否则可能放弃。

     表格

     需要验证表格是否设置正确。用户是否需要向右滚动页面才能看见产品的价格?把价格放在左边,而把产品细节放在右边是否更有效? 每一栏的宽度是否足够宽,表格里的文字是否都有折行?是否有因为某一格的内容太多,而将整行的内容拉长?

     回绕

     最后,需要验证的是文字回绕是否正确。如果说明文字指向右边的图片,应该确保该图片出现在右边。不要因为使用图片而使窗口和段落排列古怪或者出现孤行。

     功能测试

     链接
     链接是使用户从一个页面浏览到另一个页面的重要手段。对于每个链接,需要验证两件事情: 一是该链接将用户带到它所说明的地方,另外就是被链接页面是存在的。这句话听起来有些问题,但是有很多多站点的内部链接都是空的。这实在是无法忍受。

     表单

     当用户通过表单提交信息的时候,都希望表单能正常工作。如果使用表单来进行在线注册,要确保提交按钮能正常工作,当注册完成后应返回注册成功的消息。如果使用表单收集配送信息,应确保程序能够正确处理这些数据,最后能让顾客能让客户收到包裹。要测试这些程序,需要验证服务器能正确保存这些数据,而且后台运行的程序能正确解释和使用这些信息。

     数据校验

     如果系根据业务规则需要对用户输入进行校验,需要保证这些校验功能正常工作。例如,省份的字段可以用一个有效列表进行校验。在这种情况下,需要验证列表完整而且程序正确调用了该列表(例如在列表中添加一个测试值,确定系统能够接受这个测试值)。

     Cookies

     很多用户喜欢甜食,但是开发人员喜欢 web cookie (小甜饼)。如果系统使用了cookie,测试人员需要对它们进行检测。如果在 cookies 中保存了注册信息,请确认该 cookie能够正常工作而且已对这些信息已经加密。如果使用 cookie 来统计次数,需要验证次数累计正确。

     应用程序特定的功能需求

     最重要的是,测试人员需要对应用程序特定的功能需求进行验证。尝试用户可能进行的所有操作:下订单、更改订单、取消订单、核对订单状态、在货物发送之前更改送货信息、在线支付等等。这是用户之所以使用网站的原因,一定要确认网站能像广告宣传的那样神奇。
     
     接口测试

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

     服务器接口

     第一个需要测试的接口是浏览器与服务器的接口。测试人员提交事务,然后查看服务器记录,并验证在浏览器上看到的正好是服务器上发生的。测试人员还可以查询数据库,确认事务数据已正确保存。

     外部接口

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

     错误处理

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

     兼容性测试

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

     操作系统

     你的站点能否在 MAC 和IBM 兼容系统上浏览? 有些字体在某个系统上可能不存在,因此需要确认选择了备用字体。如果用户使用两种操作系统,请确认站点未使用只能在其中一种操作系统上运行的插件。

     浏览器

     站点能否使用 Netscape、Internet Explorer 或Lynx 进行浏览? 有些 HTML 命令或脚本只能在某些特定的浏览器上运行。请确认有图片的替代文字,因为可能会有用户使用文本浏览器。如果您使用 SSL 安全特性,则只需对 3.0 以上版本的浏览器进行验证,但是对于老版本的用户应该有相关的消息提示。

     视频设置

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

     Modem/连接速率

     是否有这种情况,用户使用 28.8 modem下载一个页面需要 10 分钟,但测试人员在测试的时候使用的是 T1 专线? 用户在下载文章或演示的时候,可能会等待比较长的时间,但却不会耐心等待首页的出现。最后,需要确认图片不会太大。

     打印机

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

     组合测试

     最后需要进行组合测试。600x800 的分辨率在 MAC 机上可能不错,但是在 IBM 兼容机上却很难看。在 IBM 机器上使用 Netscape 能正常显示,但却无法使用 Lynx 来浏览。如果是内部使用的 web 站点,测试可能会轻松一些。如果公司指定使用某个类型的浏览器,那么只需在该浏览器上进行测试。如果所有的人都使用 T1 专线,可能不需要测试下载施加。(但需要注意的是,可能会有员工从家里拨号进入系统) 有些内部应用程序,开发部门可能在系统需求中声明不支持某些系统而只支持一些那些已设置的系统。但是,理想的情况是,系统能在所有机器上运行,这样就不会限制将来的发展和变动。

     负载/压力测试

     测试需要验证系统能否在同一时间响应大量的用户,在用户传送大量数据的时候能否响应,系统能否长时间运行。可访问性对用户来说是极其重要的。如果用户得到“系统忙”的信息,他们可能放弃,并转向竞争对手。系统检测不仅要使用户能够正常访问站点,在很多情况下,可能会有黑客试图通过发送大量数据包来攻击服务器。出于安全的原因,测试人员应该知道当系统过载时,需要采取哪些措施,而不是简单地提升系统性能。

     瞬间访问高峰

     如果您的站点用于公布彩票的抽奖结果,最好使系统在中奖号码公布后的一段时间内能够响应上百万的请求。负载测试工具能够模拟 X 个用户同时访问测试站点。

     每个用户传送大量数据

     网上书店的多数用户可能只订购 1-5 书,但是大学书店可能会订购 5000 本有关心理学介绍的课本? 或者一个祖母为她的 50 个儿孙购买圣诞礼物(当然每个孩子都有自己的邮件地址) 系统能处理单个用户的大量数据吗?

     长时间的使用

     如果站点用于处理鲜花订单,那么至少希望它在母亲节前的一周内能持续运行。如果站点提供基于 web 的 email 服务,那么点最好能持续运行几个月,甚至几年。可能需要使用自动测试工具来完成这种类型的测试,因为很难通过手工完成这些测试。你可以想象组织100 个人同时点击某个站点。但是同时组织 100000 个人呢。通常,测试工具在第二次使用的时候,它创造的效益,就足以支付成本。而且,测试工具安装完成之后,再次使用的时候,只要点击几下。

     安全性测试

     即使站点不接受信用卡支付,安全问题也是非常重要的。Web 站点收集的用户资料只能在公司内部使用。如果用户信息被黑客泄露,客户在进行交易时,就不会有安全感。

     目录设置

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

     SSL

     很多站点使用 SSL 进行安全传送。你知道你进入一个 SSL 站点是因为浏览器出现了警告消息,而且在地址栏中的 HTTP 变成 HTTPS。如果开发部门使用了SSL,测试人员需要确定是否有相应的替代页面(适用于3.0 以下版本的浏览器,这些浏览器不支持SSL。当用户进入或离开安全站点的时候,请确认有相应的提示信息。是否有连接时间限制?超过限制时间后出现什么情况?

     登录

     有些站点需要用户进行登录,以验证他们的身份。这样对用户是方便的,他们不需要每次都输入个人资料。你需要验证系统阻止非法的用户名/口令登录,而能够通过有效登录。用户登录是否有次数限制? 是否限制从某些 IP 地址登录? 如果允许登录失败的次数为3,你在第三次登录的时候输入正确的用户名和口令,能通过验证吗? 口令选择有规则限制吗?

     日志文件

     在后台,要注意验证服务器日志工作正常。日志是否记所有的事务处理? 是否记录失败的注册企图? 是否记录被盗信用卡的使用? 是否在每次事务完成的时候都进行保存? 记录IP 地址吗? 记录用户名吗?

     脚本语言

     脚本语言是常见的安全隐患。每种语言的细节有所不同。有些脚本允许访问根目录。其他只允许访问邮件服务器,但是经验丰富的黑客可以将服务器用户名和口令发送给他们自己。找出站点使用了哪些脚本语言,并研究该语言的缺陷。最好的办法是订阅一个讨论站点使用的脚本语言安全性的新闻组。

     结论

     无论你在测试 internet、intranet 或者是 extranet 应用程序,web 测试相对于非 web 测试来说都是更具挑战性的工作。用户对 web 页面质量有很高的期望。在很多情况下,就像业务功能一样,页面用于维护和发展公共关系,所以第一印象非常重要。

    第三部分 数据库程序的测试

    • 如果要向SQL数据库中保存时间,时间的年份必须大于等于1753年,如果小于1753年,修改数据库时会出错。
    • 测试数据库程序时,除了要测试每个数据库操作是否正确外,要着重测试数据库共享问题,即多人同时执行同一功能,这样就会同时对同一数据表进行操作,测试程序是否正常。
    • 测试数据库程序时,还要测试数据库操作的速度,如果数据库操作缓慢,应通知程序员进行优化。
  • 软件测试演义——第二部分 执行篇

    2007-08-21 17:31:08

    作者:朱少民 出处:CSDN
     

    执行篇

    第23回 严格执行测试

    虽然我们都认为,有效的测试计划是指导测试用例设计、测试执行的指导性文件,是成功测试的前提和必要条件,测试用例设计是测试工作的核心,测试用例的成功设计已经完成了一半的测试任务,但是测试的执行是基础,是测试计划和测试用例实现的基础,严格的测试执行使测试工作不会半途而废。而且,测试执行的管理相对复杂些,在整个测试执行阶段中,我们需要面对一系列问题,如:

    • 如何确保测试环境满足测试用例所描述的要求?
    • 如何保证每个测试人员清楚自己的测试任务和要达到的目标?
    • 如何保证每个测试用例得到百分之百的执行?
    • 如何保证所报告的软件缺陷正确、描述清楚、没有漏掉信息?
    • 如何在验证Bug或新功能与回归测试之间寻找平衡?
    • 如何跟踪Bug处理的进度使严重的Bug及时得到解决?

    要实现上述目标,得到一个真实、符合要求的执行过程,需要很好地全程跟踪测试过程、过程度量和评审、借助有效的测试管理系统等来实现。主要的方法和措施有:

    1. 提高测试人员素质和责任心,树立良好的质量文化意识和专业素质,奖惩分明。
    2. 严格审查测试环境,包括硬件型号、网络拓扑结构、网络协议、防火墙或代理服务器的设置、服务器的设置、应用系统的版本,包括被测系统以前发布的各种版本和不定包、以及相关的或依赖性的产品。
    3. 将要执行的所有测试用例进行分类,构造成测试套件(Test Suite),然后在此基础上建立要执行的测试任务,这样任务的分解有助于进度和质量的有效控制,减少风险。
    4. 所有测试用例、测试套件、测试任务和测试执行结果,都通过测试管理系统进行管理,使之测试执行的操作、过程记录在案,具有良好的可跟踪性、控制性和追溯性,容易控制好测试进度和质量。
    5. 对每个阶段的测试结果进行分析,保证阶段性的测试任务得到完整的执行并达到预定的目标。
    6. 缺陷的跟踪和管理一般由数据库系统来执行,容易对缺陷进行跟踪、统计分析和趋势预测,并设定一些有效的规则和流程来配合测试执行
      如通过系统自动发出邮件给相应的开发人员和测试人员,使得任何缺陷都不会错过,并能得到及时处理。
    7. 良好的沟通,不仅和测试人员保持经常的沟通,还可以和项目组的其他人员(保持有效的沟通,如每周例会,可以及时发现测试中问题或不正常的现象。

    第24回 测试进度和成本的控制

    项目的进度管理是一门艺术,是一个动态的过程,需要不断调度、协调,保证项目的均衡发展,实现项目整体的动态平衡。项目开始前的计划,对任务的测试需求有一个大体的认识,但深度不够,进度表可能只是一个时间上的框架,其中一定程度上是靠计划制定者的经验来把握的。随着时间的推移、测试的不断深入,对任务会有进一步的认识,对很多问题都不再停留在比较粗的估算上,项目进度表会变得越来越详细、越准确。

    项目的进度管理主要通过里程碑、关键路径的控制并借助工具来实现,同时要把握好进度与质量、成本的关系,以及充分了解进度的数量和质量的双重特性。

    1.进度的数量和质量的双重特性

    任何一项工作,最开始总是很容易看到进度,就比如盖房子,从无到有,变化是很明显的。可是越到后来,它的进度越来越不明显。软件测试也是如此,开始测试之初,Bug比较容易发现,但测试的进展并不是按Bug的数量来计算的,越到后面,Bug越来越难发现。要提高测试进度的质量,将严重的、关键的问题在第一时间发现出来,这样才不至于在最后阶段使得开发人员要对代码做大规模的变动,无法保证测试的时间,从而影响软件的质量。这就是测试项目进度的数量和质量的双重特性,我们在关注进度的同时要把握好这两个特性,在注重进度速度的同时,还要看进度前期的质量。

    2.测试进度的管理方法

    首先,尽量利用历史数据,从以前完成过的项目来进行类比分析,以确定质量和进度所存在的某种数量关系,来控制进度和管理质量。可以采用对进度管理计划添加质量参数的方法,也就是通过参数调整进度和质量的关系。

    其次,可以采用测试项目进度的度量方法:测试进度S曲线法和缺陷跟踪曲线法。在进度压力之下,被压缩的时间通常是测试时间,这导致实际的进度随着时间的推移,与最初制定的计划相差越来越远。而如果有了正式的度量方法,这种情况就很难出现,因为在其出现之前就有可能采取了行动。

    第25回 准确报告软件缺陷

    软件缺陷的描述是是软件缺陷报告的基础部分,也是测试人员就一个软件问题与开发小组交流的最初且最好的机会。一个好的描述,需要使用简单的、准确的、专业的语言来抓住缺陷的本质。否则,它就会使信息含糊不清,可能会误导开发人员。准确报告软件缺陷是非常重要的,因为:

    • 清晰准确的软件缺陷描述可以减少软件缺陷从开发人员返回的数量
    • 提高软件缺陷修复的速度,使每一个小组能够有效的工作
    • 提高测试人员的信任度,可以得到开发人员对清晰的软件缺陷描述有效的响应
    • 加强开发人员,测试人员和管理人员的协同工作,让他们可以更好的工作

    在多年实践的基础上,我们积累了较多的软件缺陷的有效描述规则,主要是:

    • 单一准确。每个报告只针对一个软件缺陷。在一个报告中报告多个软件缺陷的弊端是常常会导致缺陷部分被注意和修复,不能得到彻底的修正。
    • 可以再现。提供缺陷的精确操作步骤,使开发人员容易看懂,可以自己再现这个缺陷,通常情况下,开发人员只有再现了缺陷,才能正确地修复缺陷。
    • 完整统一。提供完整、前后统一的软件缺陷的步骤和信息,例如:图片信息,Log文件等。
    • 短小简练。通过使用关键词,可以使软件缺陷的标题的描述短小简练,又能准确解释产生缺陷的现象。如“主页的导航栏在低分辨率下显示不整齐”中“主页”、“导航栏”、“分辨率”等是关键词。
    • 特定条件。许多软件功能在通常情况下没有问题,而是在某种特定条件下会存在缺陷,所以软件缺陷描述不要忽视这些看似细节的但又必要的特定条件(如特定的操作系统、浏览器或某种设置等),能够提供帮助开发人员找到原因的线索。如“搜索功能在没有找到结果返回时跳转页面不对”。
    • 补充完善。从发现bug那一刻起,测试人员的责任就是保证它被正确的报告,并且得到应有的重视,继续监视其修复的全过程。
    • 不做评价。在软件缺陷描述不要带有个人观点,对开发人员进行评价。软件缺陷报告是针对产品、针对问题本身,将事实或现象客观地描述出来就可以,不需要任何评价或议论。

    软件缺陷属性包括缺陷标识、缺陷类型、缺陷严重程度、缺陷产生可能性、缺陷优先级、缺陷状态、缺陷起源、缺陷来源、缺陷原因。

    1. 缺陷标识:是标记某个缺陷的唯一的表示,可以使用数字序号表示。

    2. 缺陷类型:是根据缺陷的自然属性划分缺陷种类,如表1所示

    表1软件缺陷类型列表

    缺陷类型

    描述

    功能

    影响了各种系统功能、逻辑的缺陷

    用户界面

    影响了用户界面、人机交互特性,包括屏幕格式、用户输入灵活性、结果输出格式等方面的缺陷

    文档

    影响发布和维护,包括注释,用户手册,设计文档

    软件包

    由于软件配置库、变更管理或版本控制引起的错误

    性能

    不满足系统可测量的属性值,如执行时间,事务处理速率等。

    系统/模块接口

    与其他组件、模块或设备驱动程序、调用参数、控制块或参数列表等不匹配、冲突。

    3. 缺陷严重程度:是指因缺陷引起的故障对软件产品的影响程度,所谓“严重性”我指的是在测试条件下,一个错误在系统中的绝对影响。如表2所示

    表2软件缺陷严重等级列表

    缺陷严重等级

    描述

    致命 (Fatal)

    系统任何一个主要功能完全丧失、用户数据受到破坏、系统崩溃悬挂、死机,或者危及人身安全

    严重 (Critical)

    系统的主要功能部分丧失、数据不能保存,系统的次要功能完全丧失系统所提供的功能或服务受到明显的影响

    一般 (Major)

    系统的次要功能没有完全实现,但不影响用户的正常使用。例如:提示信息不太准确;或用户界面差、操作时间长等一些问题。

    较小 (Minor)

    使操作者不方便或遇到麻烦,但它不影响功能的操作和执行,如个别的不影响产品理解的错别字、文字排列不对齐等一些小问题。

    4. 缺陷产生的可能性:指缺陷在产品中发生的可能性,通常可以用频率来表示,如表3所示。

    表3 缺陷产生可能性列表

    缺陷产生可能性

    描述

    总是 (Always)

    总是产生这个软件缺陷,其产生的频率是100%

    通常 (Often)

    按照测试用例,通常情况下会产生这个软件缺陷,其产生的频率大概是80-90%

    有时 (Occasionally)

    按照测试用例,有的时候产生这个软件缺陷,其产生的频率大概是30-50%

    很少 (rarely)

    按照测试用例,很少产生这个软件缺陷,其产生的频率大概是1-5%

    5. 缺陷优先级:指缺陷必须被修复的紧急程度。“优先级”的衡量抓住了在严重性中没有考虑的重要程度因素,如表4所示。

    表4 软件缺陷优先级列表

    缺陷优先级

    描述

    立即解决(P1)

    缺陷导致系统几乎不能使用或测试不能继续,需立即修复

    高优先级(P2级)

    缺陷严重,影响测试,需要优先考虑

    正常排队(P3级)

    缺陷需要正常排队等待修复

    低优先级(P4级)

    缺陷可以在开发人员有时间的时候被纠正。

    一般来讲,缺陷严重等级和缺陷优先级相关性很强,但是,具有低优先级和高严重性的错误是可能的,反之亦然。例如,产品徽标是重要的,一旦它丢失了,这种缺陷是用户界面的产品缺陷,但是它阻碍产品的形象。那么它是优先级很高的软件缺陷。

    6. 缺陷状态:指缺陷通过一个跟踪修复过程的进展情况,也就是在软件生命周期中的状态基本定义,如表5所示。

    表5 软件缺陷状态列表

    缺陷状态

    描述

    激活 或打开

    Active or Open

    问题还没有解决,存在源代码中,确认“提交的缺陷”,等待处理,如新报的缺陷。

    已修正 或修复

    (Fixed or Resolved)

    已被开发人员检查、修复过的缺陷,通过单元测试,认为已解决但还没有被测试人员验证

    关闭或非激活

    (Close or Inactive)

    测试人员验证后,确认缺陷不存在之后的状态。

    重新打开

    测试人员验证后,还依然存在的缺陷,等待开发人员进一步修复

    推迟

    这个软件缺陷可以在下一个版本中解决

    保留

    由于技术原因或第三者软件的缺陷,开发人员不能修复的缺陷

    不能重现

    开发不能复现这个软件缺陷,需要测试人员检查缺陷复现的步骤。

    需要更多信息

    开发能复现这个软件缺陷,但开发人员需要一些信息,例如:缺陷的日志文件,图片等。

    7. 缺陷来源:指缺陷所在的地方,如文档、代码等,如表6所示。

    表6 软件缺陷来源列表

    缺陷来源

    描述

    需求说明书

    需求说明书的错误、或不清楚引起的问题

    设计文档

    设计文档描述不准确、和需求说明书不一致的问题

    系统集成接口

    系统各模块参数不匹配、开发组之间缺乏协调引起的缺陷

    数据流()

    由于数据字典、数据库中的错误引起的缺陷

    程序代码

    纯粹在编码中的问题所引起的缺陷

    8. 缺陷根源:指造成上述错误的根本因素,以寻求软件开发流程的改进、管理水平的提高,如表7所示。

    表7 软件缺陷根源列表

    缺陷根源

    描述

    测试策略

    错误的测试范围,误解了测试目标,超越测试能力等

    过程,工具和方法

    无效的需求收集过程,过时的风险管理过程,不适用的项目管理方法,没有估算规程,无效的变更控制过程等。

    团队/

    项目团队职责交叉,缺乏培训。没有经验的项目团队,缺乏士气和动机不纯等。

    缺乏组织和通讯

    缺乏用户参与,职责不明确,管理失败等。

    硬件

    硬件配置不对、缺乏,或处理器缺陷导致算术精度丢失,内存溢出等

    软件

    软件设置不对、缺乏,或操作系统错误导致无法释放资源,工具软件的错误,编译器的错误,2000 千年虫问题等。

    工作环境

    组织机构调整,预算改变,工作环境恶劣,如噪音过大。

    第26回 提高测试覆盖度

    测试覆盖度评估是衡量阶段性软件测试执行状态的重要手段之一,来确定测试是否达到事先设定的测试任务完成的标准。测试覆盖率则是测试覆盖度评估中一种量化的表示方法,一般通过被测试的软件产品需求、功能点、测试用例数或程序代码行等来进行计算。

    软件测试覆盖率常用的计算公式:

    1. 功能覆盖率= 至少被执行一次的测试功能点数/ 测试功能点总数 (功能点)
    2. 需求覆盖率= 被验证到的需求数量 /总的需求数量 (需求)
    3. 覆盖率= 至少被执行一次的测试用例数/ 应执行的测试用例总数 (测试用例)
    4. 语句覆盖率= 至少被执行一次的语句数量/ 有效的程序代码行数
    5. 判定覆盖率= 判定结果被评价的次数 / 判定结果总数
    6. 条件覆盖率= 条件操作数值至少被评价一次的数量 / 条件操作数值的总数
    7. 判定条件覆盖率= 条件操作数值或判定结果至少被评价一次的数量/(条件操作数值总数+判定结果总数)
    8. 上下文判定覆盖率= 上下文内已执行的判定分支数和/(上下文数*上下文内的判定分支总数)
    9. 基于状态的上下文入口覆盖率= 累加每个状态内执行到的方法数/(状态数*类内方法总数)
    10. 分支条件组合覆盖率= 被评测到的分支条件组合数/分支条件组合数
    11. 路径覆盖率= 至少被执行一次的路径数/程序总路径数

    除此之外,覆盖率还包括类覆盖率、函数覆盖率、代码块覆盖率等,如EMMA中

    测试评估可以说贯穿整个软件测试过程,可以在测试每个阶段结束前进行,也可以在测试过程中某一个时间进行,目的只有一个,提高测试覆盖度,保证测试的质量。通过不断的测试覆盖度评估或测试覆盖率计算,及时掌握测试的实际状况与测试覆盖度目标的差距,及时采取措施,就可以提高测试的覆盖度。

    测试覆盖度的评估依赖于不同的测试阶段或不同的测试方法。如在单元测试中,测试覆盖率是建立在被测试的代码行、程序分支和程序路径等的度量之上,从软件质量保证的要求出发,单元测试的覆盖率要达到80%之上。白盒测试方法主要以程序语句、判定-条件、条件组合和(基本)路径等覆盖率来衡量,和单元测试是吻合的。而在系统功能测试中,则以功能点、测试用例、需求数等覆盖率来衡量。

    要获得、提高测试覆盖率,常常需要借助测试工具。下面就以两个测试工具为例。

    1. EMMA

    EMMA 是一个用于检测和报告 JAVA 代码覆盖率的开源工具,支持许多种级别的覆盖率指标:包,类,方法,语句块(basic block)和行,特别是能测出某一行是否只是被部分覆盖,如条件语句短路的情况。EMMA能生成 text、xml、html 等形式的报告,以满足不同的需求,其 html 报告提供逐层细化查询功能,能够从 package 开始一步步链接到我们所关注的某个方法。EMMA 能和 Makefile 和 Ant 集成,效率很高,便于应用于大型项目。

    EMMA 是通过向 .class 文件中插入字节码的方式来跟踪记录被运行代码信息的。EMMA 支持两种模式:On the fly 和 Offline 模式。On the fly 模式往加载的类中加入字节码,相当于用 EMMA 实现的 application class loader 替代原来的 application class loader。On the fly 模式比较方便,缺点也比较明显,如不能为被 boot class loader 加载的类生成覆盖率报告,也不能为像 J2EE 容器那种自己有独特 class loader 的类生成覆盖率报告。这时,必须求助于 Offline 模式,Offline 模式是在类被加载前,加入字节码。EMMA 也支持两种运行方式:Command line 和 Ant。

    2. Rational PureCoverage

    PureCoverage 是一个面向VC, VB 或者Java 开发的测试覆盖程度检测工具,可以自动检测测试完整性和未被测试的范围,在每一个测试阶段生产详尽的测试覆盖程度报告。PureCoverage 将在一个对话框中列出所有应用程序模块,开发人员只需针对每个应用程序构件,就可以简单地设置基于代码行或函数的代码覆盖级别。不仅可以查看每次程序运行的图形化覆盖数据,还可以直接地、实时地控制覆盖数据的记录。对于最关心或最重要的功能模块,可以详细地收集覆盖数据;而对于不太重要的模块, 只收集较常规的覆盖数据,帮助开发人员进行有效地测试。

    系统的测试活动,依据测试目标,建立在至少一个测试覆盖策略基础上,而覆盖策略帮助进行测试覆盖度的有效评估。覆盖策略有

    • 基于需求的测试覆盖评估,依赖于对已执行/运行的测试用例的核实和分析,所以基于需求的测试覆盖评测就转化为评估测试用例覆盖率:测试的目标是确保100%的测试用例全部成功地执行。
    • 基于代码的测试覆盖评估,是对被测试的程序代码语句、路径或条件的覆盖率分析。如果应用基于代码的覆盖,则测试策略是根据测试已经执行的源代码的多少来表示的。这种测试覆盖策略类型对于安全至上的系统来说非常重要。

    如果测试需求已经完全分类,则基于需求的覆盖策略可能足以生成测试完全程度评测的量化指标。例如,如果已经确定了所有性能测试需求,则可以引用测试结果来得到评测,如已经核实了90%的性能测试需求。除此之外,如果测试软件的数量较大,还要考虑数据量。

    第27回 测试结果分析和质量报告

    如同代码是程序员的成果之一,测试报告和质量报告是测试人员的主要成果之一。对于一个好的测试报告,是建立在正确的、足够的测试结果的基础之上,不仅要提供必要的测试结果的实际数据,同时要对结果进行分析,发现产品中问题的本质,对产品质量进行准确的评估。

    1.缺陷分析

    对缺陷进行分析,确定测试是否达到结束的标准,也就是判定测试是否已达到用户可接受的状态。在评估缺陷时应遵照缺陷分析策略中制定的分析标准,最常用的缺陷分析方法有:

    • 缺陷分布报告,允许将缺陷计数作为一个或多个缺陷参数的函数来显示,生成缺陷数量与缺陷属性的函数,如缺陷在程序模块的横向分布、严重性缺陷在不同的产生原因上的分布等。
    • 缺陷趋势报告,按各种状态将缺陷计数作为时间的函数显示,如缺陷数量在整个测试周期的时间分布。趋势报告可以是累计的,也可以是非累计的,可以看出缺陷增长和减少的趋势;
    • 缺陷年龄报告,是一种特殊类型的缺陷分布报告,显示缺陷处于活动状态的时间,展示一个缺陷处于某种状态的时间长短,从而了解处理这些缺陷的进度情况。
    • 测试结果进度报告,展示测试过程在被测应用的几个版本中的执行结果以及测试周期,显示对应用程序进行若干次迭代和测试生命周期后的测试过程执行结果

    同时,也可以在项目结束后进行缺陷分析,以改进开发和测试进程,如:

    • 通过缺陷(每日或每周新发现的缺陷)趋势分析来了解测试的效率,也可根据丢失的Bug数目和发现总的Bug数,可以了解测试的质量。可以根据执行的总测试用例数,计算出每发现一个Bug所需要的测试用例数、测试时间等,对不同阶段、不同模块等进行对比分析。
    • 通过缺陷数量或在模块的分布情况,可以掌握程序代码的质量,如通过对每千行代码所含的Bug数分析,了解程序代码质量。通过缺陷(每日或每周修正/关闭的缺陷)趋势分析开发团队解决Bug的能力或状态

    2.产品总体质量分析

    对测试的结果进行整理、归纳和分析,一般借助于Excel文件、数据库和一些直方图、圆饼图、趋势图等来进行分析和表示,主要的方法有对比分析、根本原因(Root Cause)查找、问题分类、趋势(时间序列)分析等。

    • 对比分析,软件来执行测试结果与标准输出的对比工作,因为可能有部分的输出内容是不能直接对比的(比如,对运行的日期时间的记录,对运行的路径的记录,以及测试对象的版本数据等),就要用程序进行处理。
    • 根本原因(Root Cause)查找,“分析”是找出不吻合的地方并指出错误的可能起因。
    • 问题分类,“分类”包括各种统计上的分项,例如,对应的源程序的位置,错误的严重级别(提示、警告、非失效性错误、失效性错误等),新发现的还是已有记录的错误。
    • 趋势(时间序列)分析,根据所发现的软件缺陷历史数据进行分析,预测未来情况。
    • 其它统计分析,通过对缺陷进行分类,然后利用一些成熟的统计方法对已有数据进行分析,以了解软件开发中主要问题或产生问题的主要原因,从而比较容易提高软件质量。

    第28回 测试过程和结果度量

    测试阶段的过程度量内容或项目比较多,包括软件测试进度、测试覆盖度、测试缺陷出现/到达曲线、测试缺陷累积曲线、测试效率等。在进行测试过程度量时,要基于软件规模度量(如功能点、对象点等)、复杂性度量、项目度量等方法,从三个不同的测度来完整度量测试的过程状态:

    1. 测试广度的测量提供了多少需求(在所有需求的数目中)在某一时刻已经被测试,来度量测试计划的执行、测试进度等状态;
    2. 测试深度是对被测试覆盖的独立基本路径占在程序中的基本路径的总数的百分比的测度,基本路径数目的度量可以用McCabe环形计算复杂度方法来计算。
    3. 过程中收集的缺陷数度量,发现的、修正的和关闭的缺陷数量在过程中的差异、发展趋势等,为过程质量、开发资源额外投入、软件发布预测提供重要依据。

    如前所述,测试过程的度量可以将过程状态度量和过程结果度量结合起来分析,是测试过程度量更有效。

    在测试阶段,主要的过程质量度量有:

    • 缺陷度量或缺陷分布度量
    • 测试用例的深度、质量和有效性
    • 测试执行的效率和质量
    • 缺陷报告的质量
    • 软件测试演义——第二部分 技术篇

      2007-08-21 17:29:08

      软件测试演义——第二部分 技术篇
       
      作者:朱少民 出处:CSDN
       

      技术篇

      第10回 在软件开发各个阶段的测试任务

      软件测试是软件开发过程中重要内容之一,是软件质量保证的关键。软件测试贯穿软件产品开发的整个生命周期,如第二章V模型图2-1所示,软件测试和软件项目同时开始,从产品的需求分析审查到最后的验收测试,直至软件发布。

      从测试实际的前后过程来看,软件测试的过程是由一系列的不同测试阶段所组成,这些软件测试的步骤分为:需求分析审查、设计审查、单元测试、集成测试(组装测试)、功能测试、系统测试、验收测试、回归测试(维护)等。详细内容见下表。

      阶  段

      输入和要求

      输出

      需求分析审查

      Requirements Review

      市场/产品需求定义、分析文档和相关技术文档

      要求:需求定义要准确、完整和一致, 真正理解客户的需求

      需求定义中问题列表,批准的需求分析文档

      测试计划书的起草

      设计审查

      Design Review

      产品规格设计说明、系统架构和技术设计文档、测试计划和测试用例

      要求:系统结构的合理性、处理过程的正确性、数据库的规范化、模块的独立性等

      清楚定义测试计划的策略、范围、资源和风险,测试用例的有效性和完备性

      设计问题列表、批准的各类设计文档、系统和功能的测试计划和测试用例

      测试环境的准备

      单元测试

      Unit Testing

      源程序、编程规范、产品规格设计说明书和详细的程序设计文档

      要求:遵守规范、模块的高内聚性、功能实现的一致性和正确性

      缺陷报告、跟踪报告;完善的测试用例、测试计划

      对系统功能及其实现等了解清楚

      集成测试

      Integration Testing

      通过单元测试的模块或组件、编程规范、集成测试规格说明和程序设计文档、系统设计文档

      要求:接口定义清楚且正确、模块或组件一起工作正常、能集成为完整的系统

      缺陷报告、跟踪报告;完善的测试用例、测试计划;集成测试分析报告;

      集成后的系统

      功能验证

      Functionality  Testing

      代码软件包(含文档),功能详细设计说明书; 测试计划和用例

      要求:模块集成 功能的正确性、适用性

      缺陷报告、代码完成状态报告、功能验证测试报告

      系统测试

      System  Testing

      修改后的软件包、测试环境、系统测试用例和测试计划

      要求:系统能正常地、有效的运行,包括性能、可靠性、安全性、兼容性等。

      缺陷报告、系统性能分析报告、缺陷状态报告、阶段性测试报告

      验收测试

      Acceptance  Testing

      产品规格设计说明、预发布的软件包、确认测试用例

      要求:向用户表明系统能够按照预定要求那样工作,使系统最终可以正式发布或向用户提供服务。用户要参与验收测试,包括α测试(内部用户测试)、β测试(外部用户测试)

      用户验收报告、缺陷报告审查、版本审查

      最终测试报告

      版本发布

      Release

      软件发布包、软件发布检查表(清单)

      当前版本已知问题的清单、版本发布报告

      维护

      Maintance

      变更的需求、修改的软件包、测试用例和计划

      要求:新的或增强的功能正常、原有的功能正常,不能出现回归缺陷

      缺陷报告、更改跟踪报告、测试报告

      第11回 集成测试的模式和方法

      单元测试主要由开发人员完成,所以从测试人员工作来看,集成测试可能是具体测试实施的第一个阶段,虽然开发人员也比较多地参与集成测试。集成测试相对来说是挺复杂的,而且对于不同的技术、平台和应用,差异也比较大。不过,我们还是不得不面对它,保证系统集成成功,为后来的系统测试打下基础。

      集成测试简单的表现形式就是每日构建(Daily Build), 保证Build构建成功,也就是保证软件的组件或单元能组装成一个系统。每日构建是一个很好的实践,被许多软件公司采用。

      集成测试,更多是和开发环境融合在一起,在编程过程中去实现,如MS Visual Studio.NET ,Borland JBuilder IDE, Compuware OptimalJ的集成开发/测试环境。更正确的说法,集成测试发要追溯到设计阶段。当设计数据接口(DB,XML等)、组件接口、应用接口(API)之时,我们就要审查接口的规范性、一致性等,就已经开始了集成测试。

      集成测试阶段,测试方法是动态变化的,从白盒测试方法向黑盒测试方法逐渐过渡。在自底向上集成的早期,白盒测试方法占较大的比例,随着集成测试的不断深入,这种比例在测试过程中将越来越少,渐渐地,黑盒测试慢慢占据着主导地位。

      集成模式是软件集成测试中的策略体现,其重要性是明显的,直接关系到测试的效率、结果等,一般要根据具体的系统来决定采用哪种模式。集成测试基本可以概括为以下两种:

      • 非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求一次全部组装起来所要的系统,然后进行整体测试。
      • 渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个模块结合进来测试。

      非渐增式测试时可能发现一大堆错误,为每个错误定位和纠正非常困难,并且在改正一个错误的同时又可能引入新的错误,新旧错误混杂,更难断定出错的原因和位置。与之相反的是渐增式集成模式,程序一段一段地扩展,测试的范围一步一步地增大,错误易于定位和纠正,接口的测试亦可做到完全彻底。两种模式中,渐增式测试模式虽然需要编写的Driver或Stub程序较多、发现模块间接口错误相对稍晚些,但渐增式测试模式还具有比较明显的优势。

      在实际测试中,应该将两种模式有机结合起来,采用并行的自顶向下、自底向上集成方式,而形成改进的三明治方法。而更重要的是采取持续集成的策略,软件开发中各个模块不是同时完成,根据进度将完成的模块尽可能早的进行集成,有助于尽早发现缺陷,避免集成阶段大量缺陷涌现。同时自底向上集成时,先期完成的模块将是后期模块的桩程序,而自顶向下集成时,先期完成的模块将是后期模块的驱动程序,从而使后期模块的单元测试和集成测试出现了部分的交叉,不仅节省了测试代码的编写,也有力于提高工作效率。

      如果不采用持续集成策略,开发人员经常需要集中开会来分析软件究竟在什么地方出了错。因为某个程序员在写自己这个模块代码时,可能会影响其它模块的代码,造成与已有程序的变量冲突、接口错误,结果导致被影响的人还不知道发生了什么,缺陷就出现了。随着时间的推移,问题会逐渐恶化。通常,在集成阶段出现的缺陷早在几周甚至几个月之前就已经存在了。结果,开发者需要在集成阶段耗费大量的时间和精力来寻找这些缺陷的根源。如果使用持续集成,这样的缺陷绝大多数都可以在引入的第一天就被发现。而且,由于一天之中发生变动的部分并不多,所以可以很快找到出错的位置。这也就是为什么进行每日构建软件包的原因所在。所以,持续集成可以提高软件开发的质量与效率。

      在现实中,集成测试和单元测试所处的情形相似,测试不彻底、不充分,没有各种接口参数、各类接口数据进行充分测试。如果系统的架构的层次不清楚,这种问题会更严重。目强许多开放系统都支持API,其集成测试的内容就更多了,除了API手册的内容正确性验证之外,还要模拟用户调用API的各种Scenario,后者在编程技术、对产品的各类应用要很好掌握,才能做好测试。

      第12回 功能测试和适用性测试的标准

      软件的功能测试往往被认为是测试中的相对简单工作,缺乏技术,只是"Mouse-driven"。实际上,软件功能测试,一方面依赖于不断积累的的经验,另方面功能测试也是离不开技术,包括环境设置、功能实现的理解。如果结合测试自动化、白盒或灰盒测试方法等,测试的效率会更高。

      适用性测试,往往可以和 功能测试结合起来做。但适用性主要是用户体验的评估活动,需要外部不同的各类人员参加。用户体验,对软件的生命力、市场影响和客户满意度的影响是非常重要的,越来越受到企业的重视。在微软公司,就设立了12个专门用于适用性的测试。在国外,也有专业公司(如 UE Group - http://www.theuegroup.com/, Genesis - http://www.genesishci.com/)帮助软件企业运作适用性测试,组织大量的、不同的用户进行体验测试。

      功能测试一般须在完成集成测试后进行,而且是针对应用系统进行测试。功能测试是基于产品功能说明书,是在已知产品所应具有的功能,从用户角度来进行功能验证,以确认每个功能是否都能正常使用、是否实现了产品规格说明书的要求、是否能适当地接收输入数锯而产生正确的输出结果等。功能测试,包括用户界面测试、各种操作的测试、不同的数据输入、逻辑思路、数据输出和存储等的测试。对于功能测试,针对不同的应用系统,其测试内容的差异很大,但一般都可归为界面、数据、操作、逻辑、接口等几个方面,如:

      • 程序安装、启动正常,有相应的提示框、适当的错误提示等;
      • 每项功能符合实际要求;
      • 系统的界面清晰、美观;菜单、按钮操作正常、灵活,能处理一些异常操作;
      • 能接受正确的数据输入,对异常数据的输入可以进行提示、容错处理等;
      • 数据的输出结果准确,格式清晰,可以保存和读取;
      • 功能逻辑清楚,符合使用者习惯;
      • 系统的各种状态按照业务流程而变化,并保持稳定;
      • 支持各种应用的环境,能配合多种硬件周边设备,与外部应用系统的接口有效;
      • 软件升级后,能继续支持旧版本的数据

      软件产品以软件的客户为出发点,好的用户界面,除了正确性和实用性之外,还包括另外5个要素:符合标准和规范、直观性、一致性、灵活性、舒适性、。

      1. 符合标准和规范:软件在现有的平台上运行,通常标准是已经确立的(如MAC或者WINDOWS),这些规则和约定也是功能测试的依据。这些标准和规范是在大量实践基础上、随着时间而沉淀下来的、方便用户的各种规则和约定,如软件菜单格式、快捷键、复选框和单选按钮的界面,使用提示信息、警告信息或者严重警告信息等特定场合。

      2. 直观性:首先了解所需的功能或期待的响应明显,并在预期的地方出现。其次要考虑用户界面的组织和布局是否合理、界面是否洁净、不拥挤以及是否有多余的功能,是否太复杂难以掌握等因素。

      3. 一致性:软件自身的一致性以及软件与其他软件的一致性。字体和界面的各元素风格是否一致是比较容易判定的,而较难的一致性判断体现在用户操作方式上。用户习惯于将某一程序的操作方式带到另一个程序中使用。例如在WINDOWS平台客户已经习惯用Ctrl+C表示复制操作的,而在软件中将复制操作的快捷键定义为其它键,必定会给用户造成挫败感,难以接受。

      4. 灵活性:软件可以选择不同的状态和方式,完成相应的功能。但灵活性也可能发展为复杂性,太多的状态和方式的选择增加的不仅仅是用户理解和掌握的困难程度。多种状态之间的转换,增加了编程的难度,更增加了软件测试的工作量。

      5. 舒适性:人们对舒适的理解各不相同,但总体上要求恰当的表现、合理的组织、色调和谐、必要的提示或等。

      第13回 负载、性能测试和容量测试的关系和区别

      对于软件应用系统,仅仅从功能上满足用户的需求是不够的,还需要从性能、可用性等方面更好地满足客户的需要。

      尤其对于实时软件系统、嵌入式系统和在线服务系统,这方面要求更高些。这就要求我们要做好系统的压力测试、性能测试、容量测试,以保证系统能提供良好的高性能、高可用性,让客户满意。

      1.强度测试或压力测试

      强度或压力测试是在一种需要异常数量、频率或资源的方式下,执行可重复的负载测试,以检查程序对异常情况的抵抗能力,找出性能瓶颈。异常情况,主要指那些峰值、极限值、大量数据的长时间处理等,包括:

      • 连接或模拟了最大(实际或实际允许)数量的客户机;
      • 所有客户机在长时间内执行相同的、性能可能最不稳定的重要业务功能;
      • 已达到最大的数据库大小,而且同时执行多个查询或报表事务
      • 当中断的正常频率为每秒一至两个时,运行每秒产生十个中断的测试用例;
      • 运行可能导致虚存操作系统崩溃或大量数据对磁盘进行存取操作的测试用例等。

      压力测试可以分为稳定性测试和破坏性测试:

      • 稳定性压力测试。在选定的压力值下,持续运行24小时以上的测试。通过压力测试,可以考察各项性能指标是否在指定范围内,有无内存泄漏、有无功能性故障等。
      • 破坏性压力测试。在压力稳定性测试中可能会出现一些问题,如系统性能明显降低,但很难暴露出其真实的原因。通过破坏性不断加压的手段,往往能快速造成系统的崩溃或让问题明显的暴露出来。

      在压力测试中,会给程序加上一些跟踪机制(如log、日志等),然后查看监视系统、服务器等性能的日志文件是必要的,找出问题出现的关键时间或检查测试运行参数,通过分析问题或参数从而有目的地调整测试策略或测试环境,使压力测试结果真实地反映出软件的性能。

      2.性能测试

      系统的性能指标,一般赢在产品需求文档中有明确定义,有三种形式描述软件系统的性能指标:

      • 给出产品性能的主要指标,如在100000记录中查询一个特定数据的时间为0.5秒。
      • 以某个已发布的版本为基线,如比上一个版本的性能提高30-50%。
      • 和竞争对手的同类产品比较。

      性能测试,根据其目的分为:

      • 产品性能质量测试,通过测试,决定产品是否达到产品规格书所要求的性能指标(非功能性需求)
      • 基准值测试,通过对当前产品的性能测试,确定产品具体的性能指标,建立性能指标基准。基准值,作为后继产品发布的性能参考(在新版本中,性能指标要求只升不降)或和竞争对手产品比较的参考。
      • 性能规划测试,通过不断的测试,确定所需要的硬件配置(内存、CPU、网络等)、软件配置,以满足实现定义的性能指标要求。这种测试,对于软件系统的部署是非常有意义的。同时,也可以进一步了解硬件参数、软件参数对系统性能的影响程度,从而保证系统具有很好的扩充性或事先制定较好的系统增容的计划。

      性能测试的方法,主要有:

      • 稳定压力加载,一次性将负载加到某个水平,持续一段时间,也称为flat测试。
      • 逐渐加载或交替加载到某个负载水平,也称为“ramp-up”测试。
      • 峰谷测试,确定从系统高峰时间的负载转为几乎空闲、再攀升到高负载这样峰值交替情况下的系统性能状态/指标。这种测试兼有容量测试的特点或属于容量测试的一部分。

      性能测试,一般都通过测试工具来模拟人为的操作而进行。性能测试的重点在于测试环境的建立、前期数据的设计与后期数据的分析。因为性能测试需要获得一定特定条件下(如100、200、500、1000个实时的连接)的系统占用资源(CPU、内存等)数据或系统行为表现,而且还要依靠测试工具或软件系统记录下这些指标变化的数据结果。例如,如果对一个Browser/Server结构的网络实时在线的培训系统软件进行测试,系统性能焦点是在不同数量的并发连接下,服务器的CPU、内存的占用率、客户端的响应时间等,如表1所示。

      表1 HTTP连接性能表

      HTTP

      1´5

      1´50

      1´100

      1´300

      1´500

      1´600

      1´700

      1´800

      1´900

      ……

      10´5

      60´5

      CPU (%)

      1.2

      2.5

      4.5

      11

      20

      20

      28

      23

      25

       

      4

      24

      物理内存(M)

      55

      45

      38

      38

      32

      48

      75

      46

      37

       

      178

      232

      虚拟内存(M)

      836

      841

      831

      855

      865

      858

      867

      874

      884

       

      871

      1,472

      加入时间(s)

      12.04

      12.14

      11.6

      15.48

      126.1

      104.76

      168.1

      123.7

      218.11

       

      12.01

      9.17

      建会时间(s)

      12.01

      11.35

      12.38

      13.32

      13.63

      14.06

      16.35

      14.98

      17.68

       

      10.9

      11.39

      延时(s)

      …….

      查看(401) 评论(0) 收藏 分享 管理

    • 如何从一名测试员转型为管理人员

      2007-07-19 16:16:07

       

         如果你是测试员或是高级测试员,有志转向管理发展,那么需要加强以下内容,至少要做到几点:

        1. 测试计划的编写(要结合测试的项目,能以此来控制和确定测试所需人员,设备及时间来管理测试时间)

        2. 要熟悉BUG跟踪工具及软件测试流程.(如: TD, Bugzilla, CQ等)

        3. 要熟悉配置管理工具. (如: CVS, VSS等)

        4. 要熟悉自动化工具.(例如:WinRunner, QTP, Robot, RFT, Automation等,能结合录制完的脚本编写代码)

        5. 要熟悉压力及性能测试工具.(例如: LoadRunner, webload, silkperformance等,能结合相关数据,分析出性能瓶颈)

        6. 要熟悉或精通一门语言. (例如: Java, C++)

        7. 要熟悉数据库.(例如: Oracle, DB2, SQLServer, MySQL)

        8. 要熟悉主流操作系统. (例如: HP Unix, IBM AIX, Sun Solaris, Red Hat Linux, SuSE Linux, Windows)

        9. 能用英文流利的和老外交流以及往来Email.

        10. 语言表达能力强,表达问题清晰明了.

        11. 沟通能力强,能和上级/开发经理很好的达成测试相关/BUG事宜.

        12. 学习技术的能力要强,能快速上手一个新的技术.

        13. 乐于与人交流.

    • 261/212>