我的QQ:18324258 朋友们,如果需要交流,请直接联系我的QQ,并说明相互学习,不要留给我QQ号,我不会动不动就上来看的。希望多交流,谢谢!

发布新日志

  • QC 数据库 从SQLSERVER移植到ORACLE

    2009-01-20 11:23:35

    事件起因:QC 服务器DOWN了,QCSITEADMIN数据库没有备份。并且原来是SQLSERVER,希望移植到ORACLE.

    首先要安装并恢复QC,SQLSEVER2000需要安装SP4.不过我们本来数据库没有坏,所以就不管它了。安装QC时需要注意。1)。尽量先使用客户端连接数据库,验证连接的正确性。2)。如果在数据库验证过程中,出现数据库参数错误,请先验证第一点。如果连接正确,请验证数据库服务名,我遇到本机安装用IP和LOCAL都不可以,最后用计算机名称验证通过的情况。3)如果已经存在QCSITEADMIN,可以使用原架构,但必须知道QCSITEADMIN管理员的用户和密码,否则就删除重新创建好了。如果选择覆盖的话,可以会出现安装错误的情况。

    其次,安装完成后,将原来的数据导入,注意:1)要修改数据库的连接名。 2)导入文件dbid.xml中包含的库路径,可以在XML文件中修改,我是新建了一个一样的,这样比较简单。导入后,在客户端验证导入的内容是否正确。

    然后,导出成QCP文件。要注意:导出其实很简单的,按提示一步一步来就可以了。我把存储池的路径修改了,报找不到空项目的错误,改回来就可以了。

    最后,导入,在使用ORACLE的QC中,导入QCP文件就可以了。没有什么要特别注意的。

    OH,还有一个问题,就是原来9090被我使用默认端口8080了,因为9090申请了外网访问,所以就把端口改回来了。\JBOSS\server\default\deploy\jbossweb-tomcat55.sar下的server.xml文件 ,修改端口就OK。

    修改后,发现本机的快捷方式还是默认的8080端口,就是快捷方式的属性里修改了快捷方式。搞定。

  • QC的缺陷导出EXCEL乱码的问题

    2009-01-13 11:29:50

    QC的缺陷导出EXCEL乱码的问题.

    几种解决方法:

    1、导出生成HTML文件,然后从EXCEL中导入。

    2、从数据库中查询完直接COPY出来。

    3、打补丁。同事说打TD4QC_00059,就可以,不过界面变回英文了。

    4、不导出EXCEL,导出成WORD.

    呵呵,试到先导出XML,但EXCEL导入时不能识别。我猜测,可能导出成文件再导入也可以吧,不过没有试。呵呵。反正能解决就行了

  • SVN服务器上存在文件名相同,字母大小写不同的问题

    2008-12-05 10:07:59

    今天遇到一个新问题,好久才解决,写上来,大家以后注意一下。

    是这样的,服务器上存在两个文件。但两件文件有一个字母大小写不同,在服务器上认为是两个不同的文件,但检出时WINDOWS认为他们是同一个文件,所以检出不了。 检出失败,报错为:

    svn: 不能复制“I:\scmback\rmpda\trunk\06_code\rmpda\serversrc\com\gpdi\rm\opt\hbm\.svn\tmp\text-base\BasMacRoom.hbm.xml.svn-base”到“I:\scmback\rmpda\trunk\06_code\rmpda\serversrc\com\gpdi\rm\opt\hbm\.svn\tmp\BasMacRoom.hbm.xml.tmp.tmp”: 系统找不到指定的文件。

    并且SVN已经锁定,不能进行clean,不能再更新。

    原因:SVN对检入的文件是区分大小写的。但WINDOWS下检出不区分。所以检出时存在同名文件,就报错。

    解决方法:使用版本浏览器中删除 。右键--》SVN-->Repo browser,打开后找到要删除的文件,删除就OK了。

    也请大家注意,如果文件的大小写有修改的话,尽量把原来的文件删除,再提交新的文件。
  • jira中无法弹出用户或组选择框的问题

    2008-10-21 12:11:42

    今天同行问到一个问题,是项目管理用户和JIRA管理员,但在增加组件时却无法弹出用户选择框为组件设置lead.

    查了N多种原因,花费了一上午时间,最后将她的用户和另外一个可以使用的用户进行比较,发现她比对方缺少了jira-developers的组。加入了这个组中,就搞定。

    我百思不得其解。因为我也是JIRA管理员,也没有加入jira-developers组,但都可以啊。最后查看了JIRA的帮助文档,发现jira-3.12的帮助文档里有这样的描述。

    jira global permission,对所有项目都适用,如图:

    里面有清楚的描述,控制用户或组的弹出必须有jira-developers的权限。这就解释了她为什么不能弹出用户选择窗口,而她的同事就可以的疑问。

    不过可以修改的,把那个browse user后面的组删除,就变成any-users了,全部都可以了。

    不过JIRA USERS后面的组可不要删除,否则登录进去后没有任何权限操作了。本来注册一个用户就默认是JIRA USER的,只是用来控制登录的。这个对管理操作不增加工作量,最好保留吧

    那我的为什么不加入也可以呢? 原因可能是因为我使用的JIRA是从3.6版本升级来的。而在3.6的文档中。

    如图:

    是允许所有用户打开用户列表的。

    所以我没有加入jira-developer组也没有遇到打不开用户列表的问题。 不过从3.6升级到了3.12,为什么JIRA不会用新的GLOBAL PERMISSION 去对原有的用户进行权限限制,就不知道了。

  • fisheye访问路径莫名变更的问题

    2008-10-17 09:30:10

    昨天在FISYEYE用它的SHUT DOWN停止了一下FISHEYE的服务器,今天重新启动,打开就上不去了。错误如图:

    很晕啊。结果发现点击链接居然可以访问。但访问的路径变成了http://lostname:port/orgl.OgnlContext@42614b38/

    也可以正常操作,只是访问的路径修改了。 只好用ADMIN用户进入,在global setting -->server setting里发现,http bind 和site url都被修改了。重新改回来了,就可以正常访问了。

    只是不明白问题是怎么出现的。之前我是没有手工设置site url的。

  • jira. svn和fisheye集成中的问题

    2008-10-16 16:27:45

    首先,集成已经成功了。在JIRA中的SVN配置中,选择weblink为fisheye.下面显示的一些File Added Format等都是默认的,看帮助文档只是提到要按照fisheye的安装进行修改。但怎么修改,却没有提到。

    配置完成后,点击Subversion Commits 下修改文件的链接,报404错误。我直接输入文件的链接也不能打开。

    我从FISHEYE中查看,发现要这样才能浏览到项目的具体信息。 http://hostname:port/browse/project_name.

    所以就将WEB_LINK的Format的前面修改为:http://hostname:port/browse/project_name.

    然后就搞定。

     

    上面的配置就行,下面的项目配置就OK.

    不过有个很麻烦的事情,就是WEBLINK配置完成后,修改提交不管用。总也改不了。要删掉项目,重新新建。就好晕啊

  • JIRA3.12与SVN的集成插件选择

    2008-10-15 09:04:14

    这两天,正在研究SVN与JIRA集成,发现JIRA中只能与其中一个版本库集成,而不能与所有版本进行集成。由于输入http://hostname/svn      总是报403 权限不够的错误,查询了许多资料,在SVN1.3版本后,由SVNListParentPath on 来控制可以显示库列表,但尝试了N次,却总是不行。最好才发现,原来是<Location /svn/>  而不是<Location /svn>,但SVN的教程中却是后者,比较郁闷。访问也是 http://hostname/svn/      这样就可以显示库列表了。      

  • SVN多库显示库列表

    2008-10-15 09:03:27

    SVN 多库列表显示。由于输入http://hostname/svn      总是报403 权限不够的错误,查询了许多资料,在SVN1.3版本后,由SVNListParentPath on 来控制可以显示库列表,但尝试了N次,却总是不行。最好才发现,原来是<Location /svn/>  而不是<Location /svn>,但SVN的教程中却是后者,比较郁闷。访问也是 http://hostname/svn/      这样就可以显示库列表了。      

     

  • trc文件的无限扩张

    2008-09-28 14:55:32

    这次测试中,遇到了一个问题,测试过程发现数据库服务器的CPU过了一会就涨到了100%,感觉奇怪,去一查,发现数据库服务器的硬盘空间满了。

    原来在性能测试过程中,TRC后缀的跟踪文件太大了,有70多个G,把硬盘给占满了。最后,请教公司的DBA,才搞定。限制TRC文件的无限制增长。

    --登录数据库
    sqlplus "/as sysdba"

    --;查dump文件存储路径

    show parameter core_dump_dest;

    --查dump文件大小设置
    show parameter max_dump_file_size;

    --修改max_dump_file_size配置
    alter system set max_dump_file_size=500000 scope=both;

     

    修改后,终于搞定。

  • 组合查询的参数化

    2008-09-22 10:36:25

     

    测试GIS中有组合查询。主题词和地址进行组合查询。

    1、参数的选择
    主题词:主题词包括一级、二级和三级主题词。在参数选取中不区分主题词级别,将1、2、3级主题词都做为查询条件,在测试时随机选择。
    地址:地址在数据库中存储的是完整的地址。根据实际需求,一般会选择前三个字与主题词进行组合进行查询。在数据库中使用select distinct substr(address,1,3) from customer; 选择地址的前三个字并且不重复的记录,做为地址参数。如果参数超过65534,就需要使用ULTRAEDIT进行编辑,不能使用EXCEL.

    2、脚本的验证。由于组合的条件有一些是查询没有结果的,需要手工选择组合后查询有结果的参数。可以在客户端先进行查询,得出查询结果,然后将主题词和地址分别放在各自己参数表的第一行,然后选择顺序执行,以验证运行的结果。不过,在执行场景时,要记得将参数表的执行方式改回到随机方式
  • 如何判断LR事务是否成功

    2008-09-16 15:40:18

    如何判断LR事务是否成功

     

    这周测试到ECOM项目的订单处理,操作过程为打开已提交,未完成的订单,将其状态修改为正常完成,确定。

    如何判断订单处理事务是否成功完成。可以在脚本中使用判断提交表单是否成功和检查点来区分事务是否成功;也可以在场景运行完成后来判数。

    在脚本中。1、订单处理怎么样判断是成功的。LR提供判断事务是否成功的函数。使用lr_start_transaction和lr_end_transaction.在事务结束时判断事务是否成功。

    lr = web_submit_data("operate.do",
    "Action=http://172.16.91.6:10080/ecom/hotel/order/audit/operate.do?op=audit&bookId={bookid}",
    "Method=POST",
    "RecContentType=text/html",
    "Referer=http://172.16.91.6:10080/ecom/hotel/order.do?op=edit&bookId={bookid}&module=manage",
    "Snapshot=t11.inf",
    "Mode=HTML",
    ITEMDATA,
    "Name=bookStatus", "Value=2", ENDITEM,
    LAST);


    wi= web_image_check("savesuccess", "Alt=保存成功", LAST);
    if (lr==0&&wi==0) {

    lr_end_transaction("订单处理",LR_PASS);

    lr_log_message("订单处理成功,订单号为:%s",lr_eval_string("{bookid}"));
    }

    else

    { lr_end_transaction("订单处理",LR_FAIL);

    lr_log_message("订单处理失败,订单号为:%s",lr_eval_string("{bookid}"));

    }

    lr为submit事务的值,如果返回0为事务处理成功。
    wi= web_image_check("savesuccess", "Alt=保存成功", LAST); 是使用图片检查。检查图片中是否存在“保存成功”的提示,如果存在,wi返回值为0.根据lr和wi的返回值,判断事务是否成功。(需要在运行时设置中设置检查检查点)

    以上两项是在脚本的判断事务是否成功。

    场景执行完成后,一种方式可以查看“订单处理”完成的事务,与数据库的订单的状态改变的数量来比较(在数据准备时,先记录订单正常完成的数量)。 第二种方式是查看执行日志,统计日志中事务成功的记录数。(需要设置运行设置中设置输出日志)
  • QC客户端连接不到服务器

    2008-08-29 10:14:47

    客户端在操作时,网络中断,网络重新连通时,打开QC,报错。并且提示一些组件未下载。如图:

    按以下步骤进行检查:

    1、检查QC服务器没有使用代理

    2、清除CACHE,COOKIES,重启浏览器,或重启计算机。

    3、检查QC服务器的路径名、参数是否正确。

    4、ActiveX组件最好使用客户端安装(查看ADD-IN),而不要从服务端直接下载

    朋友告诉我,可以装QC EXPLORE.

    我自己重启了浏览器,就搞定了,所以没有试

  • 职业发展瞎谈--简历篇

    2008-08-27 09:26:40

    本来不想写的,这类东西太多了。不过这两天面试了几个人后,感触较多,就发发牢骚吧。

    这几天收到7、8份简历,发现都来自某地的不同大学,并且都是毕业后有一年的测试经验,我还想着,原来这个地方的测试业都发展的这么好了。广州发展的倒感觉慢了些。 

    面试了几个后发现有些问题:

    1、不同大学,不同的工作经验,但却有着相同的项目经历。都包括OA项目和太平洋网上商城。

    2、问过他们相互不认识,简历无抄袭,也没有一起参加培训。

    3、可能大部分公司都有OA项目吧,但查了一下所在的公司,发现有些公司根本就没有OA项目,有的公司有,但主要业务不是OA,象有一家公司是做GIS的,但此员工居然不知公司是做什么的。

    4、也不是同一个地域,在网上把OA项目的介绍一查,发现居然还有别的城市,也有这样的简历。

    5、精通了很多,面试时却发现基本的测试知识都没有掌握。用了工具,却根本不知道工具是做功能还是性能测试的。

    我无语,在浪费了查看简历的1个小时和面试的1个小时后,对测试应聘人员有些失望,非常失望。

    我一直认为,初级人员的简历可以写的美化一些,夸大一些,更可能获得面试的机会,但绝不是造假。

    唉,不评论吧。因为我无法知识简历如此雷同的原因是什么。

    最后引用一句话:“如果有一种语言,人没有办法用它说慌,那我一定要学;如果有一种语言,人用它说谎而不会被发现,这种语言我更要学”

      既然说谎不会被发现的语言还没有诞生,就让我们尽量多些诚实吧。

  • 我自己表扬了自己

    2008-08-13 17:17:59

     

     

    每天睡觉前给儿子讲故事,都要讲一个“今天乖不乖”的故事,象往常一样,

    问他:“中午饭吃的快不快?”

    答:“快。”

    再问:“老师表扬你了没有?”因为小班的时候吃的快也会受表扬的。

    答:“没有,吃饭快老师不表扬,帮老师搬椅子才会表扬”。

    问:“那你搬了没有?”

    答:“搬了。”

    问:“老师表扬你了吗?”

    答:“没有,老师没有看见。”

    听到这里,我有些担心,怕会影响儿子的积极性。可马上听到儿子说:“我自己表扬自己了。”我笑,笑完后倒觉得很有些道理。小孩也知道只要是对的,哪怕老师没有看到,自己也为自己做的事情感到自豪。我们工作呢?在领导看到的时候肯定是振奋百倍,但你的成绩领导没有看到呢?你会不会也表扬自己,为自己加油呢?

     

    忘记领导吧,自己表扬自己!

  • LR9.1 定义SLAs--平均响应时间度量

    2008-08-13 16:49:22

          LR9.1分析器里增加了SLA报告,其实就是把整个运行过程分解,对每个阶段都能够进行分析,并能列出每个时间段是否成功、失败,并对详细的状态进行分析。下面的例子是以平均响应时间为例的。 

         SLAs 使得你能够为你的负载测试场景定义目标。在场景运行时,Controller度量性能和收集数据。Analysis将这些数据与SLAs中定义的阀值进行比较。

    一、            定义SLAs

    当你设计负载测试场景时,你可以为性能度量定义目标或SLAs。当你运行场景时,LR收集并存储性能相关数据。当你分析运行情况时,Analysis将数据与SLAs进行比较,以决定定义的度量指标的SLA状态。

     

    根据你的度量值,LR按照以下方式之一确定SLA状态。

    按照运行的时间间隔确定SLA状态Analysis按照设定的时间间隔显示SLA状态――如:每10秒-作为运行时的一个时间轴。

    在整个运行上确定SLA状态。Analysis为整个场景的运行显示一个SLA状态。

    二、            按时间间隔定义SLA目标度量

    对于平均交易响应时间(Average Transaction Response Time)和每秒错误数(Errors per Second) 两种度量,Analysis在每个时间轴内按照设定的时间间隔显示SLA状态。

    在时间轴内的每个时间间隔,如10秒钟,Analysis检查度量指标的性能是否符合在SLA中定义的阈值。

    三、            为平均响应时间度量创建SLAs

    1.            打开SLA向导

    Ø                    如果是在Analysis中,选择Tools>Configure SLA Rules。点击New

    Ø                    如果是在Controller中,在设计标签中,在SLA面板中,点击New。打开了SLA向导。

     

            

    2.              度量――选择一个度量值。

      对于平均响应时间,LR在运行中使用设定时间间隔评估SLA状态的方式。

      SLA status SLA status determined per time intervals over a timeline下,选择Average Transaction Response Time.

    3.              交易――选择交易

      Available Transactions列表中,做为你SLA的一部分,选择你想评估的交易,点击Add. 你可以按住ctrl键选择多个交易,选中的交易会显示在Selected Transactions列表中。

    4.              负载标准――选择负载标准

       为你的目标选择负载标准并定义适当的负载值范围

    Ø        Load Criteria框中,选择你想使用的相关的负载标准,如Running Vusers

    要定义一个没有负载标准的SLA,Load Criteria中选择None

    Ø        设置小于负载的范围。在Less than框中,输入一个范围的最大值。这个范围在0和你输入的最大值之间,但不包括最大值本身。

    Ø        设置包含(in_between)的范围。在Greater than or equal to/Between框中,选择Between,输入最大值和最小值范围,最小值包含在范围内,最大值不包含

    你可以设置3in_between范围。

    Ø        设置超过负载的范围。在Greater than or equal to/Between框中,选择Greater than or equal,输入范围的最小值,最小值包含在这个范围内。

    有效的范围应该是连续的。跨度从0到无穷大。

    5.               阈值――设置阈值

      为你要评估的每个度量设定最大的阈值。

    Ø        如果你在前面的步骤中定义了负载标准,你要为每个交易的负载值范围定义阈值。

    Ø        如果你没有定义负载标准,你要为每个交易定义一个单独的阈值。

    如果你想为所有的交易设置一样的阈值,在下面的Apply to all中设置阈值,然后Apply to all transactions

    完成。可以退出。也可以设定其它的SLA

     

     

     

  • 谈一下我关于测试意识的想法

    2008-08-07 17:51:04

    一、     什么是意识?

    意识是生物和非生物共同具有的一般规定和本质。是人脑从生物和非生物的行为和存在中抽取出来的普遍性规定,是存在于世界万物之中的绝对抽象事物。

    意识和本能的最大区别在于,前者是在物质作用下形成的,后者不需要物质作用是先天具有的。我们在刚出生的时候,就知道吃、喝、拉、撒、睡这五件事,并没有外界作用。

    而意识的形成一定要有外界的作用,意识可以分为深层意识(潜意识)和浅层意识(表意识)。 表意识在你接触到外界事务时,会进行确认、分析、决定,是一个思考的过程;而潜意识在我们使用的时候,我们甚至都不会注意到它的存在。就象天生就会一样。

    二、     什么是测试意识?

    首先,测试意识是一种意识,需要外界的作用,测试不是一种本能。

    而当你拿到一个待测试软件后,你一般会对软件进行分析、思考、行动一系列的过程,是你的表意识在起作用。而一般人们说的,高手一眼就能看出问题来,让他自己说为什么?他却不知道,这就是潜意识在起作用了。那我们下面说的测试意识就是指测试的潜意识。

    三、     测试意识可以通过学习掌握吗?

    人们通过表意识进行学习和思考,所获得的新知识和新技能也首先表现为表意识,但如果同一种学习过程重复不断地进行(这样的过程叫做“强化训练”),那么大脑对所获得的新知识和技能的运用就从表意识就转化成了潜意识,即形成了条件反射

    所以潜意识是可以学习和修炼的。不过这是一个比较深层次的修炼。它对我们的学习和成长非常重要。只要有决心,有毅力学习,就一定会达到目标的。不是那个人天生就是测试专家,每个专家的成长都必须经过学习和实践,然后不断地总结、升华,然后才有可能达成自己的目标,或者更上一层楼。

     

    四、     测试潜意识的表现

    1、用户思维

       在我们初做测试的时候,很多时候在站在开发的角度,或者是测试的角度来找BUG的。但实际上,测试要求的是以用户为中心,一切以用户为前提。那么在你做测试的时候,会有意识地站在用户的角度去考虑,这个提示是否合理,是否人性化。这个界面,是否符合用户的使用。久而久之,就形成了潜意识。看到软件,就是站在用户的角度上思考,去找出软件中与用户习惯,用户思维不一致的地方,这就是用户思维。

    2、只要是软件,就有错误的意识

        你刚学测试的时候,看到软件,尤其是高手写的软件,并不觉得里面就一定有BUG。但只要是软件,就有错误的,因为软件是人写的,因为是人都会犯错误。这种观念被灌输多了,看到软件,立即就想找BUG

    3、测试方法意识

    你刚学习测试时,对于回归测试,就要对照一下回归测试的方法,一点一点分析要测试哪些相关的范围,测试到怎样的程度。如果有了回归测试方法的意识,一看到开发的修改,马上就说,这个BUG可能影响那些功能,影响有多大。你把XX几个用例重新跑一下就行了。

     

    五、     怎么获得测试意识?

     

    1、学习;2、实践;3、总结;4、升华

     

    首先,学习是获取知识的一个重要过程,如果通过学习获取了知识,当遇到问题时,虽然你一下子想不出怎么解决,但你可以想一下,你学习到的方法,参照学习过的东西去得出一个解决方案。此时,只是表意识在起作用。

     

    在通过不断的实践后,你将你的知识运用到实践中解决了问题,那些这些知识在你的意识里更加牢固。但此时,你可能只是具备解决同样或类似问题的能力。如在某个测试工具中遇到了一个问题解决了,但在另一个测试工具中遇到问题,你却不知道如何处理。

     

    总结就是将你的经历沉淀,成为经验。也许一些人经历到一个问题后,就不会在同一个地方跌倒。而另一些人遇到同样的问题时,却没有更好的解决方法。这就是总结的能力不同。所以我们说经验,并不是说你经历过多少个项目,而是说你经历过了项目,从项目中学到了多少东西,成为你自己的能力。

     

    升华:从量变到质变。  量是你的积累,就是你的经验。质变,就是你整个能力的提升。需要多少量的积累,才能上升到质的变化。这要看你的努力,以及你的目标是否明确、专注。这在职业生涯规划中也有体现。如果你的职业规划不明确,或者在你中间与职业目标有偏离,都无法在你的职业中加上重的砝码,这就是有些人几年就可能成功,有些人却总在一个平台上绕圈。  升华还表现在,你对本质的抽象。如测试管理工具,不论是QCTESTLINK、还是其它的测试管理工具,只要软件测试的过程没有重要的变化,那么所有的这些工具就都是相类似的。 测试方法也一样,你测试软件和你测试一根铅笔并没有什么本质的不同。所以建议下次面试别人的同事,就不用拿来搞个出其不意了。

     

     

  • VuGen工作流

    2008-08-06 16:19:36

     

     

    1.         录制脚本

    a)         选择协议

                             i.              录制协议时只考虑客户端与它所连接的服务器间的协议,如B/S结构,一般选择HTTP协议,如果用户界面使用XML定义和描述,可以选择webservice协议(infogis项目),但协议只支持最多100个用户

                           ii.              HTTP协议:录制考虑

    1、  Recording Level:如果程序中包含了Javascrīpt并且该脚本向服务器产生了请求,选择URL-based scrīpt,否则选择HTML-based scrīpt。在advance选项中选择默认方式。

    2、  Browser 除对浏览器有特殊要求后,都默认或选择IE进行录制。

    3、  Advanced:需要录制思考时间,并支持字符集:UTF-8

    b)        初始化、活动、结束

    LR场景在执行时,只执行一次initend中的脚本,但可以对action中的脚本进行多次迭代,所以要进行区分。如进行“需求录入”测试时,登录退出只执行一次,那么“登录”和“退出”脚本可以分别放在initend中,而“需求录入”脚本放置在action中。     

    c)        添加事务

    事务可以在录制脚本完成时添加,但最好在录制时添加重要的事务,以防止多个事务在脚本生成后无法区分开来。

    2.         验证脚本

    a)         录制完回放

                             i.              录制完脚本后,应该立即回放一次,主要是目的是验证脚本中是否存在关联,象动态的端口或session值,服务器端每次返回的不一样,如果下次客户端提交上次服务器端返回的结果,就会报错。此时,可以让LR自动检查关联,或者手工设定。手工设定关联时,可以以树形脚本的形式,查看服务器端返回的内容,以确定哪些是需要关联的值,也可以明确一下关联值的左右边界。

                           ii.              有一些内容是录制完成后,无法重新回放的,象增加订单,如果订单号重复,是无法插入到数据库中的,此时,需要对脚本稍微地修改一下,再进行回放。

    b)        查看回放结果

                             i.              回放完成后,可以查看回放的结果,只有回放结果中显示脚本回放正确,才可以进行下一步的工作。

    c)        验证数据库和客户端

                             i.              如果脚本执行完成后,在数据库中会增加记录,或者在客户端可以查看到,需要进行验证。如增加需求书,在数据库中可以查到新增的记录;而登录,有时有会有登录日志可以查看到。

                           ii.              如果一个脚本中,分多个事务,并且多事务可以分别验证的话,需要设置断点,对多个事务分别验证其正确性。

    3.         增强脚本

    a)         增加交易

                             i.              脚本录制并验证成功后,需要对脚本中的交易进行明确,如“需求录入”,前面有“打开需求书”页面的过程,此时要添加交易,把脚本按交易划分开来。

    b)        参数化

                             i.              如果脚本中有需要变化的值,需要进行参数化。参数化的内容需要和开发讨论,主要的原则如下:

    1.         真实:尽量模拟实际环境,其参数执行的方法也要尽量真实。如删除时,需要数据库中存在足够的数据,并且每次只删除一条,那么参数中应该选择唯一值的方法。

    2.         数据量:数据量要保持足够,最保守应该同数据库中的数据量在同一个数量级上。少于一定量数据的话,最好将数据库中的所有数据都拿来做参数。

    3.         数据来源:应该从数据库中导出。如果数据库中无数据,可以自己编造一些参数。

    c)        检查点

    d)        集合点

                             i.              使并发用户在集合点前等待,然后统一释放,以给服务器最大的压力。一般我们的测试尽量模拟真实环境。这种情况,象一些公用网站会发生。如奥运订票系统,一打开,马上就会有非常大的压力发生,这时需要增加集合点,模拟大而集中的压力。

    e)         备注

                             i.              好的脚本象好的程序一样,需要明确详细的备注,以备维护和重用。

    f)         日志

                             i.              输出日志到文件是查看结果好的方式,在运行后可以用来查看交易的详细信息

    4.         准备负载

    a)         要重新验证修改后的脚本。尤其是参数化后,参数选择的方式是否同设置的方式一致,结果是否正确

    b)        可以检查检查点、和日志输出是否正确。

    5.         完成脚本

     

    里面还有很多东西未写:(

  • 订单号必须连续的处理和性能问题

    2008-08-05 14:51:09

    交易,会自动生成编号,同类需求的编号必须是连续的.

    两种处理方法:1、线程同步
                  2、数据库锁机制


    1、线程同步的方式,无法支持多应用服务器集群

         线程同步的方式:由于在应用服务器上就排队等待,客户端响应时间会增加。

    未解决的问题:10用户时响应时间超出了30用户,处理时间超出了LR设置的120超时,所以LR事务失败,但数据库中插入的数据成功。

         不知道是不是共享资源释放有问题,导致

    2、使用数据库锁机制。

        没有使用触发器+序列号的方式,因为如果事务回滚的话,序列号会丢失。

        开发自己写了一张表,存放记录,生成订单时锁住表中的一条记录。

    未解决的问题:5用户运行一段时间后,访问数据库的线程被挂死,等待客户端发送请求。不清楚是不是客户端请求未发送。
     
        使用的程序加锁和使用数据库锁有什么区别?

    3、也可以使用文件锁的方式

  • 性能测试遇到的问题

    2008-07-30 17:20:38

    这两天测试一个项目,遇到问题;

    1.脚本有上传附件的功能,没有考虑到附件会存储到数据库,结果表空间满了,直接报错。表空间是自动扩容的,但磁盘没有空间了。

    2、交易,会自动生成编号,没有问清楚同类需求的编号必须是连续的,所以只增加一类需求时,永远都是线性的。 结果修改了测试方式,在七种需求中,随机选择。

    3、存储测试结果时,运行时间太长,结果磁盘空间不够,LR DOWN掉了,什么也没有存下来,所以下次一定要注意,不能存LOG,不存LOG磁盘空间也要足够大

  • 职业发展瞎谈--面试薪水篇

    2008-07-22 17:35:24

    面试:如何谈薪水

     

    前提:1、你要理解自己的能力

          2、你要理解当前的行情

     

    首先你对自己的能力要理解,知道自己值多少钱。当然,如果你是新人,那就没有什么可以谈的了,很多是找到工作就不错了,因为新人急需要工作去赚经验。那么面试中如何获得自己满意的薪水呢?

     

    其实面试就是谈判。在谈到薪水之前,面试方对你的能力应该了解的差不多了。而你也应该对此有些感觉。如,你在哪方面表现比较好?对方需要什么样的人?他们对你是如何定位的?你在公司的发展前景如何?  知道了这些,你应该可以提出自己的工资要求了。当然很多人在简历上已经写明了工资要求,但面试后可以做些调整。如果你想了解的更清楚些,可以再问一下公司的福利、加薪情况。因为很多公司的工资是小部分,福利是大部分的。

     

    那么,正式进入谈判了。

     

      谈判第一条:你上家公司的工资会做为新公司给你工资的参考。所以你在原来公司的工资高些当然好了。不过不是说你工资本来很低,要说慌。而是说,你不要完全只列你原来公司每个月拿的那些,可以把年终奖、福利、过节费、公积金、甚至社保,都总算起来,然后平均。一方面,这是你真实的总收入。你可以与新公司给的比较一下,免得新公司给的工资不错,进去后才发现什么福利都没有,算下来工资不高反而低了。

     

      谈判第二条:你拿这么多,是因为你值这么多,并且能为公司创造值这么多钱的价值。很多人面试,都提到物价贵,生活艰难,所以要这么多钱。而我不觉得如此,除了应界生,公司当廉价劳动力,考虑一下生活问题。其它的要凭实力。 比如说,我要8000元工资,我又不养家,那公司就不给了吗?我值这么多,你管我拿了钱干什么呢? 那你说值,谁知道啊?这就是面试的作用了。面试是做什么的? 所以面试时,你具备的能力的行业价格,再加上,你用你的能力为新的公司能做什么,这就是你薪水的基础。所以,不要跟我说,你要养家!

     

      谈判第三条:不同阶段的人关注点不同,新人更关注机会;有经验的人更关注发展、工资或者稳定等等。 所以薪水不是唯一关注的。所以薪水是有浮动空间的。那么,在面试前考虑一下吧,你到底关注什么呢?

742/4<1234>
Open Toolbar