qileilove

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

浅谈手机软件测试用例设计方法

 手机产品和用户交互非常紧密,手机的软件质量就显得尤其重要。要使最终用户对手机软件感到满意,必须要在手机软件发布之前进行充分的测试。而不完全、不彻底是软件测试的致命缺陷,但是我们又不可能进行穷举测试,任何程序只能进行少量而有限的测试。为了节省时间和资源,提高测试效率,我们必须要从数量极大的可用测试数据中精心挑选出具有代表性或者特殊性的测试数据进行测试。测试用例在此情况下产生。
测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。简单地说,测试用例就是设计一个场景,使软件程序在这种场景下,必须能够正常运行并且产生程序所设计的执行结果。

  Grenford J. Myers在《The Art of Software Testing》一书中提出:一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试,由此可见测试用例设计工作在 整个测试过程中的重要地位。测试用例设计的好坏直接影响到测试的效果。目前很多公司的测试用例都是依据需求或者规范规格,测试用例设计人员根据经验来写测 试用例,这种情况就会导致测试用例覆盖面不全、测试用例规划不合理,甚至存在测试用例冗余的情况。测试用例覆盖面不全会导致出现漏测少测,将问题直接流向 用户;测试用例规划不合理、测试用例冗余会造成人力浪费,导致测试效率低下。因此不能只凭借一些主观或直观的想法来设计测试用例,应该以一些比较成熟的测 试用例设计方法为指导,再加上设计人员个人的经验积累来设计测试用例。

  目前业界比较成熟的测试用例设计方法主要有:等价类划分法,边界值分析法,错误推测法,因果图法,正交实验设计法等。

  等价类划分法

   等价类划分法是测试用例设计中一种重要而常用的设计方法,它将不能穷举的测试用例进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。等价类 划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。

  边界值分析法

   边界值分析法就是对输入或输出的边界值进行测试设计的一种方法。通常边界值分析法是作为对等价类划分法的补充。长期的测试工作经验告诉我们,大量的错误 发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。使用边界值分析方法设计测试用 例,首先应确定边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值而不是中间值作为测试数据。

  错误推测法

  错误推测法是指在测试程序时,人们可以根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例的方法。错误推测方法的基本思想是列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。例如, 在单元测试时曾列出的许多在模块中常见的错误、以前产品测试中曾经发现的错误、输入数据和输出数据为0的情况、输入表格为空格或输入表格只有一行等。这些都是容易发生错误的情况,可选择这些情况下的例子作为测试用例。

  因果图法

   因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。等价类划分法和边界值分析方法都 是着重考虑单个输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件 组合起来可能出错的情况却被忽视了。而如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件 的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图来设计。

  正交试验设计法

   正交试验设计法。利用因果图来设计测试用例时,作为输入条件的原因与输出结果之间的因果关系,往往因果关系非常庞大,以至于据此因果图而得到的测试用例 数目多的惊人,给软件测试带来沉重的负担。为了有效地、合理地减少测试的工时与费用,可利用正交试验设计方法进行测试用例的设计。正交试验设计方法依据 Galois理论, 它是根据正交性,按照 “均匀分散,齐整可比”的特点从大量的(试验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理地安排试验(测试)的一种科学实验设计方法。它 简单易行,计算表格化,使用者能够迅速掌握,是一种高效率、快速、经济的试验设计方法。

  以上这些方法各有优缺点,在设计过程中可以叠加使用,取长补短,使得设计出来的测试用例规划合理,裁剪得当,既能保证覆盖面,又能保证测试的效率,所以在测试用例的设计过程中得到了广泛的应用。

  OPhone测试团队在测试用例的设计阶段充分运用这些方法,在测试用例的设计过程中极大的减少主观因素的影响,并在保证测试用例完备性和有效性的前提下,对测试用例进行有效裁剪,减少无效测试用例和冗余,在很大程度上提高了测试效率,从根本上确保测试的质量。

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

怎么写好测试用例

 测试用例是测试执行的指导;是测试执行的实体,是测试方法、测试质量、测试覆盖率的重要依据和表现形式;是团队内部交流以及交叉测试的依据,便于测试工作的跟踪管理,包括测试执行的进度跟踪,测试质量的跟踪,以及测试人员的工作量的跟踪和考核;在测试执行工作开展前完成测试用例的编写,可以避免测试工作开展的盲目性;测试用例是说服用户相信产品质量的最佳依据,同时也可以提供给客户作为项目验收的依据。以上可以看出测试用例在整个测试工作中的地位和作用,以下编写了关于如何写好测试用例的一些个人建议:

  1、要参与需求评审,评审需求的过程实际也是熟悉业务需求的过程。只有对业务比较熟悉了,才能更好的,更充分的设计出高质量的测试用例。

  2、要多阅读文档,其中包括产品策划书、规格说明书、需求文档,接口文档等,我们可以收集一切相关的文档来帮助理解所要测试的产品需要完成的目标。

  3、尽量多参加项目组内的会议。比如需求讨论、设计讨论、计划讨论等会议,这样在讨论过程中也能加深对产品的理解。

  4、要善于沟通,多和客户、开发、测试人员进行沟通。遇到不明确的问题、有疑问的需求,可以咨询项目负责人或者客户等。这样才能提前解决需求理解偏差等。

  5、测试用例名称,也叫测试用例标题,一定要写得简洁、明了,需要用概括的语言描述该用例的出发点和关注点,使得测试人员第一眼看到测试用例名称就能够明白测试用例的目的。用例名称中一般要求不能存在假设性的语句,并且原则上每个用例的名称不能重复。

  6、预置条件要明确,包括测试环境、测试数据、测试场景。因为许多BUG只有在特定的环境、特定的场景下才可以重现。没有正确的前提条件,就无法进行后面的测试步骤或无法得到预期的结果。

  7、测试步骤描述要简单、清晰,并且要清楚每一个步骤的描述,我们平常的鼠标和键盘的每一动作都代表一个操作步骤。比如:第一步,输入用户姓名;第二步,输入登录密码;第三步,用户点击登录。步骤写的明确时就利于提高用例的可操作性。

  8、用例的预期结果要完整而且清晰,并且要将各个输出的结果写出来,包括:返回值的内容、数据库相关字段的记录、界面的响应结果、输出结果的规则符合度、日志的检查和对其它业务影响的检查。

  9、测试用例级别要划分清楚,这样在测试执行时有主次之分。

  10、测试用例的划分也要单一,一个测试用例只检查功能点的一种情况。一个用例检查的情况太多,会导致用例的目的不明确。而且这样组织用例,有利于需求覆盖率的统计。一个功能点我们测试了哪些情况,以及哪些功能点我们在重点测试,一目了然。

  11、评审用例很关键,因为经过测试用例的评审可以发现:用例设计的结构安排是否清晰、合理;是否覆盖所有的需求功能点;是否存在冗余的用例;是否具有很好的可执行性;是否存在对需求理解上的差异等。评审需要项目经理、需求分析人员、架构设计人员、开发人员和测试人员都参与,也需要客户方的开发人员和测试人员。

  12、召开测试用例评审会议,在会议上大家可以提问互答,对模糊不清的地方可以进行讨论。这样可以站在不同的角度,站在很多人的思维和思考方式下设计用例。

  13、站在用户的角度来设计用例,以用户的使用逻辑及操作习惯为出发点,从用户实际可能的操作场景考虑,一定要脱离系统提供功能。

  14、测试用例需要不断更新和维护,不要认为测试用例的设计是一个阶段,测试用例的设计也需要迭代,在软件开发的不同的阶段都要回来重新审视和完善测试用例。并且需要在测试执行时利用发散思维不断的构造和完善测试用例。

  总的来说,写出好的测试用例需要我们不断的积累和完善,需要我们不断的在工作中去总结。写出好的测试用例没有简单的公式或规定可以遵循。即使是多年以来在测试方面感兴趣的人也很难做到这一点。

posted @ 2011-10-11 10:53 顺其自然EVO| 编辑 收藏

安装笔记本win7系统

http://acerbbs.zol.com.cn/38/218_378001.html

posted @ 2011-10-11 10:51 顺其自然EVO| 编辑 收藏

java连接sqlserver

java连接sqlserver  

2009-12-27 22:42:58|  分类: Java浅谈 |  标签: |字号 订阅

用Java连接SQL Server2000数据库有多种方法,下面介绍其中最常用的两种(通过JDBC驱动连接数据库)。

1. 通过Microsoft的JDBC驱动连接。此JDBC驱动共有三个文件,分别是mssqlserver.jar、msutil.jar和 msbase.jar,可以到微软的网站去下载(://www.microsoft.com/downloads /details.aspx?FamilyId=07287B11-0502-461A-B138-2AA54BFDC03A& displaylang=en),如果你下载的是setup.exe,还需要安装它,安装后会生成上面的三个jar文件。此JDBC驱动实现了 JDBC 2.0。
驱动程序名称:com.microsoft.jdbc.sqlserver.SQLServerDriver(即下面的classforname)
数据库连接URL:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbname(即下面的url)

2. 通过JTDS JDBC Driver连接SQL Server数据库,此驱动的文件名为jtds-1.2.jar,下载路径为(http://sourceforge.net/project/showfiles.php?group_id=33291),此驱动支持Microsoft SQL Server (6.5, 7.0, 2000 和2005) 和Sybase,并且实现了JDBC3.0,是免费的。
驱动程序名称:net.sourceforge.jtds.jdbc.Driver(即下面的classforname)
数据库连接URL:jdbc:jtds:sqlserver://localhost:1433/dbname(即下面的url)

JDBC连接SQL Server数据库的Bean代码网上大把的有,下面摘录其中的一部分:(请将localhost和1433改成你实际应用中的SQL Server服务器地址和端口号,dbname改成你实际的数据库名)

import java.sql.*;
public class DatabaseConn {

 private Connection conn;
 private Statement stmt;
 private String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbname";
 private String classforname = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
 private String uid = "sa";
 private String pwd = "password";
 
 public DatabaseConn(){}
 
 
 public Connection getConnection()
 {
  try
  {
   Class.forName(classforname);
   if (conn == null || conn.isClosed())
    conn = DriverManager.getConnection( url, uid, pwd);
  }
  catch (ClassNotFoundException ex)
 
  catch (SQLException ex)
 
  return conn; 
 }

}

当然,在做上述工作之前,你得先检查自己的SQL Server设置是否有问题,步骤如下:

首先打开“命令行窗口”,也就是MS-Dos窗口,输入
telnet localhost 1433  (当然,用SQL Server所在的服务器地址替代localhost,端口改为SQL Server的实际端口,默认是1433)

如果成功了,表明你的SQL Server是可以连上的,如果没成功(一般是对于Win2003或者WinXP SP2),请进入控制面板,打开“管理工具”中的“服务”,启动“SQLSERVERAGENT”服务(当然,你也可以打上SQL Server的SP3补丁包),再继续上面的操作,应该会成功的。

其次,检查你的用户名和密码是否能登陆SQL Server服务器,当然,最直接的办法就是打开SQL Server的“查询分析器”,输入用户名和密码,点击确定

如果成功了,表明你的SQL Server登陆设置没问题,如果失败了,请打开SQL Server的“企业管理器”,在你注册的SQL Server服务器上(也就是左边的“SQL Server组”下面的那东东)也就是点击右键,选择“属性”,在“SQL Server (属性) 配置”对话框中选择“安全性”,将身份验证设为“SQL Server和Windows(S)”,再用查询分析器测试一次,如果还连接不上,就去检查你的用户名和密码是否有误。重复测试,直至成功。

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

测试用例编写规范

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

  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:密码输入框测试时要特别注意进行字母大写输入的测试。

  查找替换操作

  案例演示:打开word中的"替换"对话框

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

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

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

  替换测试大体相同。

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

  插入操作

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

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

  3,插入对象
  要测试的内容
  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-10 13:17 顺其自然EVO| 编辑 收藏

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

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

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

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

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

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

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

用例设计心得---新人之路系列

目前很多新加入测试行业的朋友在刚接触测试的时候十分茫然, 经理的三言两语就安排了我们的工作性 质“**啊,你去**这个项目组帮着测试下”,“**,
你来测下这个系统,有问题就和我说,”。这种情况很多很常见,对于一个新人来讲,怎么测呢?测试这个行业我一直觉得是易学难精,某种角度来讲,测试比开发还要难,比开发还需要动脑子,相信大多数人都看过玄幻小说,在这里我做一个比喻,我们把BUG和开发任务比作对手,整个团队比作自己,那么开发人员就是杀敌的利剑,开发人员所掌握的技术,就是这把剑的长度和锋锐度,那么我们测试人员呢?测试人员则担任 了眼睛的任务,要通过我们来寻找对手的破绽,从而一招胜敌,这里除了找出缺陷同时还有一个工作,给缺陷定位,我们测试员掌握的技术,就代表了大脑运作的速度,代表了眼神的犀利,很多新人朋友知道自己要去找BUG但是常常忘记了给BUG进行一个定位,其实定位是很重要的,就好比你发现对手的破绽在两眼之间,你却告诉你手中的利剑,对手的头上有破绽,试问,假若你直接将BUG定位在两眼之间,哪个更有效率呢?

  再来谈一下测试人员应该掌握的技术,就我个人来看,测试最核心的技术还是测试用例的设计,不论是纯手工测试,自动化测试黑盒测试白盒测试功能测试还是性能测试都离不开测试用例的设计,至于更牛的测试专家他们所掌握的诸如开发测试工具这样的技术,仔细想想,也只是为了更方便的设计和实现测试用例。

   只要接触过测试的人不难发现,其实用例不难,大家或多或少都接触过用例,可真正明白用例的用途的还是在少数,以下我将用例的设计分为4个阶段当然只是给 新人朋友的一点建议,与我以前发过得一片新人朋友看的博文是同样效果的,只是给新人朋友指引一条测试的道路,所谓条条道路通罗马,也希望更多的朋友能够分 享自己的一些心得和体会。

  第一个阶段,茫然

  在这个阶段的朋友多半是第一次接触到测试用例,虽然用例的格式都有,但总是自己设计不出来或者设计出来的用例效果很差,其实用例的格式并不重要,有时候可以根据你自己的实际项目,所采用的设计方法,思维模式而改变,如果你感到无处下手,那么你应该去看一看有哪些用例的设计方法,同时仔细的分析下你现在的状态和手上的系统比较适合什么方法。

  第二阶段,用例过多,覆盖面积虽然达到但是工作量太大

   这个阶段的朋友,你们已经掌握了1种或2种基础的用例方法,比较常见的诸如场景法,等价类划分法,边界值法,你会发现,像是场景法一条比较复杂的业务流 程能够分出10多20条备选流,而场景法和等价类结合确实能够实现一个较为客观的覆盖面积,但是你会发现要达到这个效果所需要用的测试用例实在太多,这就照成了工作量增大,无意义的用例和重复的用例也会直接造成你的工作有百分之20甚至更多是无效的,这个时候你就应该尝试去了解一下高级的用例设计方法了,比如因果图判断。

  第三阶段,用例大瘦身,覆盖面积依然可观

   这个阶段,其实你在用例的方向已经颇为厉害了,至少掌握了三种用例设计方法的你,已经能在短时间内对一个一般的系统做出一个较为完整的测试用例了,通过 2中基础的用例设计方法,将整个系统所有功能点都包括起来,再通过因果图判断,将重复的测试功能点排除掉,可以说你现在设计的测试用例已经是优秀的用例 了,完全能够达到使用尽可能少得用例覆盖尽可能多的面积,那么这个时候你应该继续提高自己的能力,可以尝试着将用例进行复合,进行复合用例的设计了,难度 颇高哦

  第四阶段,这个阶段实际上你已经是达人了,我也就不在达人面前献丑了,只是借助这个阶段,提 醒一下新人朋友,不要认为自己的技术已经很好了,要知道第一阶段巅峰的人是比不上第二阶段初级的,你觉得自己很优秀了,只是因为你不知道在你之上还有很多 层面是你没接触到得,千万不要止步不前。其实测试这个行业,要做好很不容易,常常看见很多人做了4,5年还是觉得自己还是什么都不知道一样,从这也能看出 测试的难度,国内的测试,还不够成熟,最直接的体现就是测试的易学,还有和开发工资的对比,为什么测试易学而我却说测试很难呢,因为所谓的易学的测试,甚 至不需要去学,有些公司直接就是让你东点一下西点一下,看看报不报错,这不算测试,至少在我看来真的不算入行, 测试难学,难就难在测试是纯思维上得职业,我们不需要一直敲代码,不需要一直去设计系统,但是我们必须要在思维了模拟很多场景,模拟很多操作,我们的工作 实际上核心部分都是在脑子里进行的,是不能通过肢体来表达的,你在思考新增人员的操作时,如果你直接就操作了,那么抱歉,你还不合格,如果想到什么就做什 么,你的测试效果会很差,因为这一个节点可能的情况你还没考虑清楚就充充开始操作,照成结果不外胡两点,一,大面积遗漏,二,工作量增加,有经验的测试 员,会在脑子里将所有可能的情况都考虑到最后形成文档,在依照文档来进行测试,这份文档也就是测试用例,能够保证覆盖面就又不让我们过多的重复操作,更能 让开发或经理清楚的了解到这个系统哪些地方已经测了哪些地方已经遗忘了,我们从最初做测试的时候应该就会了解到,不存在百分百测试,也不存在2个人设计的 用例百分百相同,这个时候 用例文档的好处就体现出来了,即使开发人员在看了你的文档后也有可能提出一些你没有考虑到的地方,毕竟这些系统的核心还是开发人员自己开发出来的,同时开 发也是人,开发考虑的角度也代表着一部分用户的角度。即使你所在的项目组,公司不重视用例,但是如果你想在测试这个行业有所成就,那你就要注意这些地方, 我在上一篇博文里也提到过,公司不给你安排,并不代表不允许你做,不要等着公司给你安排任务,学到的技术学到的经验都是你自己的,能力提高的也是你自己, 相应的,能力提高了,工作量减少是必然的,同样的一个项目,别人要用1周测完,而你只需要1天,多余的4天,就是你自己努力的奖励。

  期待同行参与讨论,我始终相信,分享自己的心得能让自己收获更多,一人一年的工作经验,虽然不能让你直接拥有5年10年的这样累加,但是也能让你的一年工作经验比别人的一年经验充实5倍,10倍。

posted @ 2011-10-10 12:00 顺其自然EVO| 编辑 收藏

如何管理自己的测试团队

  最近,我也在网上看了一些贴子有关测试团队的管理问题,觉得在测试管理方面确实是个难题,这也可能测试团队确实不太好管理的原因吧,但我想只要自己去思考、去探索,总会找到适合自己团队管理的理念和模式吧。

  我自己总结了一下,也结合自己的一些管理经验跟大家分享一下吧,欢迎大家把自己的提意见并把自己的经验也分享出来吧, 也算是大家相互学习的一个机会吧!

  1、作为一个团队的管理者,最起码的是要自己懂自己产品或项目的业务。这一点很重要,第一这样有助自己分配工作给团队中的成员,要不然自己都搞不清楚业务难度和业量就分配工作给team member是件很让人难以接受的事情。第二,有助于自己和其它team或department的合作和沟通,不至于其它team提出的问题,自己还不清楚就答应或否定要做。

  2、作为一个管理者,要懂更多的技术,至少是了解更多的测试技术,要了解其工作原理,这样有助于自己帮助团队成员research或者说技术的应用到实际的测试工作中来。也可以提高自己在测试团队中的威性,自己懂得多能让更多的同学认可和信服。

  3、平衡按特长分配工作任务给team member。对于senior的测试员我们分配更多的任务是design test case的,junior的测试员可能更多的是分配执行测试。分配工作也是看看哪位测试员的特长,有些测试员对GUI比较敏感,有些测试员对Logic比 较关注,有些测试员对整个系统的流程更清楚,这些都是作为测试管理者分配任务的一个基线,这样可以更好地带好一个团队,提高软件测试的水平和质量。

  4、做好测试风险的管理。一 般来说我们要尽可能降低测试风险,也是测试管理中一个很重要的课题,我也只能讲讲自己的一些片面的观点。测试风险从软件需求分析开始就存在,我们要更好地 在前期发现这些潜伏在需求或开发设计中的风险:1)如需求提出无法达到的功能,或有违背现有功能的需求我们在需求分析时一定要提出来;2)软件需求设计中 的有些无法测试的功能或要点,也要在测试需求分析中提出来;3)开发设计文档的静态测试,这一点我觉得很重要,很多小公司基本上会忽略这一点,静态测试 (主要是指文档方面的测试),对开发设计文档或原型设计文档的Review或测试有助于测试风险的降低,也能发现一些与需求冲突的设计,争取错误在前期发 现。同时我们测试用例在 测试方面也可以更好地与其配合,设计更好的的测试用例去测试,无论是从GUI,还是开发测试技术上测试都是有益的;4.对测试用例的Review或静态测 试,这样有利于优化测试用例,补充更多有用的测试用例和除去一些无用或重复的用例,这样能提高测试执行效率。5.监测测试执行及bug管 理,Bug算是测试员的成果之一,我们作为管理者一定要管理好,同时也能让我们清楚看到测试风险的存在,可以通过现有的Bug趋势判断系统中未来还有多少 bug存在,可以通过bug的类型分析fix bug还要多长时间还可能会产生多少bug,这样我们就能清楚知道当前测试人员和开发人员什么时候哪些人要开始加班了或要加派人手了...,我们还要关注 测试执行进度,测试执行初期bug趋势图,哪些类型的bug多些,此时会不会影响到测试中期,Logic的bug多的话一定会影响到测试中期的质量和测试 效率的,此时要提醒开发团队要注意logic类型bug的fix,不能把这类bug拖到后期fix,这样会影响质量。

  当然软件质量风险还有其它的因素影响,如项目或产品时间评估,我想这部分大多是硬性的,我们可以协商测试的项目时间;还有人员请假或离职,以及测试组人员的变动,还有测试人员情绪波动都会影响到测试质量风险的。

  5、合理评估测或衡量测试人员的绩效和水平。相 信这一点也是很难做到的一点,做得不好,不仅无法让整个团队好好工作,内部矛盾多,造成员工离职都会有,是让一个团队最头痛的事情,那么我们如何合理评估 测试人员的工作呢?首先我觉得公开硬性绩效标准,让大家都明白一个标准,也是团队共同发展的目的,这样做到公正,不会有私心。我觉得我们可以从几个方面去 衡量:a)工作态度及积极性 b)工作量和工作质量的一个线性比较,工作量大的一定是最辛苦的,但要与其工作质量作参考的,当然我们不能把一个员工发现的Bug量作为其工作成绩好坏的 标准,我记得以前一位测试经理就是这么做的,这是很要命和害了整个公司的做法,因为测试的对象不同或开发人员水平不一样及项目大小和难易程度,都是影响 bug数量是不一样的因素,我觉得一个比较好的标准是从中多方面来看的,测试执行过程和测试用例两方面,执行测试过程中bug趋势图和bug类型分布图及 软件交付后bug反馈率,测试员应在测试执行过程中发现各阶段中应当发现的bug,不能说很明显的bug而在最后才发现,这些都可以看出测试员的水平;另 外测试用例的设计也是一个很重要的标准,很好的测试用例,会尽可能早地发现bug,当然测试用例的设计可操作性、详细度等都是衡量的标准。

  6、凝聚团队和激发团队成员的潜力。这 一点,虽说是有点大话,但真的也是很重要的,我觉得很重要的一点就是让团队中的每一个人都在成长,安排合理的工作角色很重要,让他们能更好的看到自己的成 长空间,如让比较junior的测试员设计比较简单的测试项目或需求的测试用例,这样让他也觉得自己也能设计测试用例;让很Senior的测试员负责项 目,让他觉得是项目中的主角而不是测试经理的身影,这样让团队中的成员也会更有责任心;安排比较空闲的测试去Research更新的技术或测试技巧并通过 讲课的形势分享给所有的成员;在项目执行中,安排测试员在执行这程中去交换测试,这样可以让参与这个项目的成员对整个系统了解,这样项目的每一部分都相当 于有backup人员,不担心项目哪位请假而为难了,也培养了测试人员的业务知识。多多让成员之间沟通,一起参加工作之外的活动。

  7、沟通成员,了解成员的心态。作为一个管理者要多多关心成员的心态问题和成长问题,为什么工作不太积极?为什么项目质量不高?....都可以通过私下聊天谈心来了解,并帮助他们解决!

  好了,我也暂时只总结了这么几条,希望以后的工作中能总结更好的经验分享给大家,也希望大家来提提意见,分享一下自己的观点吧!!谢谢各位了,我们一起成长中....

