人生在世如身处荆棘林中,心不动则人不妄动,不动则不伤; 如心动则人妄动,则伤其身痛其骨,于是体会到世间诸般痛苦

有问又有答!

上一篇 / 下一篇  2010-06-29 13:22:47 / 天气: 晴朗 / 心情: 高兴 / 精华(1) / 个人分类:软件测试理念

1.质量管理
在质量管理这一块,我想请教你,作为软件的过程QA应该如何去Q才能拿到A?如何去进行数据的收集,度量和分析?这个过程应该怎么去做才更有效?
另外,作为产品QA来说,对于测试用例来说,评审的时候比较关注到用例的一个对测试需求的覆盖率,这个覆盖率是指的广度,那深度这一块又是否需要把握?需要把握又该如何把握?因为,对于业务的掌握度决定着覆盖的广度和深度(我是这么认为的)
答:
如何Q才能拿到A,数据收集、度量和分析以及怎么做才更有效,这些问题都太大,我没法具体的回答你,建议还是找本书去看吧。或者碰到具体问题的时候,我们再交流一下。
那么测试用例评审的深广度这里,我说说我的看法,看看能否给你帮助。
测试用例评审时,要注意对测试需求的覆盖,那什么决定了覆盖的广度呢?我觉得是技术的覆盖和需求的覆盖。技术这里指设计用例时候用到的测试类别,测试用例设计方法等。打个比方,在测试一个web表单提交的业务需求时,你对业务掌握再全面,也不会知道这个表单提交时可能存在SQL注入等安全问题,这其实就是测试类别的方面的覆盖。
那测试用例覆盖的深度又是如何体现?我认为在于对测试技术和测试需求的深度挖掘。众所周知,测试用例设计时,最难的不是覆盖需求文档中的东西,而是很多隐性的需求、很多异常处理方式的覆盖。

广就是用例没有漏掉需求点,没有忽略所有的测试类型和测试方法。
深就是用例挖掘了隐性的需求,考虑了很多异常情况。
2.对于性能测试来说,涵盖的知识非常广泛,那么应该如何去把握一个度,如何成为一名合格的优秀的性能测试工程师?
答:
首先,成为合格的”“优秀的性能测试工程师并不是那么容易,我认为需要具备
2个方面的素质:一是要熟练掌握大量的技能和知识;二是要经历一定数量的性能测试项目,才能算毕业。测试项目的经历需要有机会,我主要说下我认为需要掌握的知识技能吧:

基础:系统学习一种或几种编程语言并熟练掌握。
学习编程语言是做性能测试的基础,因为涉及到实现测试的时候,肯定涉及到具体的编码。那么我们在学习的时候,可以根据实际的方向定义如下目标:
A
以主流测试工具(软件)所使用脚本语言为目标。
  
语言结合实用工具,有利于提高语言在工具中的应用认识,也同时可以更好的认识测试工具。

·        LoadRunner9.5)使用的脚本语言可以为CC#VB.NETVBjava

·        Robot则是SQA Basic(类VB);

·        WebLoadJavascript

·        RTF则是java.NET

B以当前可接触到的编程语言为目标(目前负责的测试项目)。
第一呢,学习好被测试项目、系统采用的编程语言对于更好的认识该测试项目、系统有很大的帮助,而且在学习的过程中可以直接请教程序员从而不断的提高自己的水平,因为在学习的过程中,一个可以不厌其烦为你解答的初学者问题或者一些小白问题的老师,很难找到——即使你花钱去培训学习。第二个好处就是永不落伍,至少如果有新技术或者新工具出现,因为语言适用的局限,都会采取主流的语言,以便可以更快更好的推广;建议可以系统的学习
javaC.NET中的一种。
C以主流脚本语言为目标。
脚本语言有一些,比如
PerlPythonJSVBS等;这些语言都具有跨平台的特性,简洁高效,语法通俗易学;对于不依赖于性能测试工具的测试框架和体系,使用和实现性能测试更为方便。有的脚本语言第三方类库庞大到无所不能,比如Perl
掌握:一种通用规范的性能测试过程。
  
