qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

测试用例编写规范

以前在这里看到一篇文章说,要积累各个常用模块的测试点,然后到需要测试的时候就根据这些测试点设计测试用例,我觉得这是一个好方法,就决定总结一下。我的实际经验不多,根据我在论坛中学到的零散的东西和自己的想象,总结出以下几点,欢迎各位继续补充。

  1、登陆
  2、添加
  3、查询
  4、删除

  1、登陆
  ① 用户名和密码都符合要求(格式上的要求)
  ② 用户名和密码都不符合要求(格式上的要求)
  ③ 用户名符合要求,密码不符合要求(格式上的要求)
  ④ 密码符合要求,用户名不符合要求(格式上的要求)
  ⑤ 用户名或密码为空
  ⑥ 数据库中不存在的用户名,不存在的密码
  ⑦ 数据库中存在的用户名,错误的密码
  ⑧ 数据库中不存在的用户名,存在的密码
  ⑨ 输入的数据前存在空格
  ⑩ 输入正确的用户名密码以后按[enter]是否能登陆

  2、添加
  ① 要添加的数据项均合理,检查数据库中是否添加了相应的数据
  ② 留出一个必填数据为空
  ③ 按照边界值等价类设计测试用例的原则设计其他输入项的测试用例
  ④ 不符合要求的地方要有错误提示
  ⑤ 是否支持table键
  ⑥ 按enter是否能保存
  ⑦ 若提示不能保存,也要察看数据库里是否多了一条数据

  3、删除
  ① 删除一个数据库中存在的数据,然后查看数据库中是否删除
  ② 删除一个数据库中并不存在的数据,看书否有错误提示,并且数据库中没有数据被删除
  ③ 输入一个格式错误的数据,看是否有错误提示,并且数据库中没有数据被删除。
  ④ 输入的正确数据前加空格,看是否能正确删除数据
  ⑤ 什么也不输入
  ⑥ 是否指出table键
  ⑦ 是否支持enter键

  4、查询
  精确查询:
  ① 输入的查询条件为数据库中存在的数据,看是否能正确地查出相应得数据
  ② 输入正确的查询条件以前加上空格,看是否能正确地查出相应的数据
  ③ 输入格式或范围不符合要求的数据,看是否有错误提示
  ④ 输入数据库中不存在的数据
  ⑤ 不输入任何数据
  ⑥ 是否支持table键
  ⑦ 是否支持enter键
  模糊查询:
  在精确查询的基础上加上以下一点
  ① 输入一些字符,看是否能查出数据库中所有的相关信息

  设计功能和界面测试用例

  1.1 文本框、按钮等控件测试

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

在测试过程中所用到的测试方法:
  1,输入非法数据;
  2,输入默认值;
  3,输入特殊字符集;
  4,输入使缓冲区溢出的数据;
  5,输入相同的文件名;

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

  单选按钮控件的测试
  测试方法:
  a,一组单选按钮不能同时选中,只能选中一个。
  b,逐一执行每个单选按钮的功能。分别选择了“男”“女”后,保存到数据库的数据应该相应的分别为“男”“女”;
  c,一组执行同一功能的单选按钮在初始状态时必须有一个被默认选中,不能同时为空;

  控件文本框的测试
  测试方法:
  a,直接输入数字或用上下箭头控制,如,在“数目”中直接输入10,或者单击向上的箭头,使数目变为10;
  b,利用上下箭头控制数字的自动循环,如,当最多数字为253时,单击向上箭头,数目自动变为1;反之亦适用;
  c,直接输入超边界值,系统应该提示重新输入;
  d,输入默认值,空白。如,“插入”数目为默认值,点击“确定”;或,删除默认值,使内容为空,单击“确定”进行测试;
  e,输入字符。此时系统应提示输入有误。

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

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

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

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

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

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

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

  查找替换操作

 测试本功能有通过测试和失败测试两种情况

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

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

  替换测试大体相同。

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

  插入操作

  1,插入文件
  测试的情况
  a,插入文件;
  b,插入图像;
  c,在文档中插入文档本身;
  d,移除插入的源文件;
  e,更换插入的源文件的内容;

  2,链接文件
  测试方法:
  a,插入链接文件;
  b,在文档中链接文档本身;
  c,移除插入的源文件;
  d,更换插入的源文件的内容。

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

  编辑操作

  编辑操作包括剪切,复制,粘贴操作。

  测试剪切操作的方法
  a,对文本,文本框,图文框进行剪切;
  b,剪切图像
  c,文本图像混合剪切

  复制操作方法与剪切类似。

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

界面测试用例的设计方法

  1,窗体
  测试窗体的方法:
  a,窗体大小,大小要合适,控件布局合理;
  b,移动窗体.快速或慢速移动窗体,背景及窗体本身刷新必须正确;
  c,缩放窗体,窗体上的控件应随窗体的大小变化而变化;
  d,显示分辨率.必须在不同的分辨率的情况下测试程序的显示是否正常;

  进行测试时还要注意状态栏是否显示正确;工具栏的图标执行操作是否有效,是否与菜单懒中图标显示一致;错误信息内容是否正确,无错别字,且明确等等;

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

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

  特殊属性
  1,安装界面应有公司介绍或产品介绍,有公司的图标
  2,主界面及大多数界面最好有公司图标
  3,选择"帮助"->"关于"命令,应 看见相关版权和产品信息

  实际中经常用到的几个用例

  login
  1、链接地址是否正确。
  2、产生输入/输出错误时,系统是否进行检测并处理.
  3、密码输入框是否按掩码的方式显示。