posted @ 2011-10-10 11:44 顺其自然EVO| 编辑 收藏

LoadRunner性能测试基础知识问答


  Q1:什么是负载测试?什么是性能测试

  A1:负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试,例如,访问一个页面的响应时间规定不超过1秒,负载测试就是测试在响应时间为1秒时,系统所能承受的最大并发访问用户的数量。

  性能测试:指在一定的约束条件下(指定的软件、硬件、网络环境等),确定系统所能承受的最大负载压力。

  Q2.性能测试包含了哪些测试(至少举出3种)

  A2:性能测试包含负载测试、压力测试、大数据量测试、疲劳强度测试等。

  Q3.简述性能测试的步骤

  Q4.简述使用Loadrunner的步骤

  A4:制定性能测试计划—>开发测试脚本—>设计测试场景—>执行测试场景—>监控测试场景—>分析测试结果

  Q5.什么时候可以开始执行性能测试?

  A5:功能测试通过;一般需要进行性能测试的系统,都是用户量比较大、业务使用比较频繁、比较重要的功能模块。

  Q6.LoadRunner由哪些部件组成?

  A6:主要有三部分组成:

  Q7.你使用LoadRunner的哪个部件来录制脚本?

  A7:使用Virtual User Generator录制测试脚本

  Q8.LoadRunner的哪个部件可以模拟多用户并发下回放脚本?

  A8:LoadRunner的Controller组件。

  Q9.什么是集合点?设置集合点有什么意义?Loadrunner中设置集合点的函数是哪个?

  A9:在性能测试过程中,需要模拟大量用户在同一时刻,访问系统并同时操作某一任务,可以通过配置集合点来实现,多个用户同时进行某操作;

  集合点可以在服务器上创建密集的用户负载,使LoadRunner能够测试服务器在负载状态下的性能。

  设置集合点函数:lr_rendezvous("Meeting");  // Meeting是集合点名称

  Q10.什么是场景?场景的重要性有哪些?如何设置场景?

  A10:场景用于模拟用户实际业务操作;

  LoadRunner中场景有手工场景和面向目标的场景。

  设置场景:选择场景类型、设置运行时设置、模拟用户数、加减压方式、持续时间,配置负载生成器。

  Q11.请解释一下如何录制web脚本?

  A11:利用Virtual User Generator录制测试脚本,录制步骤:

  1、选择合适的协议

  2、设置录制选项

  3、开始录制

  Q12.为什么要创建参数?如何创建参数?

  A12:LoadRunner在录制脚本的时候,只是忠实的记录了所有从客户端 发送到服务器的数据,而在进行性能测试的时候,为了更接近真实的模拟现实应用,对于某些信息需要每次提交不同的数据,或者使用多个不同的值进行循环输入。 这时,在LoadRunner中就可以进行参数化设置,以使用多个不同的值提交应用请求。

  【参数化】:使用指定数据源中的值来替换脚本录制生成的语句中的参数。

  【参数化好处】

  ● 减少脚本的大小

  ● 提供使用不同的值执行脚本的能力,更加真实的模拟现实应用。

  【参数化步骤】

  ● 用参数替换Vuser脚本中的常量值

  ● 为参数设置属性和数据源

  Q13.什么是关联?请解释一下自动关联和手动关联的不同。

  A13:【关联的定义】简单的说:就是把脚本中某些写死(固定)的数据,转变成动态的数据,或者说将前面语句的结果数据保存下来,然后在后面的语句提交请求时使用这些数据。

  【需要关联的前提条件】:

  客户端需要从服务器端返回数据中获取部分数据,并将这些部分数据处理后作为自己下一次请求的一部分发出。

  【自动关联与手工关联的不同】:自动关联是在脚本录制过程中,VuGen会根据已经制定好的规则,自动找出需要关联 的值或脚本录制完成后,执行脚本一次,通过Correlation Studio自动找出需要关联的数据,并建立关联;而手动关联是需要录制两份相同业务流程的脚本,输入的数据要相同,利用WinDiff工具,找出两份脚 本之间不同之处,也就是需要关联的数据,再通过web_reg_save_param函数手动建立关联,将脚本中用到关联的数据参数化。

  Q14.你如何找出哪里需要关联?请给一些你所在项目的实例。

  A14:

  1、录制两份相同业务流程的脚本,输入的数据要相同

  2、利用WinDiff工具,找出两份脚本之间不同之处,也就是需要关联的数据

  3、通过web_reg_save_param函数手动建立关联,将脚本中用到关联的数据参数化。

  示例:

  通过录制两份脚本,进行对比,可知jsessionid、sap-ext-sid、sap-wd-cltwndid、sap-wd-tstamp需要进行关联。

  Q15.你在哪里设置自动关联选项?

  A15:录制选项中进行设置,如下图所示:

  Q16.哪个函数是用来截取虚拟用户脚本中的动态值?(手工关联)

  A16:Web_reg_save_param函数主要根据需要做关联的动态数据前面和后面的固定字符串来识别、提取动态数据,所以在做关联时,需要找出动态数据的左、右边界字符串。

  1.函数原型:

  int web_reg_save_param (const char *ParamName, <List of Attributes>, LAST);

  2.参数说明:

  ParamNam:存放动态数据的参数名称

  List of Attributes:其它属性,包含Notfound、LB、RB、RelFrameID、Search、ORD、SaveOffset、Convert、SaveLen。

  ● Notfound:指当找不到要找的动态数据时,怎么处理。

  ● Notfound=error,当找不到动态数据时,发出一个错误信息,为LoadRunner的默认值。

  ● Notfound=warning,当找不到动态数据时,不发出错误信息,只发出警告,脚本会继续执行下去不会中断。

  ● LB:动态数据的左边界字符串,该参数为必选参数,并区分大小写。

  ● RB:动态数据的右边界字符串,该参数为必选参数,并区分大小写。

  ● ORD:指提取第几次出现的左边界的数据,该参数为可选参数,默认值是1。假如值为All,则查找所有符合条件的数据并把这些数据存储在数组中。

  ● Search:搜寻的范围。可以是Headers(只搜寻Headers)、Body(只搜寻Body部分,不搜寻Headers)、 Noresources(只搜寻Body部分,不搜寻Header与Resource)或是All(搜寻全部范围,此为默认值),该参数为可选参数。

  ● RelFrameID:相对于URL而言,欲搜寻的网页的Frame,此属性可以是All或是具体的数字,该参数为可选参数。

  ● SaveOffset:当找到符合的动态数据时,从第几个字符开始才存储到参数中,该参数为可选参数,此属性值不可为负数,其默认值是0.

  ● Convert:可能的值有两种:

  ● HTML_TO_URL:将HTML-encoded数据转成URL-encoded数据格式。

  ● HTML_TO_TEXT:将HTML-encoded数据转成纯文字数据格式。

  ● SaveLen:从Offset开始算起,到指定长度内的字符串,才储存到参数中,该参数为可选参数,默认值为-1,表示储存到结尾整个字符串。

  Q17.你在VUGen中何时选择关闭日志?何时选择标准和扩展日志?

  A17:在测试场景执行时,关闭日志,因为日志信息过多,也会影响性能测试结果;在调试测试脚本时,可以选择标准或扩展日志,用于输出调试信息。

  可以在运行时设置中,进行日志设置,如下图所示:

  Q18.你如何调试LoadRunner脚本?

  A18: 通常采用以下方法调试LoadRunner测试脚本

  ● 断点

  【方法】在脚本的任意一行上按右键菜单或F9增加断点。

  ● 单步跟踪

  【方法】通过菜单命令VUser—>Run Step by Step或F10,可以控制脚本以语句为单位执行。

  ● 日志输出

  【方法】通过日志输出函数lr_message、lr_log_message、lr_output_message输出。

  ● 对话框输出

  综上,在实际测试工作中,基本上使用前三种方法,对话框输出基本上没用过。

  Q19、你在LR中如何编写自定义函数?请给出一些你在以前进行的项目中编写的函数。

  A19:在编写用户自定义函数之前,需要首先为函数创建外部库(DLL)文件,将这些库文件放在bin目录下,一旦库文件已经被添加并且将用户自定义函数作为参数,函数应该为以下格式:__declspec (dllexport) char* (char*, char*)

  Q20.在运行设置下你能更改那些设置?

  A20:可以修改Run Logic、pacing、Log、Think Time等,见下图;可以测试实际需要,修改相关选项。

  Q21.你在不同的环境下如何设置迭代?

  A21:在“运行时设置”中设置,如下图所示:

  Q22.你如何在负载测试模式下执行功能测试?

  A22:在负载测试模式下,可以通过同时运行数个虚拟用户,通过增加虚拟用户数,确定服务器在多大的负载量下,仍然可以正常运行,我一般进行核心功能操作,验证核心功能运行是否正常。

  Q23.什么是逐步递增?你如何来设置?

  A23:虚拟用户数随着负载时间逐渐增加,可以帮助确定系统响应时间减慢的准确时间点。

  可以在“加压”选项卡中进行设置:如下图所示,将设置更改为:“每 30 秒启动 2 个 Vuser”

  Q24.以线程方式运行的虚拟用户有哪些优点?

  A24:以线程方式运行的虚拟用户,在默认情况下,Controller为每50个用户仅启动一个mmdrv进程,而每个用户都按线程方式来运行,这些线程用户将共享父进程的内存,这就节省了大量内存空间,从而可以在一个负载生成器上运行更多的用户。

  Q25.当你需要在出错时停止执行脚本,你怎么做?

  A25:取消运行设置中的“Continue on error”复选框。

  或者使用lr_abort函数。

  Q26.响应时间和吞吐量之间的关系是什么?

  A26:当系统吞吐量未达到系统处理极限时,系统性能不会衰减,交易平均响应时间一般也不会递增,当系统达到吞吐量极限时,客户端交易会在请求队列中排队等待,等待的时间会记录在响应时间中,故交易平均响应时间一般会递增。

  Q27.说明一下如何在LR中配置系统计数器?

  A27:以windows资源监控为例,可右键点“添加度量”,输入系统IP、选择平台类型,确定即可,详细参加LR自带操作手册^_^。

  对于监控不同类型的操作系统,需要做一些准备工作,可参见监控操作系统资源部分。