虽然说了通用,其实我不认为任何一种工作过程是可以大家都通用的;虽然说了规范,其实我的意思只是过程前前后后每步都有控制就可以了。得,不废话了,那么有了基本的编程技能之后,下步我们应该学习性能测试都有什么东西、如何做,其实这些就都包含在性能测试过程里。这个阶段,主要学习掌握2个方面:
A
、 性能测试的工作流程。

·        接到任务后,最开始应该做什么?

·        如何定义测试目标?

·        如何编写测试计划?

·        测试场景如何设计?

·        测试报告如何编写?

B、 性能测试实现的过程。
  
这里我觉得可以学习一下用LoadRunner的整个过程,先是录制脚本(Virtual User Generator),然后场景设计和监视(Controller),最后分析结果(Analysis)。自己写工具脚本,过程可以借鉴LR的。

重点:性能测试目标,串起整个性能测试过程的基础。
  性能测试需求,我这里叫测试目标,我认为是整个性能测试中最基础的部分。知道了如何确定测试目标,就想办法为了验证测试目标(所有的测试指标)而实现测试,获得测试输出数据和测试目标进行对比分析,然后进行测试汇报。我博客有个以前写的测试需求获取的文章,大家可以参考一下。
http://www.51testing.com/index.php?uid-6343-action-viewspace-itemid-16336
规范:测试汇报和经验总结。
  
这个就不多说了,只说一个我的经历给大家提个醒吧。有一次我做测试报告,写的很详细,画了好多图表,粘了好多数据,结果到了领导那里,被批评了一顿,他根本不看,就问我哪个指标不行,哪块儿有问题,我很纠结啊。不得已我以后写报告都写2个,一个简易的,一个详细的。简易的就是领导要的那些,详细的包含了很多数据记录和分析。
问:我个人认为,性能测试工程师的灵魂价值是对于场景执行后的问题的分析和调优,但是这一块似乎也是很多性能新人的害怕点,面太广。该如何去执行和提高呢?
答:
如我上面问题回答所说,其实我个人认为测试准备中的性能测试需求,也就是测试目标的制定如果做的比较好,那么测试工作中后续的结果分析,其实就是从结果中抓数据(结果收集)和测试目标比较(结果分析)而已,并不具有太大难度,我认为不能称为灵魂价值

另外,性能测试调优分为好几个大方面:操作系统配置、
web服务或应用服务配置、网络传输、负载均衡、技术实现等等,是个很大知识面。
其实我一直都是认为,调优和性能测试应该划分开称为
2个职业:配置调优应该是系统部系统工程师做的,而性能测试工程师只负责收集提供测试结果和对调优之后进行回归测试,应用技术实现调优应该由架构师或开发工程师来做。不过这还是我一厢情愿的一个想法,很多公司招人的时候还是会考虑成本,招一个就要求全能,恨不得每个职位都招个要最少钱的奥特曼,社会的情况是这样,我们要想找一份相应的工作,那么只好各个方面都要有所了解。
在这里我建议大家,在选择学习方向的时候,最好只挑一门来精通:
比如比较热门的微软
Windos NTlinux这样的操作系统;
比如
apachetomcat以及glassfish这样的web服务配置;
比如网络传输通信里面应用比较多的
http协议、udp协议;
比如F5公司这类负载均衡设备设置、DNS轮询这类负载均衡知识。

 

 

 

我的问题:
        
做了近两年的测试管理工作,对测试工程师的绩效考核一直没有做好,希望您能指点一下
对于做产品测试的工程师应该如何考核,谢谢
!
答:
首先,我们要肯定,做考核不是为了形式上的考核;我们做考核是为了给手下员工一段时间内的工作目标达成和工作成果做一个客观的公平的评价,并根据评价的好坏进行奖励或者调整。为什么要先说这个呢,因为在我的工作经历里,至少
2家公司的考核都只是形式上的,简单的描述一下工作内容,弄个百分比,然后就等着主管领导签个肯定的评价就完事了,然后每个人都能拿到奖金。