menu:
  1、各模块链接地址是否正确。
  2、鼠标无规则点击时是否会产生无法预料的结果。

  browse:
  1、浏览信息是否存在文字书写错误和语法错误。
  2、浏览信息是否和数据库中对应的字段及信息相一致。
  3、浏览页面中的链接按钮是否可以正确链接并显示。
  4、其他功能按钮按下后,数据是否按既定规约处理。

  add,modify:
  1、产生输入/输出错误时,系统是否进行检测并处理。
  2、列表框是否能够进行选择。
  3、单选组内是否有且只有一个单选钮可选。
  4、多选组内是否能够进行多数据项选择。
  5、多项列表框是否能够进行多数据项选择。
  6、控件是否存在默认输入值,若存在,默认值是否得到显示和提交。
  7、Cancel之类的按钮按下后,控件中的数据是否清空复原或按既定规约处理。
  8、Submit之类的按钮按下后,数据是否得到提交或按既定规约处理。
  9、其他页面按钮按下后,数据是否按既定规约处理。
  10、异常信息表述是否正确。

  search:
  1、输入信息中是否存在和代码中的字符产生冲突的字符,系统是否进行检测并处理。
  2、异常信息表述是否正确。
  3、查询的结果是否正确。
  4、列表框是否能够进行选择。
  5、单选组内是否有且只有一个单选钮可选。
  6、多选组内是否能够进行多数据项选择。
  7、多项列表框是否能够进行多数据项选择。
  8、Submit之类的按钮按下后,数据是否得到提交或按既定规约处理。

  Statistic:
  1、产生的文件和数据表的计算结果是否正确。
  2、图表结果数据显示是否正确。
  3、浏览页面中的链接按钮是否可以正确链接并显示。
  4、其他功能按钮按下后,数据是否按既定规约处理。
  5、产生输入/输出错误时,系统是否进行检测并处理。
  6、列表框是否能够进行选择。
  7、单选组内是否有且只有一个单选钮可选。
  8、多选组内是否能够进行多数据项选择。
  9、多项列表框是否能够进行多数据项选择。


posted @ 2011-10-21 15:37 顺其自然EVO| 编辑 收藏

谈测试用例的评审

 从网上搜索测试用例的评审,也能搜出好多,我这里把自己能想到的或是借鉴于他人的都在这里进行总结和归纳。

  测试用例的设计很重要,无论你采用的是敏捷测试还是传统的开发模式,测试用例都应该要文档化,并且根据项目的schedule,把握好粒度。而QA lead要根据项目的实际情况,先定好模板,制定好测试用例的编写规范。测试用例设计出来,质量如何?这就需要对测试用例进行评审,这个过程非常重要,对测试人员的能力提高,测试效率的提高都有很好的作用。如果公司流程没有这个硬性要求,项目再忙,也要抽出一定时间,召集相关人员开个哪怕是非正式的评审会议,大家一起讨论用例并给出意见和建议,及时发现问题,并完善测试用例的设计。

  何时进行用例的评审,一般情况下是在用例的初步设计完成之后进行评审,如果需要或时间允许,在整个详细用例全部完成之后还会进行二次评审,三次评审等。

  大体分文三个级别的评审:

  a)部门评审,测试部门全体员工参与的评审。

  b)公司评审,这里包括了项目经理,需求分析人员,架构设计人员,开发人员和测试人员。

  c)客户评审,包括了客户方的开发人员和测试人员。

  测试用例的评审检查单(Checklist for Test cases):

  1)Has the correct template been used?(是否使用了正确的模板?)

  2)Have all the scenarios specified in the requirement –explicit, implicit, nonfunctional and  been converted into test conditions?(是否覆盖了需求规格说明,包括内在需求和外在和非功能需求?)

  3)Have the related areas that include possibly be affected by the implementation of the requirement been identified and included in the test cases?(case是否对需求变更的部分进行对应的调整和增加?)

  4)Have the following details been filled up correctly? Requirement references, test procedure, expected result, priority, author’s name, date created…(测试用例是否正确填写了测试对应的需求,测试步骤,预期结果,优先级,作者姓名,创建日期等..)

  5)Has the test date set, if required been generated appropriate? (测试用例是否包含测试数据,测试数据的生成是否正确?)

  6)Have the required negative scenario between identified in the test conditions? (是否包含了负面测试用例?)

  7)Have the testing techniques—equivalence partitioning, boundary value analysis be used? (是否使用了等价类划分和边界值分析的测试方法?)

  8)Have the steps been correctly given in appropriate sequence for each test scenario? (测试步骤是否被阐述清楚?)

  9)Have the expected result been identified correctly? (预期结果是否表达正确?)

   ● Expected results should respond to the user actions given in each step/action.(每个步骤都应给出相应的测试结果)

   ● Ensure that too many things are not included to be verified under one expected output.(给出一个预期结果的验证步骤不要太多)

   ● Ensure that separate cases are written for multiple verifications of the application’s behavior. (每条case最好验证一个问题)

   ● Vague statements like “Appropriate message/value/screen” etc. should not be part of expected result. Every detail should be clearly spelt out. (预期结果中不要使用模糊的语言)


posted @ 2011-10-21 15:16 顺其自然EVO| 编辑 收藏