Q28.你如何识别性能瓶颈?

  A28:性能瓶颈分为:硬件瓶颈和软件瓶颈

  性能瓶颈可以通过监控器来分析发现,这些监控器包括应用服务器监控、web服务器监控、数据库服务器监控器和网络监控器;它们可以帮助分析导致响应时间增加的原因;性能度量一般包括响应时间、吞吐量、每秒点击率、网络延迟等等。

  Q29.如果web服务器、数据库以及网络都正常,问题会出在哪里?

  A29:问题可能出在系统本身或应用服务器、或为应用编写的代码编写中。

  Q30.如何发现web服务器的相关问题?

  A30:可以利用web资源监控器发现web服务器相关问题,在场景执行过程中,可以利用监控器分析web服务器吞吐量、每秒点击率、每秒HTTP响应数、每秒页面下载数,以及web服务器硬件资源使用情况等。

  Q31.如何发现数据库的相关问题?

  A31:可以通过数据库监控器和数据资源图发现数据库相关的问题,例如在运行Controller之前,可以指定需要度量的资源,之后可以根据监控的数据,分析数据库相关的问题。

  Q32.解释所有web录制配置?

  A32:选择录制协议、设置录制选项、选择浏览器、选择存放路径、开始录制。

  Q33.解释一下覆盖图和关联图的区别?

  A33:覆盖图:合并两个图的内容,使用同一个X轴,合并图左Y轴显示当前图的值,合并图右Y轴显示被合并图的值。

  关联图:当前活动图的Y轴变为合并图的X轴,被合并图的Y轴变成合并图的Y轴。

  Q34.你如何设计负载?标准是什么?

  A34:负载测试计划多少用户数量、使用什么类型的机器、以及在什么环境下进行。主要基于两个重要的文档,任务分布图和事务信息,任务分布图告诉我们在负载时间段内,某一个事务使用的用户数,高峰使用率及低峰使用率均来自该文档;

  事务信息告诉我们事务名及优先级,在设计场景时可以参考。

  Q35.Vuser_init中包括什么内容?

  A35:Vuser_init中包含在脚本执行过程中只需执行一次的脚本。一般来说,所有需要初始化的都可以放在vuser_init里面,比如登录。

  Q36. Vuser_end中包括什么内容?

  A36:vuser_end中一般包含退出的过程,比如退出系统,主要在脚本执行完成或停止时运行,在设置了迭代次数时,vuser_end和vuser_int均只执行一次。

  Q37.什么是think time?think_time有什么用?

  A37:思考时间:用户在各步骤之间停下来进行思考的时间,由于用户基于其经验水平和目标而与应用程序进行交互操作,因此技术水平更高的用户工作起来可能会比新用户要快。

  通过启用思考时间,可以使 Vuser在负载测试期间更准确地模拟其对应的真实世界用户。

  Q38.标准日志和扩展日志的区别是什么?

  A38:标准日志:脚本执行过程中,将函数集及信息发送到日志文件中

  扩展日志:可以将详细的脚本执行信息输出到日志文件中,可以选择以下三种扩展日志信息:

  ● 参数替换:脚本运行过程中,可以将参数及当前参数值输出到日志文件中

  ● 服务器返回的数据:将服务器返回给客户端的数据输出到日志文件中

  ● 高级跟踪:所有的虚拟用户信息和函数调用输出到日志文件中

  Q39.解释以下函数及他们的不同之处。

  A39:lr_debug_message:发送调试信息到输出窗口或业务监控日志文件中

  lr_output_message:发送日志信息到输出窗口或业务监控日志文件中

  lr_error_message:发送错误信息到输出窗口或业务监控日志文件中

  lrd_stmt:赋予一个SQL语句用于处理

  lrd_fetch:获取结果集中的下一行数据

  Q40.什么是吞吐量?

  A40:客户端每秒从服务器接收到的数据,或系统服务器每秒能处理通过的交易数。一般随着虚拟用户数的增加,吞吐量也增加,说明网络带宽比较充足,反之,吐过随着虚拟用户数的增加,吞吐量比较平稳,呈直线状态,则说明网络带宽成为瓶颈,限制了数据传输。

  Q41.场景设置有哪几种方法?

  A41:面向目标的场景设置和手动场景



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