测试人员的考核方法,在论坛里一直都争论的很激烈,大家都说非常难考核,这是不争的事实,因为考核目标最好是量化,然而测试的量化目标统计上存在着很大的不公平性(比如同一个项目有人负责测试基础功能模块,有人负责测试业务功能模块;有人负责的模块多,工作量大,但是
bug少,有人负责模块少,但是bug多而且比较重要),而不能量化的目标又很难界定(比如测试完成的效果需要产品上线很长时间的使用后才能看出来)。我最后采取的方法忽略了量化的数据,对量化的数据(比如用例数、bug数和对应的分析数据)进行非量化处理再加入考核(对实际结果评等级,分为优良中差四个等级,直接影响KPI得分即可)。

下面是具体的步骤,看看能否给你帮助:
1
确定考核时间段
建议按季度;如果你们按月发奖金,那么按月份也行。
2
设置绩效考核目标
根据职位的不同分别制定不同的考核目标。
根据所负责项目的不同分别制定不同的考核目标。
3
进行考核
开考核通知会,详述考核方法和注意事项。
发自评表,进行自评。
收集自评表,进行领导评分。
上级领导审核,签字确认考核结果。
4
考核结果处理
这里说一下,考核过程一定要公正严肃(如果考核结果和奖金挂钩就最好了),考核结果出来以后,一定要奖惩分明,否则忙活了半天,评价也出来了,结果啥用没有,那还有什么意义。另外,建议在考核以后,分别找每个人聊天,该注意的要他们注意,该表扬表扬,该批评批评。

再传一个我写的1个考核文档,还有一个在其他人的考核表上做的自己的考核表,给你个参考吧,见附件。

附件

 

考核.rar(30.34 KB)

2010-6-17 16:20,下载次数: 35

 

 

 

 

有个问题请教下:
对于单机的性能怎么测试,例如手机上一款软件的性能?

答:
单机的性能说实话,以前并没有太多人关注,测试手段也一直都是手动操作,手动记录。而且,不同的硬件环境对测试结果影响非常大,鉴于硬件环境的复杂多样性,操作系统的复杂多样性,所以想要完成测试很难。

我也没有这个方面实际的测试经验,不过我和一个朋友曾经在QQ上对这个测试内容进行过切磋讨论,我可以把我们的结论给你说一下,也希望可以帮到你。

首先,必须肯定这个测试是有必要的,那么我们如何实现测试呢?手动操作可以,手动记录?太不严谨了。所以我们认为,在程序开发的时候就建立测试类,最后编译debug版本用于测试,在每个子功能单元前后分别记录当前的时刻,在所有操作完成以后分别统计计算每个功能所花费的时间,这样可以计算出每个单独操作或者集群操作的响应时间;在进行操作前开始使用工具或者自己开发相应的工具,按一定频率对系统资源使用情况进行采样,并记录;然后结合测试类记录的操作中产生的时刻,从而可以分析出不同的操作或者集群操作对系统资源的使用情况,进而分析操作和集群操作对性能的影响。现在相应的技术也在不断发展,以后也许会出现对应的测试工具,方便我们进行测试。

对于计算机系统上的单机软件测试,测试环境事先进行选取确定,否则因为硬件配置的不同我们可能需要进行无穷的测试。所以我建议在测试准备时,充分分析客户方面的具体环境,挑选出具有代表性的环境来进行测试。

对于手机上的软件的性能,因为没有做过相关的测试,了解有限,只是建议可以按我上面的思路去尝试实现。

 

 

 

 

 

齐老师,您好!局域网中其它机子都可访问TD只有一台机子出现如下情况
Microsoft Internet Explorer : 4.0 (compatible; MSIE 6.0) is not supported!

我以前可以登录,可是不知道为什么突然这样了?是不是我安装了什么有冲突,要不就是我删除了某些重要文件?用别的浏览器可以登录的,如360,世界之窗。感谢您在百忙之中给予解答啊。支持您。

答:

这个是TestDirector的兼容性问题,我看了后面有人给你回答了,你去试试。可以肯定是IE的版本问题,TD是可以设置支持哪些版本的。