测试用例设计规范

 1、引言

  测试设计遵循与软件设计相同的工程原则。好的软件设计包含几个对测试设计进行精心描述的阶段。这些阶段是:

  ● 测试策略

  ● 测试计划

  ● 测试描述

  ● 测试过程

  上述四个测试设计阶段适用于从单元测试系统测试各个层面的测试。

  测试设计由软件设计说明所驱动。单元测试用于验证模块单元实现了模块设计中定义的规格。一个完整的单元测试说明应该包含正面测试(Positive Testing)和负面的测试(Negative Testing)。正面测试验证程序应该执行的工作,负面测试验证程序不应该执行的工作。

  设计富有创造性的测试用例是测试设计的关键。本文档介绍了测试说明的一般设计过程,描述了一些结构化程序设计单元测试中采用的用例设计技术,同时也增加了面向对象编程中对类进行单元测试所采用的测试用例设计技术,这些可作为软件测试人员的参考阅读资料。

  2、设计单元测试说明

  一旦模块单元设计完毕,下一个开发阶段就是设计单元测试。值得注意的是,如果在书写代码之前设计测试,测试设计就会显得更加灵活。一旦代码完成,对软件的测试可能会倾向于测试该段代码在做什么(这根本不是真正的测试),而不是测试其应该做什么。单元测试说明实际上由一系列单元测试用例组成,每个测试用例应该包含4 个关键元素:

  被测单元模块初始状态声明,即测试用例的开始状态(仅适用于被测单元维持了调用间状态的情况);

  被测单元的输入,包含由被测单元读入的任何外部数据值;

  该测试用例实际测试的代码,用被测单元的功能和测试用例设计中使用的分析来说明,如:单元中哪一个决策条件被测试;

  测试用例的期望输出结果,测试用例的期望输出结果总是应该在测试进行之前在测试说明中定义。

  以下描述进行测试用例设计,书写测试说明的7步通用过程。

  2.1 测试用例设计步骤

  2.1.1 步骤1:首先使被测单元运行

  任何单元测试说明的第一个测试用例应该是以一种可能的简单方法执行被测单元。看到被测单元第一个测试用例的运行成功可以增强人的自信心。如果不能正确执行,最好选择一个尽可能简单的输入对被测单元进行测试/调试。

  这个阶段适合的技术有:

  ● 模块设计导出的测试

  ● 对等区间划分

  2.1.2 步骤2:正面测试(Positive Testing)

  正面测试的测试用例用于验证被测单元能够执行应该完成的工作。测试设计者应该查阅相关的设计说明;每个测试用例应该测试模块设计说明中一项或多项陈述。如果涉及多个设计说明,最好使测试用例的序列对应一个模块单元的主设计说明。

  适合的技术:

  ● 设计说明导出的测试

  ● 对等区间划分

  ● 状态转换测试

2.1.3 步骤3:负面测试(Negative Testing)

  负面测试用于验证软件不执行其不应该完成的工作。这一步骤主要依赖于错误猜测,需要依靠测试设计者的经验判断可能出现问题的位置。

  适合的技术有:

  ● 错误猜测

  ● 边界值分析

  ● 内部边界值测试

  ● 状态转换测试

  2.1.4 步骤4:设计需求中其它测试特性用例设计

  如果需要,应该针对性能、余量、安全需要、保密需求等设计测试用例。

  在有安全保密需求的情况下,重视安全保密分析和验证是方便的。针对安全保密问题的测试用例应该在测试说明中进行标注。同时应该加入更多的测试用例测试所有的保密和安全冒险问题。

  适合的技术:设计说明导出的测试

  2.1.5 步骤5:覆盖率测试用例设计

  应该或已有测试用例所达到的代码覆盖率。应该增加更多的测试用例到单元测试说明中以达到特定测试的覆盖率目标。一旦覆盖测试设计好,就可以构造测试过程和执行测试。覆盖率测试一般要求语句覆盖率和判断覆盖率。

  适合的技术:

  ● 分支测试

  ● 条件测试

  ● 数据定义-使用测试

  ● 状态转换测试

  2.1.6 步骤6:测试执行

  使用上述5个步骤设计的测试说明在大多少情况下可以实现一个比较完整的单元测试。

  到这一步,就可以使用测试说明构造实际的测试过程和用于执行测试的测试过程。该测试过程可能是特定测试工具的一个测试脚本。

  测试过程的执行可以查出模块单元的错误,然后进行修复和重新测试。在测试过程中的动态分析可以产生代码覆盖率测量值,以指示覆盖目标已经达到。因此需要在测试设计说明中需要增加一个完善代码覆盖率的步骤。

  2.1.7 步骤7:完善代码覆盖

  由于模块单元的设计文档规范不一,测试设计中可能引入人为的错误,测试执行后,复杂的决策条件、循环和分支的覆盖率目标可能并没有达到,这时需要进行分析找出原因,导致一些重要执行路径没有被覆盖的可能原因有:

  不可行路径或条件——应该标注测试说明证明该路径或条件没有测试的原因。

