有付出必有回报。 有得必有失。 有酸甜苦辣的生活才是真正的生活。 我愿意像蜡烛一样发光发热,来照亮我的人生征途!! 日志上的资料都是我个人喜欢的或是对自己有用的,当然有很多是从别人处转载来的,但是都是为了共同进步!希望和大家一起分享! 牛年让自己更"牛"一点!!!

发布新日志

  • 近期测试工作的总结

    2008-12-24 09:55:41

    近期测试工作的总结

    最近主要的工作是

    1.       SmartControl管理层测试的测试需求分析和用例的设计

    2.       SmartControl公司层面和流程层面导入功能的测试

    测试流程:

    1.       本次管理层测试模块的需求评审和原型设计评审比较到位,所以需求的变动比较少,更重要的是,需求和原型设计是测试人员做测试需求分析的一个很重要的标准,是测试人员工作的基础。所以测试需求分析做得很顺利,(利用工具Rational ROSE画用例图,活动图和功能流程图)工作效率比较高。在做测试需求分析的时候,对管理层测试模块的测试范围就很明确了,再把各个功能点的显式需求和隐式需求进行挖掘,就不会遗漏需求了。

    2.       设计测试用例。对用例的设计要用到多种设计方法,如等价类边界值方法,流程图法,状态图,因果图等方法,但原则是:用最少的用例覆盖最多的需求,用最少的用例发现最多的BUG

    3.       执行用例。在做用例执行前,应该对提交过来的测试版本做一个冒烟测试,也可以先执行用例中优先级别为高的用例,这样可以对软件的质量有一个基本的认识。如果连最正常的功能都没有实现,这样的版本再继续测试下去只是浪费时间,根本没有任何意义。如果是这样的测试版本,测试组应该打回开发组,让他们重新提交一个至少实现了正常功能的版本。到了正式执行用例的时候,应该严格按照用例中的描述步骤来测试。如果与我们的预期输出不一致,我们要多次重复执行,直到确认这是一个BUG,我们才能往BUG库上记录,记录的时候应该尽可能地描述清楚,最好的效果就是让开发人员一看就明白问题出在哪里,在这一点上,我做得不够好,今后一定会往这方面加强。

    4.       系统的回归测试。开发人员修改BUG后,我们要进行验证,如果此BUG确实修复了并且没有引入新的问题,我们就可以关闭此BUG。如果此BUG仍然存在,或是引起了别的问题,我们应该重新开启此BUG,并描述清楚新的问题是如何引起的,以便让开发人员定位问题.

    5.       编写测试报告。主要对此次测试过程进行评价,对此次测试的版本进行总结,对各版本的BUG进行统计,BUG严重性等要用图表形式表示出来以及对测试结论是怎样。

     

    在做完一个项目之后,应该进行个人的总结。在本项目中,你学到了哪些知识和经验,有哪些地方做得好,哪些方面需要改进。有总结才会有进步!

     

     

  • 终于抵抗不住冬天的"诱惑"了

    2008-12-22 13:10:25

  • 一个成功软件测试项目的经验

    2008-12-17 18:17:27

    本文以一个工作流测试项目为例, 总结了在测试过程中积累的经验,探讨了目前国内软件开发企业在软件测试过程中遇到的问题以及解决的方法。测试项目背景和实施情况工作流在某公司软件产品线中占有重要地位,XXX5.2     
      Workflow项目是5系列中的一个小版本,主要增加了任务代办、任务代理、以及任务交接等功能,同时还修复了一些易用性和功能性的Bug。下面,我们大概介绍一下这个项目的实施情况:
    ● 项目规模与测试人员配置:
    ○ 项目代码行数:5万行
    ○ 开发人员配置:开发人员5名、实习生1名
    ○ 测试人员配置:测试设计人员1名、测试执行人员2名、实习生1名
    ● 项目测试时的系统部署情况:
    ● 测试预期与测试执行情况整个测试项目是比较成功的,项目的时间执行情况和预期的测试指标度量都比较接近。发现Bug总数和缺陷密度都达到了要求的标准。当然,测试周期的实际值比计划值晚了两周,原?因是在系统测试后期,为了满足PSO部门提出的定时器需求造成了一定的延期。回顾整个项目的测试过程,我有几点小小的感悟,愿在此和大家一起分享。
    测试如何尽早介入
    基于以前的测试经验,我们也越来越认识到测试人员应该尽早介入项目的重要性。简单地沿用测试V模型往往出现很多问题,特别是在项目进度拖延的情况下更是如此。如果测试人员一味固执地被要求严格按照V模型定义的标准来开展测试工作的话,则结果往往是在项目初期测试人员工作量极度不饱和(很多测试人员无所事事),而到了项目后期,一旦项目经理决定压缩测试时间,测试人员就不得不加班加点地工作。但是,不少朋友实践“测试人员尽早介入”的效果并不理想,例如:
    ● 测试人员参加项目前期的各种会议,会被当作“专职的”会议记录员。
    ● 测试人员参加代码评审,又不甚了解程序开发语言,浪费了时间其丢失了自信。那么,在这个XXX5.2 Workflow项目中我们是怎么做的呢?实际上,在项目开发初期,测试人员可以开展很多有价值的工作,例如:
    ● 评审需求文档的正确性和可测试性;根据需求文档整理和分析测试需求,清晰明确的测试需求是测试设计的基础。
    ● 在开发设计过程中,根据需求文档和设计文档进行测试设计,测试设计方案是测试用例的保证。
    ● 和项目团队中的集成组和开发组协?商软件版本的编译方式和编译进度以及测试人员提取版本的方式和进度。
    ● 开发人员每天下午4:30之前提交所有可编译的代码,每天晚上进行日编译;
    ● 开发经理根据版本稳定情况,每周提交测试申请单。
    ● 测试人员根据测试进度需要,提取测试版本。
    ● 提前准备测试环境,包括数据库环境,操作系统和web应用服务器,以及复杂集群环境。
    ● 如果项目需要,还可以在此阶段研究一下自动测试工具,包括一些准备外包测试的工作。根据产品的成熟度调整测试策略开发测试一盘棋。测试经理应该有大局观,保持测试策略总与开发的进展相一致,保证最终的软件成果最佳(而不是测试部发现Bug数最多)。在这个XXX5.2 Workflow项目过程中,我们合理制定了不同阶段的测试策略,收到了很好的效果。
      产品开发期同情的测试
      要忍!要在这个能够发现大批Bug的黄金时段学会做减法。就现实而言,这个阶段的产品,大多难以满足系统测试的条件。如果进行穷兵黩武式的测试,无疑会加重开发人员的焦虑心情,甚至对测试产生逆反心理。另一方面,测试工作不应停滞,特别是不少测试人员对产品的了解还流于皮毛,抓紧时间进行“测试练兵”非常有必要。因此,“产品开发期”的测试切忌生硬。其实,此时程序人员也知道产品还不成熟,所以要告诉测试执行人员:
    ● 这个阶段不要提交界面简单错误和易用性方面的Bug(可以先记录下来到项目末期提交),否则会使开发人员质疑测试人员只会发现简单的Bug。
    ● 换位思考,了解此时开发人员最关心的是功能是否能正确运行,多对基本功能进行测试。
      产品成熟期积极的测试
      随着产品的不断成熟,主要功能的实现已经趋于完善,关键路径的测试已经不成问题。此时的程序员们,压力已经大大减轻,他们的工作重点也从“构建”转移到了“修复Bug”,这个阶段程序人员对于Bug的接受程度是最高的,对Bug的修复和反馈也非常积极。于是,此时的测试工作应对整个产品的细节和所有路径进行覆盖测试,保证测试的全面性,层层深入地测试产品值得测试的各个部分,尽可能多的发现并报告Bug。
      产品稳定期多样的测试
      在这个阶段,可以尽情的向开发人员报告产品易用性和界面的Bug;可以充分发挥每个测试人员的想象力,根据以往的测试经验来搭建测试场景,构造测试数据;可以通过不同业务场景的不同操作,通过特殊的测试数据,以及相对复杂的集群测试环境来进行多样化测试。为什么?因为此时必须测试得更加深入,才能发现更深层次的Bug,于是多样性的测试、探索式的测试必不可少。
         产品发布期谨慎的测试
         在临近产品发布的日子,包括测试在那的很多工作都变得谨慎起来:代码的提交权限受到了控制,只保留开发经理一个入口;测试的重点更加具有防御性,要仔细测试每个变更,还可以组织“结对测试”来增加测试的保障。测试经理应知人善任为了保证测试工作的质量,首当其冲地就是应该有专业的测试团队。在很多小的软件项目中,往往没有专门的测试团队。这样一来,到了代码基本完成之时,就只能从客户支持部门或研发部门抽调一些人手临时拼凑出“测试团队”进行几周的测试工作,测试质量难以保证。我们则会尽早规划测试团队的人员结构,完善测试团队的配置。每个测试人员的特点和强项常常不尽相同,例如,擅长测试数据质量的测试员,未必能胜任系统环境配置复杂的测试任务。总之,对测试经经理而言,做到知人善任非常重要。同时,在项目测试过程中及时进行调整有时也很必要。此次测试的工作流系统,要求测试人员不仅应掌握一定的工作流业务知识,还需要有较强的逻辑思维能力。而在此项目测试过程中,笔者发现一位测试人员对功能的细节过分关注,而对整个工作流程总是理解不到位。显然,其设计出的测试用例不能适应工作流测试的要求。于是,立即进行人员分工和测试任务的调整,保证了测试工作顺利进行。坚持立场,规范流程我们公司有严格的测试流程,所有提交测试的软件版本,在提交之前,都要完成必需的冒烟测试(Smoking Test)。冒烟测试是一种测试包,其目标是检查版本的基本功能。这个测试包是由测试人员根据测试用例中级别为“基本”的测试用例抽取出来的,如果该版本没有通过冒烟测试,则就可以说明该版本不太稳定,不值得提交测试人员进行系统测试。有的公司冒烟测试是由测试人员手工或者自动测试。在我们这个项目中,为了保证每个可测试版本的冒烟测试质量,是由开发人员负责完成的。他们知道,如果程序不能通过冒烟测试,测试小组就会拒绝该版本。因此,他们会填写一份提交测试申请表来申请进行系统测试。在这份表格中,不仅会明确版本号,修改或新增的功能详细说明,还会给测试人员提供此版本的测试重点,以及可能会影响到的功能。这些内容对测试人员都是至关重要和大有裨益的。
      在项目测试过程中,我们也出现过打回某个版本的情况,拒绝测试。总结起来,基本上有以下几种情况:
    ● 由于任务查询的技术难度比较大,开发进度已经延期了5天,测试人员正在焦急的等待这部分的功能测试。可是,新提交的可测试版本中,这个功能根本就不能使用,如果进一步测试就是浪费时间,我们立即打回了这个测试版本。
    ● 新增了代办的功能,可是以往的代理功能中的增加代理人功能却不能正常使用,而增加代理人功能又是代办功能的基础,也就是说,在这个版本中,及时代办功能完全能够测试,可离开了增加代理人功能,代办测试是没有意义的。
    ● 在回归测试阶段,可测试版本的提交是比较频繁的。开发人员一旦解决了一部分bug就会提交一个可测试版本,如果此时测试人员并不急需更换版本,并且得知另一个版本会在几个小时之后就会完成,我们可以不测试这个版本。为了能更好的完成冒烟测试这个关键阶段,测试人员积极与开发人员配合:
    ● 负责提供冒烟测试案例。
    ● 如果测试人员处于版本等待阶段,主动和开发人员一起做冒烟测试。开展有效测试,提高测试效率有效的测试用例是软件测试成功的关键,有助于提高测试效率和测试覆盖率。在这个工作流软件测试项目中,我们从测试模型(Test Model)入手,结合丰富的测试经验和专业知识,从繁多的测试用例中挑选出有效的用例,用尽可能少的测试输入,覆盖尽可能多的软件需求。主要采用了状态机模型和组合模型,并结合了正交设计技术和组合覆盖技术,完成了对整个系统的测试设计。详细内容可以参考笔者在《程序员》杂志2007年第4期上的文章《基于模型的有效测试用例设计——工作流系统测试实战》一文。知己知彼,合力制胜提供服务使测试人员有机会赢得程序员的信任,同时也有机会展示自己的才能。同时,带来的回报是得到了开发人员对我们的帮助。在整个项目过程中,我们获得了很好的回报,比如:开发人员讲解设计思路、算法流程;和测试人员一起构造测试数据;积极参加每日测试例会,主动解决问题等。这样良好的合作状态与测试人员的主动努力是分不开的,主要体现在:
    ● 获取程序员信任,及时沟通不要与被测程序的开发人员形成不必要的敌对关系。如果能与打交道的程序员共享信息,比如他们的计划、设计文档的早期草案和早期原型等,测试工作会更加有效。越早与程序员接触,情况就越好。尽早提出你的意见和反馈,了解程序员提交前完成的工作。
    ● 主动出击,提供服务 ○ 在测试前期,直接向开发人员提供服务;这不仅可以建立信任,而且还可以证明测试人员是能够与之合作的人。我们在项目过程中提供给开发人员的服务:○ 对工作流的运算逻辑?构件进行了测试,方便了后期开发工作流客户端应用的使用。○ 对内部版本和原?型进行测试。○ 对需求文档的可测试性进行评审。开发人员和测试人员一样,对模棱两可的要求很头疼,他们非常希望测试人员的介入。○ 帮助程序员建立测试环境,方便程序员进行测试。
    ● 耳目作用
    ○ 在项目过程中,测试人员有机会能够发现很多存在的问题,比如:需求和设计以及开发的不一致性,项目计划中工作任务的缺失等等。测试人员不要仅局限于测试命令链本身,及时验证和发现项目环节中的问题。总之,测试项目能否成功,与整个项目组的精诚合作是密不可分的。测试人员是一种服务角色,要乐于接受这种角色,只有这样,才能得到被服务的人的帮助和支持,以及认可。

     

  • 完整的GUI测试点

    2008-12-10 09:50:35

    GUI测试(二)

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

    菜单设测试细则:
    1)
    :菜单通常采用常用--主要--次要--工具--帮助的位置排列,符合流行的Windows风格。
    2):
    常用的有文件編輯查看等,幾乎每個系統都有這些選項,當然要根據不同的系統有所取捨。
    3):
    下拉菜单要根据菜单选项的含义进行分组,並且按照一定的规则进行排列,用横线隔开。
    4):
    一组菜单的使用有先后要求或有向导作用时,应该按先后次序排列。
    5):
    没有顺序要求的菜单项按使用频率和重要性排列,常用的放在开头, 不常用的靠后放置;重要的放在开头,次要的放在后边。
    6):
    如果菜单选项较多,应该采用加长菜单的长度而减少深度的原则排列。
    7):
    菜单深度一般要求最多控制在三层以内。
    8):
    对常用的菜单要有快捷命令方式,组合原则见8
    9):
    对与进行的操作无关的菜单要用屏蔽的方式加以处理,如果采用动态加载方式——即只有需要的菜单才显示——最好。
    10)
    :菜单前的图标不宜太大,与字高保持一直最好。
    11):
    主菜单的宽度要接近,字数不应多于四个,每个菜单的字数能相同最好。
    12)
    :主菜单数目不应太多,最好为单排布置。
    7:
    独特性:
    如果一味的遵循业界的界面标准,则会丧失自己的个性.在框架符合以上规范的情况下,设计具有自己独特风格的界面尤为重要。尤其在商业软件流通中有着很好的迁移默化的广告效用。

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

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

    1):
    面向事务的组合有:
    Ctrl-D
    删除 Ctrl-F 寻找 Ctrl –H替换;Ctrl-I 插入 Ctrl-N 新记录 Ctrl-S 保存 Ctrl-O 打开。

    2)
    :列表:
    Ctrl-R
    Ctrl-G定位;Ctrl-Tab下一分页窗口或反序浏览同一页面控件;。

    3):
    编辑:
    Ctrl-A
    全选;Ctrl-C 拷贝;Ctrl-V 粘贴;Ctrl-X 剪切;Ctrl-Z撤消操作;Ctrl-Y恢复操作。

    4)
    文件操作:
    Ctrl-P
    打印;Ctrl-W 关闭。

    5):
    系统菜单
    Alt-A
    文件;Alt-E编辑;Alt-T工具;AltW窗口;AltH帮助。
    6):MS Windows
    保留键:
    Ctrl-Esc
    任务列表 Ctrl-F4 关闭窗口; Alt-F4 结束应用;Alt-Tab 下一应用 Enter 缺省按钮/确认操作 Esc 取消按钮/取消操作 Shift-F1 上下文相

    关帮助
    按钮中:
    可以根据系统需要而调节,以下只是常用的组合。
    Alt-Y
    确定()Alt-C取消;Alt-N 否;Alt-D删除;Alt-Q退出;Alt-A添加;Alt-E编辑;Alt-B浏览;Alt-R读;Alt-W写。
    这些快捷键也可以作为开发中文应用软件的标准,但亦可使用汉语拼音的开头字母。
    9:
    安全性考虑:

    在界面上通过下列方式来控制出错几率,会大大减少系统因用户人为的错误引起的破坏。开发者应当尽量周全地考虑到各种可能发生的问题,使出错的可能降至最小。如应用出现保护性错误而退出系统,这种错误最容易使用户对软件失去信心。因为这意味着用户要中断思路,并费时费力地重新登录,而且已进行的操作也会因没有存盘而全部丢失。


    安全性细则:
    1)
    :最重要的是排除可能会使应用非正常中止的错误。
    2)
    :应当注意尽可能避免用户无意录入无效的数据。
    3)
    :采用相关控件限制用户输入值的种类。
    4)
    :当用户作出选择的可能性只有两个时,可以采用单选框。
    5)
    :当选择的可能再多一些时,可以采用复选框,每一种选择都是有效的,用户不可能输入任何一种无效的选择。

    6)
    :当选项特别多时,可以采用列表框,下拉式列表框。
    7)
    :在一个应用系统中,开发者应当避免用户作出未经授权或没有意义的操作。
    8)
    :对可能引起致命错误或系统出错的输入字符或动作要加限制或屏蔽。
    9):
    对可能发生严重后果的操作要有补救措施。通过补救措施用户可以回到原来的正确状态。
    10):
    对一些特殊符号的输入、与系统使用的符号相冲突的字符等进行判断并阻止用户输入该字符。
    11)
    :对错误操作最好支持可逆性处理,如取消系列操作。
    12):
    在输入有效性字符之前应该阻止用户进行只有输入之后才可进行的操作。
    13):
    对可能造成等待时间较长的操作应该提供取消功能。
    14)
    :特殊字符常有;;’”><,{、\|}]+=)-(_*&&^%$#@!
    ,.
    ?/还有空格。

    15)
    :与系统采用的保留字符冲突的要加以限制。
    16)
    :在读入用户所输入的信息时,根据需要选择是否去掉前后空格。
    17)
    :有些读入数据库的字段不支持中间有空格,但用户切实需要输入中间空格,这时要在程序中加以处理。

    10:
    多窗口的应用与系统资源:
    设计良好的软件不仅要有完备的功能,而且要尽可能的占用最底限度的资源。
    1)
    在多窗口系统中,有些界面要求必须保持在最顶层,避免用户在打开多个窗口时,不停的切换甚至最小化其他窗口来显示该窗口。

    2)
    :在主界面载入完毕后自动卸出内存,让出所占用的WINDOWS系统资源。
    3)
    :关闭所有窗体,系统退出后要释放所占的所有系统资源 ,除非是需要后台运行的系统。
    4)
    :尽量防止对系统的独占使用。

  • 完整的GUI测试点

    2008-12-10 09:45:29

    GUI测试(一)

    (转载资料) 

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

    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):
    专业性强的软件要使用相关的专业术语,通用性界面则提倡使用通用性词眼。

    2
    规范性:
    通常界面设计都按Windows界面的规范来设计,可以说:界面遵循规范化的程度越高,则易用性相应的就越好。小型软件一般不提供工具厢。

    规范性细则:

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


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

    帮助设施细则:
    1)
    :帮助文档中的性能介绍与说明要与系统性能配套一致。(我们的系统帮助文档都是系统的祖先时期的说明,让人困惑)
    2)
    :打包新系统时,对作了修改的地方在帮助文档中要做相应的修改。
    3)
    :操作时要提供及时调用系统帮助的功能。常用F1
    4)
    :在界面上调用帮助时应该能够及时定位到与该操作相对的帮助位置。也就是说帮助要有即时针对性。
    5)
    :最好提供目前流行的联机帮助格式或HTML帮助格式。
    6)
    :用户可以用关键词在帮助索引中搜索所要的帮助,当然也应该提供帮助主题词。
    7)
    :如果没有提供书面的帮助文档的话,最好有打印帮助的功能。
    8 )
    :在帮助中应该提供我们的技术支持方式,一旦用户难以自己解决可以方便的寻求新的帮助方式。

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

    合理性细则:
    1)
    :父窗体或主窗体的中心位置应该在对角线焦点附近。
    2)
    :子窗体位置应该在主窗体的左上角或正中。
    3)
    :多个子窗体弹出时应该依次向右下方偏移,以显示窗体出标题为宜。
    4)
    :重要的命令按钮与使用较频繁的按钮要放在界面上注目的位置。
    5)
    :错误使用容易引起界面退出或关闭的按钮不应该放在易点位置。横排开头或最后与竖排最后为易点位置。
    6)
    :与正在进行的操作无关的按钮应该加以屏蔽(Windows中用灰色显示,没法使用该按钮)
    7)
    :对可能造成数据无法恢复的操作必须提供确认信息,给用户放弃选择的机会。
    8)
    :非法的输入或操作应有足够的提示说明。
    9):
    对运行过程中出现问题而引起错误的地方要有提示,让用户明白错误出处,避免形成无限期的等待。
    10):
    提示、警告、或错误说明应该清楚、明了、恰当。

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

    美观与协调性细则:
    1):
    长宽接近黄金点比例,切忌长宽比例失调、或宽度超过长度。
    2):
    布局要合理,不宜过于密集,也不能过于空旷,合理的利用空间。
    3):
    按钮大小基本相近,忌用太长的名称,免得占用过多的界面位置。
    4):
    按钮的大小要与界面的大小和空间要协调。
    5):
    避免空旷的界面上放置很大的按钮。
    6)
    :放置完控件后界面不应有很大的空缺位置。
    7):
    字体的大小要与界面的大小比例协调, 通常使用的字体中宋体9-12较为美观,很少使用超过12号的字体。
    8):
    前景与背景色搭配合理协调,反差不宜太大,最好少用深色,如大红、大绿等。常用色考虑使用Windows界面色调。
    9):
    如果使用其他颜色,主色要柔和,具有亲和力与磁力,坚决杜绝刺目的颜色。
    10):
    大型系统常用的主色有"#E1E1E1""#EFEFEF""#C0C0C0"等。
    11):
    界面风格要保持一致,字的大小、颜色、字体要相同,除非是需要艺术处理或有特殊要求的地方。
    12):
    如果窗体支持最小化和最大化或放大时,窗体上的控件也要随着窗体而缩放;切忌只放大窗体而忽略控件的缩放。
    13)
    :对于含有按钮的界面一般不应该支持缩放,即右上角只有关闭功能。
    14):
    通常父窗体支持缩放时,子窗体没有必要缩放。
    15)
    :如果能给用户提供自定义界面风格则更好,由用户自己选择颜色、字体等。

  • DO NOT MAKE ME THINK

    2008-12-03 18:25:29

       一直是在做WEB测试,发现很多开发人员并没有对WEB网站的界面做很好的分析,最主要的是体现在易用性方面。没有站在用户的立场上去想问题,导致很多UI方面的问题,这些问题并不是逻辑功能方面的,而只是不符合用户习惯的。偶然间从我以前的资料中找到一份很好的文档,是关于网站易用性原则的,相信不管对于开发人员还是测试人员都是有很大帮助的,现在把它上传吧。
       郁闷,直到今天才找到方法怎么上传。个人觉得这篇PPT写得相当得好。相信你一定会获益良多的。

  • 什么是BUG? (转载)

    2008-12-02 17:59:54


    原文链接:http://www.javaeye.com/topic/241569  

    写给我的团队成员(一)—— 什么是BUG?

          什么是BUG?每个写过代码或者使用过软件的人似乎都知道它是什么。然而,我们的很多工作年限有限的开发人员总是简单认为:程序跑通了,自己测了N遍了就很少有BUG了。这是个危险的观念,没有理解深刻这一点的人会在自己的进步过中走很多弯路。更会给产品和团队带来各种大大小小的危机。

          对抗BUG是我们程序员永恒的主题,要在这场战斗中获胜,首先要做到“知己知彼”——什么是BUG?

          现在,我们来一起把BUG分为以下几个种类,你在Coding的时候要随时随地的想到这些:

    • 最最普通的BUG。 我实在缺乏用语言来给这类BUG下定义的能力,因此你现在能够识别,这就是BUG的东西,应该可以归属于这一类。
    • 编译不通过。 你可以认为这是最简单的BUG,根本不需要特别考虑,如果编译不过,Eclipse会在设计时给你个红XX 来提示的。但是,在下面的情况中,你可能看不到红XX,但BUG依然存在。

    1.spring的xml。缺省的eclipse可不会在design time时给任何检查。你写错一个字母,都会让你无法运行。跟业务逻辑相关的依赖关系,更别指望eclipse替你找出来。

    2.jsp中引用的java代码。不用我解释了吧,大家可能都有体验。至少我目前还没找到完全可靠的jsp plugin 可以帮助 eclipse来随时随地找出jsp中的代码错误。(除非你把上千个jsp文件都关闭并重新打开一遍)。

    • 业务逻辑实现错误。 这就不需要过多赘述了。地球人都知道。
    • 缺乏必要的事务。 在99.9%的“开发时”,事务不是必须的。在仅挨着的两条insert语句执行的瞬间,出现系统失效的可能性微乎其微。然而,一旦进入了生产环境,用“事务”来保持你要进行的这个action的完整性就显得非常重要了。当然,并不是所有的业务逻辑步骤都需要用事务来保护,况且让容器帮你你管理事务也是一种懒惰但有效的做法,但与此同时自己去考虑一下“这里如果没有事务,我是否安全?“的问题,对你的进步更有好处。
    • 团队使用的基本库出错。 不要认为团队自己开发的基本类库是100%正确的,轻信不完善的API的思想是大量顽固BUG的藏身之处。团队自己生产的代码还在不断的完善和发展,毕竟咱们积累的这些”精华“与外面OpenSource的东西(而他们同样有BUG)相比,还差懂得远呢。我丝毫不怀疑里面存在超过100个算法缺陷和200个不安全的使用方式。因此,不要”拿起来就用“,而要”三思而后行“。
    • 性能陷阱。 为了尽快实现业务逻辑。我们在第一次编码的时候往往不先考虑性能问题。这个想法不算太错误,但这个想法不能太过分。特别是涉及到一些”性能敏感”的代码段,比如我们产品中多处涉及到的Tcp Server的内核。这些部件的代码1天可能遭受几百万次的访问,瞬时绝对并发100是最正常的情况。因此0.1秒的性能损失,也会带来100x0.1=10秒的性能损耗。10秒,足以使一个TCP Server达到实际“不可用”的严重程度!10行马虎的代码,可能毁掉客户对我们团队辛苦生产的100万代码的信任。切记!切记!
    • 安全隐患。 某些安全隐患在我们刚开始写实验性的代码时往往可以忽略,但绝不能忘记。你必须在这个产品进入到下一阶段的时候加上必要的安全检查代码和与安全相关的逻辑验证代码。回忆一下,你是否忽略了下面的工作:

    1.http session检查。 尽管我们可以用框架来保证这一点。但你还是要检视一下,是否在某些功能的实现上,你确实忘记它了。

    2.参数类型校验。 当你把一个'a'传递到servlet用Internet.parse()来处理的时候,你是否考虑了可能出现的异常情况。等等此类。

    3.NullException。 特别注意,千万不要让NullException出现在jsp中,否则你很难在系统部署后排查错误。在你第一次编写jsp代码时,你就必须考虑你所使用的对象或者属性是否可能为Null。

    4.Anti-flood。 最容易被初级程序员忽略的要点之一。因为这个bug永远不会出现在你的eclipse开发运行环境里。也往往被功能测试组的人忽略。但一旦存在这个隐患,一个最菜的Hacker用最普通的teardrop也会让你tear drop。

    • 线程安全。 永远不要忘记,你的代码需要在一个多线程的环境中运行,随时随地都有可能出现并发的情况。你的产生的临时文件名是否用uuid来避免重名了?你的静态(或单态)变量是否线程安全。你是否忘记将spring里定义的bean设置为scope=prototype?
    • 忘记删除临时文件。 在上传文件、生成验证图片、生成缩略图的时候,你都可能用到临时文件。你是否在使用完毕后及时的删除了它?你是否考虑过在发生异常后,仍然安全的删除了这个文件?特别需要指出的是,我们在编码阶段的测试时,很难发现遗漏临时文件清理的工作。单在系统上线运行后,大量滞留在目录下的过期临时文件将用光客户的服务器磁盘空间,降低系统IO的性能。
    • 极不友好的UI操作。 极不友好的UI操作同样是严重的BUG。比如:

    1.当用户提交表单的时候可能填写了错误格式的信息,而你的程序再提示错误,重新显示表单的时候清除了用户已经填写的数据。这对你的软件的使用者来说是极其恼火的体验,对于创造这个代码的您来说则是一种耻辱。

    2.另一种“极不友好的UI操作“可能发生在这种情况——你必须跟测试人员解释——他体验到这次系统出错的原因是他(测试人员)操作的步骤或顺序不正确。天那,这是噩梦,不仅是用户的噩梦,也是你的噩梦。如果你坚持你的做法没错,我将决定在系统上线后,把你的手机和家里的电话号码做为HELP放在你创造的界面的显著位置呈现给使用它的80万用户

  • 如何测试TCP/IP协议

    2008-12-02 12:59:18

       因为今天中午休息的时间比较多,所以找了点小东西学习下,不敢独占,所以发出来看看

       安装网络硬件和网络协议之后,我们一般要进行TCP/IP协议的测试工作,那么怎样测试才算是比较全面的测试呢?我们认为,全面的测试应包括局域网和互联网两个方面,因此应从局域网和互联网两个方面测试,以下是我们在实际工作中利用命令行测试TCP/IP配置的步骤:
      1、 单击“开始”/“运行”,输入CMD按回车,打开命令提示符窗口。

      2、 首先检查IP地址、子网掩码、默认网关、DNS服务器地址是否正确,输入命令ipconfig /all,按回车。此时显示了你的网络配置,观查是否正确。

      3、 输入ping 127.0.0.1,观查网卡是否能转发数据,如果出现“Request timed out”,表明配置差错或网络有问题。

      4、 Ping一个互联网地址,如ping 202.102.128.68,看是否有数据包传回,以验证与互联网的连接性。

      5、 Ping 一个局域网地址,观查与它的连通性。

      6、 用nslookup测试DNS解析是否正确,输入如nslookup www.163.com,查看是否能解析。

      如果你的计算机通过了全部测试,则说明网络正常,否则网络可能有不同程度的问题。在此不展开详述。不过,要注意,在使用 ping命令时,有些公司会在其主机设置丢弃ICMP数据包,造成你的ping命令无法正常返回数据包,不防换个网站试试。

    ping命令详解

    ping [-n count][-l size][-w timeout]

    -n 发送的ICMP数据包数,默认是4个

    -l 发送的ICMP数据包大小,一般是56K+8K=64K

    -w 超时时间

    另外因为经常被问到帧和IP数据包是怎么回事,所以也找了找这方面的资料。

    数据格式:
    数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC地址及类型,帧尾是校验字)
    IP数据包:IP头部+TCP数据信息 (IP头包括源和目标主机IP地址、类型、生存期等)
    TCP数据信息:TCP头部+实际数据 (TCP头包括源和目标主机端口号、顺序号、确认号、校
    验字等)

  • 开通日志了!

    2008-11-28 18:17:11

      以前见到有人说BLOG,觉得很稀奇,以为是个很上流的东西,后来又听说什么日志,也觉得挺陌生的。但是自从在QQ上也写一些日志之类的东西,就觉得日志其实也挺普通的,不就是把自己写的一些东西发布到网上与别人一起分享嘛,但是还是没想到写BLOG之类的,今天偶尔在论坛上逛了下,发觉自己竟然也可以建立自己的BLOG,于是就想来试下,初次接触,不是很懂,在个人空间那边鼓捣了好久才看到51Testing的“软件测试博客”这个大菜单,然后点进来才顺理成章地开始了我的第一篇日志。

     

  • 测试有感

    2008-11-28 18:00:30

302/2<12
Open Toolbar