怎么有效的测试啊?

做功能没讲很枯燥,有时候要反复测一些功能。其时可能还有未发现的bug。但是由于心理上的疲倦,感觉好像没有缺陷,不想再继续找下去了。此时应该怎么调节,去更好的工作呢

答:
这个问题是一个非常常见的问题,项目和产品刚开始测试的时候,因为业务需求都是新接触的,所以每天都接触新的东西,这个时候即使做了一些重复的工作,也是可以忍受的,不会对工作产生不利的影响。
然而到了项目测试的中后期,这个时候需求基本固定,测试的内容基本固定,每天就是不断的改
bug和复测回归中,时间久了就一定会出现疲倦、应付以及惯性思维等问题,这些问题如果不能克服,会极大影响工作效果。那么怎么调节呢?我的建议如下:
首先,我们都知道,任何一个项目和产品,都不可能完全消灭所有
bug;所以我们作为测试工作者,就必须时刻努力去发现每一个隐藏的bug,这是测试工作的基本价值,是测试从业者基本的精神信仰;所以第一个调节的角色就是自己,要明确自己的工作目标,鉴定信仰才有源源不断的动力。
其次,还是自己来调节,从每天重复的工作中,不断的挖掘工作的乐趣,让自己的工作更有成就感,这样才不会疲惫。测试工作的乐趣其实还是有很多的,比如发现了一个极其弱智的
bug,我们可以从心底好好的嘲笑一下开发人员(当然明摆着去嘲笑他们可是不可取的);比如发现了一个重大的bug,是底层应用的bug,修改起来非常困难,我们就看着平时大爷似的架构师们、开发们去疲于奔命吧。
再次,在感觉到疲惫的时候,可以采用学习的方法来调节,比如制定一个长期的循序渐进的目标,每天挤出半个小时去学习;或者每天半个小时去了解一下自己想要学习的技术知识。其实每个人每天都不能保证所有工作时间都能效率很高,都能集中精力,那么挤出平时自己效率不高时候的半个小时,对工作效果影响并不大。
最后,换个角色,作为一个测试团队的领导,那么在这个时候有责任,也必须要能注意到手下的工作状态,并及时进行调整。通常可以采用几种方式:一是制定好阶段工作目标,让手下在每个阶段结束时都能松口气,并小有成就感;二是调整测试工作计划,减轻手下的工作压力;三是安排一些集体活动,比如吃饭、唱K、郊游等活动(可向公司申请经费,也可以自助AA);四是安排一些技能培训,让员工主动的去学习,从而减缓重复工作造成的压力;五是选择适当的时间,和所有手下一对一的聊天,了解他们的想法,并告诉他们自己对他们的期望;六是争取一些精神奖励和物质奖励,不必太多但是效果肯定不错。
bug
是无穷无尽的,关键是保持心态,不要急躁哈。

 

114#大 中 小 发表于2010-6-17 16:40 只看该作者

回复keer2891的提问:

齐老师您好,我想问下

loadrunner中参数化SQL数据库,回放过程中能看到数据库的值吗?比如我参数化用户名,表中的用户名是a1,a2,a3,a4,a5.那我回放的过程能看到用户名a1a5都执行一遍吗?谢谢

答:
这个问题比较简单,如果只是迭代的回放,你可以打开日志就可以看到每次替换的值了,具体的操作方法:打开运行时设置(
Run-time settingsGeneralLogLog optionsAlways send messagesExtended log),然后勾选Parameter substitution即可。回放后,在Replay Log视窗里就可以看到蓝字的替换日志了。

如果在场景运行中,你想查看参数替换,那么稍微麻烦些,可以采取日志输出的方法,我这里就不详细介绍了,可以到我的博客中专门介绍的文章中看下。
地址:【明确

TAG:

aGame aDream 引用 删除 yangzy707   /   2010-06-29 13:58:54
LoadRunner可以输出的结果】http://www.51testing.com/index.php?uid-6343-action-viewspace-itemid-18124
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)