不可到达或冗余代码——正确处理方法是删除这种代码。这种分析容易出错,特别是使用防卫式程序设计技术(Defensive Programming Techniques)时,如有疑义,这些防卫性程序代码就不要删除。

  测试用例不足——应该重新提炼测试用例,设计更多的测试用例添加到测试说明中以覆盖没有执行过的路径

  理想情况下,覆盖完善阶段应该在不阅读实际代码的情况下进行。然而,实际上,为达到覆盖率目标,看一下实际代码也是需要的。覆盖完善步骤的重要程度相对小一些。最有效的测试来自于分析和说明,而不是来自于试验,依赖覆盖完善步骤补充一份不好的测试设计。

  适合的技术:

  ● 分支测试

  ● 条件测试

  ● 设计定义——试验测试

  ● 状态转换测试

  2.2 用例设计的一般原则

  注意到前面产生测试说明步骤可以用下面的方法完成:

  通常应该避免依赖先前测试用例的输出,测试用例的执行序列早期发现的错误可能导致其他的错误而减少测试执行时实际测试的代码量;

  测试用例设计过程中,包括作为试验执行这些测试用例时,常常可以在软件构建前就发现BUG。还有可能在测试设计阶段比测试执行阶段发现更多的BUG。

  在整个单元测试设计中,主要的输入应该是被测单元的设计文档。在某些情况下,

  需要将试验实际代码作为测试设计过程的输入,测试设计者必须意识到不是在测试代码本身。从代码构建出来的测试说明只能证明代码执行代码完成的工作,而不是代码应该完成的工作。

  3、测试用例设计技术

  广义地分为两类:

  黑盒测试:使用单元接口和功能描述,不需了解被测单元的内部结构

  白盒测试:使用被测单元内部如何工作的信息

  灰盒测试:借助于源代码和测试工具等手段,通过黑盒和白盒测试相结合的方法进行测试的技术。

  测试设计最重要的因素是经验和常识。测试设计者不应该让某种测试技术阻碍经验和常识的运用。

  白盒测试用例设计:使用程序设计的控制结构导出测试用例。

  采用白盒测试的目的主要是:保证一个模块中的所有独立路径至少被执行一次;对所有的逻辑值均需要测试真、假两个分支;在上下边界及可操作范围内运行所有循环;检查内部数据结构以确保其有效性。

  黑盒测试用例设计:使用详细设计导出测试用例。

  采用黑盒测试的目的主要是:检查功能是否实现或遗漏;检查人机界户是否错误;数据结构或外部数据库访问错误;性能等其它特性要求是否满足;初始化盒终止错误。

posted @ 2011-10-21 14:50 顺其自然EVO| 编辑 收藏

以测试用例为核心的软件测

 目前国内出版的软件测试方面的书,深入讲解编写软件测试用例方法的很少,而且大多数方法都是很理论的描述。另外,最大的问题是把测试用例的确定输入数据的方法说成是测试用例的设计方法。

  例如,关于测试用例设计方法,最常用的说法是:等价类,边界值,因果图等。实际上这些只是软件测试用例设计中如何确定测试输入数据,对于对话框中的数据控件输入值有效。如果把确定输入数据的方法,描述成测试用例的方法,那么,这样设计出来的测使用例就很有局限性。

  实际上,编写测试用例包括两个方面:第一是编写测试用例输入数据,第二是编写测试用例实体(即包含测试目标,测试步骤,测试期望结果)。

  为此,有必要把编写测试用例的工作分解成两个阶段:第一阶段称为“测试用例设计”,第二阶段称为“测试用例实现”。第一阶段的任务是如何确定测试用例的组织结构(模块化、阶段化),模块化即把被测软件分解成各个模块,每个模块组织成测试用例组。阶段化即按照软件开发的不同阶段分别编写软件测试用例,例如单元测试用例、系统测试用例、验收测试用例等。

  编写软件测试用例的过程如图所示。

posted @ 2011-10-21 14:35 顺其自然EVO| 编辑 收藏

优秀测试策略与测试用例的重要意义

如下观点,只代表我个人观点,如有偏差,还望各位同行提出相应观点和意见。

  如果网友看过我以前写过的文章,就能理解我如是如何理解定义测试的。

  谁是测试团队中的核心技术人员

  我个人认为对于公司测试团队中最重要的人是设计优秀测试策略和设计优秀ROI(ROI:投入产出比)测试方案的测试工程师,当然自动化测试脚本开发工程师和测试工具开发者对于测试部也是非常重要和不可或缺的。

  为什么我认为测试部最重要的人是测试策略和测试用例的设计者?

  首先从相关人才的来源来分析:

  自动化测试开发工程师:可以由只毕业3-4个月或才进入项目1-2个月的工程师就能从事。测试工具开发:甚至不需要对测试了解多少也能从事。而设计测试策略和好的测试方案设计者则需要至少2-3年的相关业务黑盒测试经验的工程师,才有可能做好。

  其次从相关人才发挥的作用分析:

  测试策略的制定就好似公司的市场部要制定大的市场战略。例如:这个测试方案的定位是什么?这轮测试的目的是什么?有多少资源可以进行测试?应集中资源先对哪些重要又紧急的功能进行测试?如何区分重要或紧急的功能?如何安排紧急而不重要的功能与重要而不紧急功能的测试顺序?等等......

  测试方案的设计:就好似公司的销售部针对每个具体的客户制定具体的销售计划和销售方案。例如:对于这个case我们的目标期望是什么?如何达到这个目标?是否还有更好的方法来达到这个目标?如何利用现有的有限资源取得最大化的结果?这个case的ROI是否高效?而测试工具的开发和自动化测试脚本的开发则类似于公司中的研发部,提供必须的高效武器与公司市场部,销售部一起攻城拔寨。

  如何成为一个合格优秀的测试策略的设计者呢。我的观点是:

  1:一切测试策略的目的是什么?是为了满足公司市场销售策略。因此我们应该设法保证测试策略既能按期完成研发计划,又能不影响销售的产品质量。

  2:将有限的资源先用到紧急又重要的测试任务中,再评估其他任务的优先级。但一定要以市场销售计划为依据。一个脱离市场销售的测试策略是一个误国误民的策略。

  3:测试策略不是测试计划。我的看法是:以市场销售计划为依据,先制定测试策略,再按任务的优先级和资源情况来制定测试计划。现在常有不少朋友误认为测试计划就是测试策略,测试策略就是schedule

 