测试三问——新手必看

测试三问——新手必看


  在进入软件测试行业之初,很多人都会存在下面最原始的问题,我称之为“测试三问”:

  1、什么是软件测试?

  2、为什么会有或会需要做软件测试?

  3、软件测试的目的是什么?

  答:

  一、什么是软件测试?

  软件测试是一个过程。是一个质量保证中的一个环节,是一个验证被测产品是否符合客户需求的过程。而且是一个有计划、有规律、有组织的活动。

  二、为什么会有或需要进行软件测试?

  先简单来描述一个逻辑:

  第一、随着信息化的发展,我们在各行各业使用了越来越多的软件。一方面为我们提高工作效率,一方法丰富了我们的生活,甚至在有些行业已经离不开相关的专业软件;

  第二、既然这些软件为我们工作,我们就需要它正确的为我们工作,否则会给我们带来不必要的麻烦甚至是危害;

  第三、既然如此,我们在使用软件之前,就需要知道它能不能如我们所需要的那样工作。

  这样,就产生一个需求:对软件进行测试。

  有需要就会产生使其存在,以上简单的回答了上面第二个的问题。

  不仅如此,在很多软件在从程序员手中开发完之初,都会有或多或少的问题,更是提出了软件测试的必要性,随着时间推移,逐渐催生了软件测试行业。

  软件测试是为了保证我们的软件产品的质量。那么什么是我们软件产品的质量?如何才能说我们保证了我们软件产品的质量呢?

  我们说如果我们实现了客户的所有要求,同时保证了程序运行的效率,保证了程序的可读性,可维护性,那么我们就保证了我们软件产品的质量。

  前面这些点是我们软件测试的最最核心的思想。我们的一切软件测试活动都是为了保证这个核心思想而存在的,为了保证这个核心思想,出现了软件测试工程,出现了软件测试这个专门的学科。

  三、软件测试的目的是什么?

  在谈到软件测试目的时,许多人都引用grenford j. myers在《the art of software testing》一书中的观点:

  1、软件测试是为了发现错误而执行程序的过程;

  2、测试是为了证明程序有错,而不是证明程序无错误;

  3、一个好的测试用例是在于它能发现至今未发现的错误;

  4、一个成功的测试是发现了至今未发现的错误的测试。

  这种观点可以提醒人们测试要以查找错误为中心,而不是为了说明软件的正确性,实际上大部分未经过测试软件产品都或多或少的存在着错误。

  但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此。

  首先,测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。

  其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。

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

仅列出标题
共394页: First 上一页 385 386 387 388 389 390 391 392 393 下一页 Last 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