时间表;计划表;一览表

,这种观点我个人并不认同。

 
 4:测试策略不是一个人设计出来的。它一定是先听取了市场人员的意见和要求,再结合研发的要求得出的一个平衡取舍的产物。

  5:好的测试策略设计者是一个以公司利益为第一位,而不只局限在测试部门利益的员工。办公事政治玩多了,设计的测试策略有可能就是一个对公司利益有害的策略。

  6:一定要最大化的接近客户的真实应用来定义重要的模块功能,而不简单依据模块的复杂度来定义。

  7:能知己知彼。对自己的测试资源有多少,要有准确清晰的认识才能知道量体裁衣。而不要打肿脸撑胖子,最后实施时,却完成不了测试策略。

  接下来,如何成为一个合格优秀的测试用例设计者。我的观点是:

  好的测试用例至少要满足如下要求:(这里只讨论功能测试用例的要求)

  1:粒度一定要细,对功能需求中的每个小点,每个数据都要覆盖到。并尽量多的想到更多的测试方法来对被测试项进行拷打。

  2:测试方法不能过度测试。大家容易想到测试不充分对公司有害,但往往会忘记过度测试对公司也是有害的,这点在我的测试经历中感受非常深刻。例如:因为你的过度测试,浪费了你的有效测试时间,这个时间原本是可以拿来发现更多真正有意义对销售有影响的bug。因为你的过度测试发现的bug,开发人员有时必须为这些意义不大的bug花时间来修改,浪费了修改其他更有意义bug的时间,影响了项目的进度,影响了产品的销售计划。说不定公司甚至因为你的几个过度测试,延迟了1个月推出产品,导致公司在这1个月中损失1亿的订单。而这些都是真正有可能发生的。所以,要避免在不漏测的前提,走向另一个极端-过度测试。

  3:你的测试用例是否容易转化为自动化测试。如果你在进行测试用例设计时,根本没有把将来进行自动化测试的开发做为一个考虑因素。那么,你的测试用例永远只能用手工进行回归测试,将大大浪费公司的资源并影响产品发布时间。如果回归测试的手工执行是你自己来做的话,那么以后你的苦日子可就长了。

  4:测试用例应该考虑执行时资源和时间的安排。例如:千万不要出现有的test case执行完一遍只需要1小时,有的test case执行完一遍却需要20个小时。为了便于测试管理和计划安排,应设法让测试用例未来执行的时间保持在一个参考值左右。假设一个标准test case的执行时间为4小时,那么设计的test case应尽量保持在3-5小时内。这样非常容易量化并管理测试用例执行者的工作,更有利于测试计划的安排,测试策略的制定,研发计划的按时执行。

  5:理想状态下,最好你的测试用例也要有好的易读性。例如:test case的执行者拿到你的case后能在半小时或1个小时左右就能读懂并执行。否则,如果执行者还需要4-5个小时才能读懂或不能完全读懂你的测试方法和测试步骤。那公司将会为这样的测试用例付出非常大的成本代价,甚至会影响测试计划的执行和产品的研发计划。

  总结:对于部分迷茫的测试工程师,如果你希望在测试领域发展而不是在代码开发领域发展,就不要误认为只有代码才是高手,只有代码才是好的测试工程师。要做一个对公司有最大价值的测试工程师,就应该尽量往成为一个好的测试策略设计者和测试用例设计者成长和发展,但这一切工作又很依赖一个很基础的因素——工作的责任心,只有把公司的大局发展放入自己的心中,才能真正做好工作的取舍,设计出有价值的测试策略和测试用例。

posted @ 2011-10-19 21:46 顺其自然EVO| 编辑 收藏

Generic Codes(求高手解释!!)

Generic Codes

Most manufacturers have specific codes assigned to them; however, generic codes are to be used in some instances. Ensure that if a generic code is used, whether for make, model, etc. that a more specific code is not available.  If a specific code is available the entry should be updated to reflect this. The year of manufacture can make a difference in the code to be used; e.g., there are three or four different codes assigned to Jeep depending on the model year.  All Terrain Vehicles must be entered using the related motorcycle make code.  If the manufacturer of the ATV does not manufacture motorcycles and no Make code is assigned it must be entered with the generic code of "ATV". You must then specify the manufacturer of the vehicle in the Remarks field. 

读了一遍 貌似是说他只是一个例子,其他表可以参照他的结构进行设计 ,求高手解释 !!!!!!!!

posted @ 2011-10-19 09:50 顺其自然EVO 阅读(189) | 评论 (0)编辑 收藏

win7下jdk tomcat安装环境变量配置

新本本,新系统,还是得把武器给装配好。

下面图文记录win7系统下的jdk的安装和配置。

1、下载jdk 
地址:http://java.sun.com/javase/downloads/index.jsp 
image 

作为开发者,下载JDK,点击image ;

选择windows平台,点击下载image ,需要登录一下,就可以下载了。(没有用户名的,注册下就行,免费的,而且以后经常用得到)。 
image

image

2、安装JDK 
安装很简单了,和安装其他软件没啥区别,路径如果不需要自己特殊设置的话,就可以一路默认。需要知道安装的路径,配置的时候是需要用到的,安装后 
image
我这的安装路径是E:/Java/jdk1.6.0_20

3、环境变量的设置 
win7界面相比xp做了一点小的修改,不过不影响操作 
这里需要设置JAVA_HOME、CLASSPATH、Path三个环境变量。

a)、右击“计算机”,点击“属性” 
image 
点击弹出界面的左部分的“高级系统设置”

image  
选择“高级”选项卡,点击下部的“环境变量” 
 image 
在“系统变量”中,设置3属性JAVA_HOME、CLASSPATH、Path(不区分大小写),若已存在则点击“编辑”,不存在则点击“新建”;

b)、JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径E:/Java/jdk1.6.0_20,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要依*此变量);

c)、Path使得系统可以在任何路径下识别java命令,这里,要注意下,path应该是本来就存在的,就不要新建了,找到path,点击“编辑”;在值的最前面加上下面的语句即可。如果覆盖了path变量,将导致的cmd下有些基本的命令会找不到。 
%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin; 
image

d)、CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为: 
.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar (要加.表示当前路径) 
%JAVA_HOME%就是引用前面指定的JAVA_HOME;

4、检验安装配置是否正确

点击“开始”,键入“cmd”;

image 
image,enter

image

运行“java -version”、“java”、“javac”三个命令,看输出是否类似上图。。出现画面,安装配置ok了。

下面就可以开始java之旅。

学习交流>^<欢迎拍砖

Win7下配置Tomcat

Tomcat=C:\tomcat

查看更多精彩图片
配置好之后,进入Tomcat文件夹,双击C:\tomcat\bin\startup.bat,运行Tomcat,然后,打开IE,键入:http://127.0.0.1:8080/

如果出现:

查看更多精彩图片

则此时,Win7下配置Tomcat配置成功。

posted @ 2011-10-18 21:28 顺其自然EVO| 编辑 收藏

测试用例级别总结

  看了几篇关于用例级别如何设定的文章, 总结总结吧。

  根据二八原则或者称数据统计,前20%的用例可以发现80%的重要BUG。

  当设计测试用例时,分配优先级非常不容易,且这个优先级也不是固定不变的。

  一般,我们会假设发现的bug的严重程度和bug对应的测试用例的优先级是平行的。

  1、最高(又称Build Verification tests)也叫冒烟测试用例,一组你运行以确定这个build版本是否可测的测试用例。

  2、高:这种用例运行,能发现重要的错误,或者它能够保证软件的功能是稳定的。俗称大的基本功能的测试用例

  3、中:检查功能的一些细节,包括边界,配置测试

  4、低:较少执行的测试用例,并不代表它不重要,而是说不是经常被运行。例如压力测试错误信息等。

  用例级别设置的流程:

  1、如果没有很多的时间来确定优先级,那么可以先大致的进行划分:

  把所有功能性验证的用例标注为高

  把边界值或错误能力的用例标注为中

  把非功能性和易用性的标注为低

  2、提升和降级

  针对1描述的所有高级别的功能性用例划分为重要和不十分重要两种,然后重要的保持高,不十分重要的降级为中。同理,对应中级别的用例,重要的进行升级,不十分重要的保持中。对应低级别的,重要的升级,不十分重要的保持。

  3、确定BVTs

BVT (Build Verification Test)

 BVT是在所有开发工程师都已经检入自己的代码,项目组编译生成当天的版本之后进行,主要目的是验证最新生成的软件版本在功能上是否完整,主要的软件特 性是否正确。如无大的问题,就可以进行相应的功能测试。BVT优点是时间短,验证了软件的基本功能。缺点是该种测试的覆盖率很低。因为运行时间短,不可能 把所有的情况都测试到。

  将高优先级的用例划分为严重和重要, 严重的将升级为bvts

  经过这个流程后,大致会控制bvt10% 高为25% 中55% 低10%

  具体还要结合具体的项目和质量目标确定。

倘若从文档的角度,用例的级别首先要继承需求点的优先级级别,整理的测试需求进行优先级定义,然后对需求对应的测试用例进行优先级定义;

  因为在根据客户需求和产品需求说明书提取测试需求时,在所有的需求中,有客户急需使用的部分,有客户频繁使用的部分,有系统绝对不能出现错误的部分,这些都是高级别的需求点。

  所以要考虑四点:

  1、测试需求的级别

  2、测试用例导致的错误的级别

  3、测试用例对应的场景使用的概率(频率)

  4、测试用例发现问题的概率

  所以在实际测试中,若用例发现的bug频率很高,我们就应该适当地调节它的级别。

  又比如一个定义级别很高的用例,发现在实际测试中出现错误的触发条件是否罕见,所以就适当降低,或者客户需求产生了变化,对某个需求要求很低了,所以也适当降低。

  因此,

  1、建议将涉及到业务流程的用例,整理到一个专区,定义为P4

  2、每一个需求的主测试用例定义为P4

  3、每一个需求的辅助测试用例定义为P4或P3

  4、级别为高的需求点的完善性测试用例,建议性 易用性等,定义为P3 P2

  5、级别非高的需求点的主测试用例为P3 或P2

  6、级别非高的需求点的辅助用例完善用例 建议用例易用性用例为P2 P1

posted @ 2011-10-17 14:16 顺其自然EVO| 编辑 收藏

BVT测试介绍:

BVT测试介绍:

  BVT测试也称为"冒烟测试". 版本验证测试 (BVT) 通常由一组广泛的测试组成,这些测试用于验证特定版本的总体质量。BVT 通常根据设定的计划自动运行,经常在夜间进行。也可以手动运行,例如自动运行失败后。如果 BVT 中的所有测试均已通过,则认为该版本成功。就是拿到一个软件,首先不急于完全测试,而是在很短的时候内把软件的基本功能走一遍,看有没有什么大的问题,如 果存在大的问题,就没有必要再进一步测试了。可以节约时间,提高测试效率。冒烟测试,也有称作烟雾测试(smoke Test):一种用于验证系统基本功能的实现并达到一定程度的稳定性的测试。这种测试经常用作进入下一个等级的测试的入口准则的一部分。关于冒烟测试,应该是微软首 先提出来的一个概念,和微软一直提倡的每日build有很密切的联系。具体说冒烟测试就是在每日build建立后对系统的基本功能进行简单的测试,这种测 试强调功能的覆盖率,而不对功能的正确性进行验证。从这一点看和所谓的“接受性(验收)测试(Acceptance Test)”非常相似。不同之处就在于他们执行的频率和被测的版本不同。至于冒烟测试这个名称的来历,大概是从电路板测试得来的。因为当电路板做好以后, 首先会加电测试,如果板子没有冒烟在进行其它测 试,否则就必须重新来过。类似的如果冒烟测试没有通过,那么这个build也会返回给开发队伍进行修正,测试人员测试的版本必须首先通过冒烟测试的考验。 冒烟测试应该是对整个系统流程从输入到输出的完整测试。测试不必是面面俱到的,但是应该能够发现系统中较大的问题。冒烟测试应该是足够充分的,通过了冒烟 测试的build就可以认为是经过充分测试、足够稳定的。不进行冒烟测试的build是没有太大价值的。冒烟测试就像一个哨兵,在阻止着产品质量恶化和集 成问题的产生,不进行冒烟测试,每日构造可能会变成浪费时间的练习。冒烟测试必须随着系统的扩充而扩充。最初,冒烟测试可能是非常简单的,比如验证系统是 否会打印“Hello World”,随着系统功能的扩充,冒烟测试需要越来越充分。最初的冒烟测试也许只需要几秒钟来执行,逐渐地,测试可能会花费30分钟,1小时,甚至更 长。

  BVT测试培训内容:

  单元测试,使用白盒测试,设计用例是针对详细设计文档产生的。

  集成测试,设计用例是针对概要设计说明书产生的。

  系统测试,设计用例是针对软件需求规格说明书产生的。

  验收测试,测试用例正常情况下应该由客户给出,由客户进行验证,以便下结论是否可交付。

  BVT测试的特点:主要是针对主体功能及各入口点,时间短,测试用例也只有正面的,负责人一般式项目经理或者技术经理。

  何时应该进行BVT测试:从上面的BVT测试介绍中可以看出来,bvt测试当然是测试的次数越多越好,但是针对现实情况,测试部要求在送测之 前,程序在vss上打了基线,然后项目经理或者技术经理从vss上拿下最新的版本,然后做bvt测试,如果测试通过,则才可以填写送测单,并将bvt测试 情况写在其中,如果bvt测试没通过,则需要修改bug,然后重新打基线,从新做BVT测试。BVT通过的要求并不是说所有的bug全部都改掉,而是没有 重大的 bug,允许有小bug的存在。

  BVT测试,以及测试用例的编写,都是需要时间成本的,故在最初制作项目计划时,就应该识别该任务,并充分考虑其工作量。

  BVT测试用例,应该随着系统的不断扩展而不断扩展,它不应该是一成不变的。

  BVT测试应该包含的内容:

  1、业务流的测试,保证正常业务链路的通畅。

  2、工作流的测试,主要是测试流程流转是否正常,至于流程步骤的表单内容是否正确则不关注。

  3、关键功能的测试,至少要保证系统运转所需的启动数据,以及一些开关控制正常。

  4、重要基本功能的测试,比如对核心业务有影响的一些增删改等。

  BVT测试的过程:

  1、各单元测试通过

  2、打版本

  3、拿最新版本

  4、根据部署文档部署,尽量与用户环境一致

  5、执行BVT测试用例

  6、BVT测试结束后,如果成功,则填写送测单,并在送测单种写明bvt测试结果;如果不成功,则修改bug,重新进行BVT测试。

作者:MingleLui
出处:http://mingle.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

posted @ 2011-10-17 14:16 顺其自然EVO| 编辑 收藏

霜波说测试——优秀的测试用例


  测试工程师有一样很重要的工作就编写测试用例。 测试用例是对需求的另一种描述,它能引导大家进一步加深对系统的理解和对特性的全面关注,从而帮助产品和开发重新审核需求的合理性和一致性,所以应该是测 试工程师最重要的一项产出。一般的测试用例分为输入,行为,和期望结果三个部分。这三个部分通常的测试用例都能满足,但是怎样的测试用例才能算上优秀的测 试用例呢?基于以往之测试经验,我总结了优秀测试用例的几个特点。

  1、正确性:毫无疑问,测试用例 必须是需求的正确描述。但是我们往往忘记了多想一步:这是用户正确需要的吗?我曾经有个一个失败的testcase,当一个条件输入异常的时候系统返回 -1给前端接口,然后前端返回错误信息,这是当时对异常的处理需求,可是如果多想一步,当一个条件异常的时候难道我们不能返回满足部分条件的结果给用户 吗?让用户的体验更加良好吗?

  2、完整性:就测试用例本身而言,是无穷尽的,只要是键盘的任意组合都可以算作测试用例。而一个优秀的测试工程师就是从无穷中找到最能保证质量,最能发现bug的测试用例出来,发现无穷的最小集,通常功能测试用 例的找寻方法有等价类和边界值是最简单的方法,建议结合使用,先划分等价类,再把等价类中的边界值找出来。我见过很多在=和>=之间徘徊的bug。 正交法出来的用例一般太多,所以需要测试工程师在正交法的结果中再做组合,建议结合错误定位法减少用例的执行。状态图在数据统计,结算中的使用概率最高。 每个状态和流程都需要一一考虑正常和异常的分支,正常的流程一个靠谱的开发能自己保证,但是异常的分支很少有开发考虑清楚,这就是体现测试工程师价值的地 方了。但是完整性绝不仅仅是功能测试,除了功能测试之外,常见的还有能测试安全测试,兼容性测试,安装友好测试,地域语言测试和用户体验测试(usability)。

  3、输入具体:对于这三个部分我们都希望它是固定的,具体的,比如输入框的输入,我们可以写成具体“诺基亚”,但是不要写“正确的输入”,或者“中文的输入”,这些都会导致测试用例的不确定性。模糊的输入应该在具体输入的上一级结构,作为测试的思路和分类使用。

  4、用词无歧义:很多词在不同场景会有不同的含义,比如价格一词在不同的表中就代表不同的价格,甚至在同一表中也有原始价格和卖出价格,所以应该尽量具体的描述关键词的具体信息,如果能贴上专用的id和原始表中的item会对避免歧义有很大的帮助。

  5、用例细化:输入的一种组合,或者一条流程线对应一个测试用例,尽量不要在一个用例中融和多种情况,在自动化测试的脚本中为了提高效率我们会在一个自动化脚本中融入各种情况的输入,然后一个动作,所有的输出一次生成,针对这种情况,建议在脚本中对各种输入对应的案例一一备注说明,运行失败的时候也方便新人定位问题。

  6、判断点准确无歧义:我经常看到这样的检查点:“结果正确”,“速度合理”,这些检查点对其他人没有丝毫的帮助。所以应该尽量做出让机器也能识别的检查点,比如输出“8”,或者“rt<30m”。

  7、合理区分优先级:在Bugfree中有4个级别的优先级,从1到4,1表示最重要的测试用例,4表示最不重要的测试用例。不同的缺陷管理平台对优先级的定义会有不同,但是都会有优先级的概念。在时间紧张的情况下,优先级的作用会特别大,我们会优先执行比较重要,对系统功能,用户体验影响大的测试用例,将级别比较低的测试用例留在后期或者指派给一些新人来执行。

  加分点:

  1、用例自动化:有自动化脚本的地址能够一一对应,对于淘宝的bugfree就已经和自动化框架mmt打通,通过测试用例可以直接链接到脚本,方便对用例的理解。

  2、记录每轮的测试结果:对于有些功能的测试用例,结果只是简单的pass我们不需要记录,但是对于性能测试这些结果不确定的测试用例,如果能保留每次测试的结果对于之后的测试是很有帮助的。对于fail的部分用例,如果能和bug产生一一对应关系对之后的回归也产生很大的便利。

  3、对检查点进行逻辑说明:很多用例有了结果的检查点,但是为什么是这个结果,对于新人来说必须重新翻看需求或者设计文档才能理解。尤其对于算法的测试,理解需求和逻辑是一个比较痛苦的过程,如果能够对每个结果进行一些备注和逻辑上的说明,会和方便自己今后以及新人对用例的理解。

   以上是对测试用例特性的一些总结,真正编写测试用例的时候,mm图由上到下的树形结构会对测试用例的结构和思路提供很大的帮助,在测试用例评审的时候也 方便展示和说明,所以强烈推荐作为附件上传。而且对系统越加深入的了解越能写出完善的测试用例,很多开发错误的理解测试工程师只需要知道需求就可以了,不 需要对程序有代码级别的了解,但是无数的实践证明测试工程师越了解系统的设计,编码的逻辑越能发现潜在的bug和风险。Unit test通 常由开发完成比较高效,但是Integration Test开始就必须有测试工程师开始真正介入,这期间能发现很多潜在的问题,如果把风险全部留到System Test的阶段风险是很大的,大量case的回归和问题的定位都会变得更加复杂,成本更加的巨大。所以在时间允许的情况下毫无疑问是前期的测试越完善整体 效率越高。

posted @ 2011-10-17 13:52 顺其自然EVO| 编辑 收藏

仅列出标题
共394页: First 上一页 380 381 382 383 384 385 386 387 388 下一页 Last 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