云淡风轻,静下心来,倾听内心的声音。测试圈的朋友们,欢迎加入测试杂谈QQ群:77358592。

发布新日志

  • 我的LoadRunner使用经历【原创】

    2013-11-04 15:13:58

    本文最先刊载于《51测试天地》第三十一期电子杂志,此处节选。

    有这样一件事情一直记忆犹新,刚入行时,通过LoadRunner实现了性能测试,过程之艰辛非三言两语能概述。

      那时,公司急于推销一款产品,网页版的即时通讯系统,类似于现在的WebQQ。公司Boss侃侃而谈,把产品的优点如数家珍般的对客户描绘了一遍。可是,在当客户询问Boss,你们产品的性能如何时,我们心里顿时咯噔一下,心想完了,Boss也面露难色,杯具了。由于当时仅对产品的功能和兼容性做了全面的测试,性能测试压根就没做过。面对精明的客户,公司也拿不出数据说服他们。最后,这单生意不出意外的泡汤了。领导当时触动很大,把测试召集起来,表情凝重,语重心长地说,生意谈不成,没关系,我们还有下次机会,关键是拿不出客户想要的东西。先前测试主要测功能,性能测试是我们的弱项,说明我们还有提高的空间,如果能把性能测试做好,一方面自己的能力也提高了,另一方面公司也能给客户提供有力的数据,说服他们买我们的产品。大家下去后好好往这方面努力吧。
      带着Boss殷切的希望,测试负责人安排了我开展针对公司产品性能测试的探索和研究。有幸搞性能测试,可能领导也是觉得我平时工作比较踏实,比较勤奋,内心自然充满了无限感激。可是,性能测试是神马玩意,用什么测,怎么测,测到什么程度,还真是一头雾水。那就用最土最笨的方法,上网搜,泡论坛。

    ……………………

    查看全文请点击下载:http://www.51testing.com/html/88/n-853288.html

      性能测试前的准备工作,前后花了将近一个月的时间,包括了解系统的架构,学习性能测试的理论知识,以及LoadRunner工具的使用等方面的内容。这一月,周例会是最难熬的,领导总是很关心的问,怎么样了,有进展吗,而我好像没什么可说的,也没什么实质性的进步,压力山大啊。这之后,有了一定积累后,就想把LoadRunner用在实际的项目中。
      真是说起来容易做起来难。录制了一个模拟用户登入登出的脚本。经过修改后,脚本可以回放,但是数据库的表中却查不到登出的用户。奇怪啊,明明回放成功了?!后来和MSN群友一起分析,我们一致认为是表面上成功了,实际上账号并没有成功登入系统。这个结论也得到了研发同事的认可。可是为什么会出这样的问题呢?经过查找,发现问题似乎出在了协议选择上。录制的时候只选用了Web(HTTP/HTML)协议,而实际上系统的实现不仅用到了Web协议,也用到了Windows Sockets协议。心中窃喜,以为找到了问题的答案,迫不及待的录制了多协议脚本,结果回放依然失败。真是希望越大,失望越大。怎么办?这个问题郁闷了好几天。
    周例会的时候,做为重点问题,研发和测试都在讨论。不知谁冒出了一句,会不会是因为密码做了SHA1加密后导致的问题?对啊,我怎么没想到啊。于是和开发一起分析了脚本,发现脚本回放时,提交了上一次经过加密后的密文,而此时服务器端已经生成了新的密文,两端密文不一致,使得验证失败,自然登入失败。此时,才真正有种豁然开朗的感觉,同时也说明理解系统的工作方式对性能测试而言是多么重要。找到了症结后,解决方法就简单了,做一个加密算法的Dll文件,并在脚本中调用。
      方法虽然简单,但操作起来还是出问题了。脚本加载了Dll文件后,然后通过加密接口对密码和随机数序列做加密运算,发现每次的结果依然不变。头大了,怎么可能呢,当时甚至怀疑起自己智商有问题。最后,多亏了群友的鼓励,是不是哪儿用错了?
      我反复的查看脚本的每一句,这才发现每次加密用到的随机数居然是一样的。问题就来了,随机数是服务器返回的,不一样才对啊!后来把书里的相关的内容又仔仔细细的看了一遍,终于找到了问题的解决方法,为了保证脚本回放时能够动态的获取到这个随机数,需要做"关联"操作。果然,做了"关联"以后,返回值正确了,感觉又前进了一步。

    ……………………

    查看全文请点击下载:http://www.51testing.com/html/88/n-853288.html

      在对系统做压力测试的时候,LoadRunner提示没有足够的虚拟用户分配给这个新的参数?这又是神马问题啊?百思不得其解。只能重新录制,修改脚本。像平时电脑崩溃了以后,重启电脑一样。这次居然误打误撞地解决了问题。原来,LoadRunner中在对用户名和密码或其他数据参数化了以后,不能删除参数,重新参数化,否则就会出现问题。
      以后的测试过程就顺利了。先设计测试场景,然后录制脚本,修改脚本,运行脚本,生产结果报告,分析结果数据。再后来,Boss与客户谈的时候,就底气很足地说,我们用LoadRunner对系统做性能测试,并骄傲地展示LoadRunner自动生成的测试报告。虽然有些图表还不知道什么意思,但在当时看来,公司在性能自动化的测试上边确实进步了不少。而这就是两个多月辛苦付出的回报。
    ......
  • 水滴的海外测试经历 - 酷暑寒冬之测试管理【原创】

    2013-10-21 11:17:54

      ERP2项目组之前,我便在智能交通领域这片广阔的海洋中,苦苦挣扎了两年时间。期间,虽然呛了不少水,有过教训,但同时也积累了经验,学了不少东西。或许是曾经有过这样的项目经历,刚进项目组,便有幸成为负责稽查设备测试的小组长。初期的时候也就一光杆司令,只能被管理。后来,我们小组成员增加到三人,虽然人数不多,终究手底下也有兵了。那么测试管理又如何在测试团队中实施的呢?

      首先是管理人。如何管呢?这个我要说只能是靠制度了,经过多年的沉淀,公司有一套相对完善的开发测试控制流程。具体点说,团队成员每天必须写日报。这种方式的缺点是,时间长了真的很烦,有种被监视的感觉。可是又没办法,谁让这是重点项目呢。优点是,由于每天都要汇报工作,所以几乎没有人偷懒。

      除了日报,还得写周报。我做为测试的小组长,除了周一分配工作任务外,周末还要汇总团队成员的周总结,总结测试小组上周的工作进展和遗留问题,然后汇报给测试经理。

      当然,周例会也是不可少的。团队的每个成员都要做汇报,重点总结上周的工作成果。对于遗留问题,大家有针对性地一起讨论,定一个解决方案。这种方式能起到好的督促作用,而且对管理的效果也起到了直接检验的作用。       

      每个人都是一座宝矿,这话一点不假。尤其是对测试团队来说,成员来自不同的公司或部门,有不同领域的从业经验,每个人都有独到的地方,有自己的优点。为此,团队建立了内部培训机制,以便于团队成员之间优势互补。这种管理方式也算是对公司现有制度的一个补充。这种方式的最大优点是轻松自由,毕竟隔行如隔山嘛,即使有些术语听不懂也没关系,成员之间经过交流探讨,加深了了解,增进了友谊。      

      另外一个补充,是后备领导培养机制。这个项目,由于工作关系,测试经理需要经常出差去国外,讨论关于需求和测试方法的问题。出差期间,测试团队怎么能群龙无首呢,这就需要一个临时领导,管理整个测试团队。虽然我没有被选中,有些沮丧,但同时也发现了自己能力的不足,那就向别人学习吧。后来证明这种机制是明智的,使得整个团队能够有序运转,团队成员的工作也没因为测试经理不在而受到影响,实现了无缝管理。   

      加班,是每个做项目的人都会经历的过程。除此之外,提高单位时间内的工作效率也是测试团队成员追求的目标。之前提到的临时领导,也是因为他能合理安排时间,工作效率高,而深得测试经理的器重。有次还在会上表扬他,今日事,今日毕,是我们学习的好榜样。在他的影响和带动下,大家也都尽量在下班之前结束一天的工作。由此看来,树立典型是管理好时间一个行之有效的方法。

       还有一种方法也是实践中总结出来的,不做重复劳动。可真是说起来容易,做起来难。内部测试开始后,团队成员用邮件的方式整理BUG,并汇报给开发人员。后来公司QA要求测试团队使用CQ,团队成员可能也是考虑到邮件的方便快捷,仅把之前的BUG都提到CQ上去,但同时也保留了使用邮件汇报BUG的方式。这种不规范也不专业的BUG提交方式,立刻引来了项目副总监的注意。他转发了QA的邮件,要求使用CQ的方式提交BUG即可,没必要使用邮件方式汇报,这样也就避免了重复劳动。我们这才完全放弃了使用邮件汇报BUG。这件事印象深刻,幸亏问题纠正的早,如果按照之前的工作方式,我们又需要花不必要的时间。

       本文结合实际项目从人、时间和资源的角度浅谈了实际工作中的测试管理,希望能藉此抛砖引玉,与大家探讨交流测试中的管理学。  

     
      本文收录于《51测试天地》电子杂志第三十一期
      
      查看全文请点击下载:http://www.51testing.com/html/88/n-853288.html
     
     
  • 水滴的海外测试经历 - 酷暑寒冬之测试用例【原创】

    2013-10-07 22:57:55

     写测试用例简单,写好测试用例难,写得让客户满意就更难了。这句话在ERP2项目中得到了完美无瑕的验证。如果说这个项目有哪些事情给我留下刻骨铭心的记忆的话,那么编写测试用例便是其中之一了。同事们苦笑,这堪称史上最让人纠结的测试用例。为什么纠结呢?如果用三个字概括,就是长、多、严。
      长。用了半年时间写测试用例,你可能会觉得惊讶吧,可能会说这是什么鬼项目,居然用了那么久,放在我们公司早做完两三个项目了。连我自己也觉得不可思议,细细想来却又在情理之中。这其中,不光是因为项目确实庞大,还有我们自身的原因,和客户的原因。
      就我们自身而言:写用例的风格没有及时统一,写出的用例千人千面;对字面上的测试需求没有理解透彻,这也是和老外沟通渠道不畅造成的;前期系统设计一直没有定稿,其间,又修修改改,使得测试用例也跟着在变动。有件事情记得比较清楚,由于前期系统设计的不确定性,测试用例编写也受到严重干扰,到底是写还是不写,如果写的话,连设计都没确定,又怎么能得到确定的期望结果呢?可是,如果不写的话,又影响测试用例编写的进度。两难之际,老大拍板,写!就是让我们依照原有的设计,或者按我们自己的设想编写测试用例。虽然这样做给之后测试用例的修改增加了负担,但也是个没有办法的办法,测试用例的提交是有时间节点的,为了能准时提交测试用例给老外审查,心急火燎下不得不这样做,很无奈。
      就客户而言:没有及时提出合理的测试模板,没能及时限定测试用例的包含的项目;客户对测试用例的要求过于简单或概括化,前期没能给出一个测试用例怎样写,及写到什么程度的Checklist。这使得工作开展较为被动,我们也在绞尽脑汁揣摩老外的心思,究竟怎样写才能满足人家的要求。字面上的要求是这样的,从单元,到集成,再到系统,均用英语写测试用例,不仅要做到各个阶段的测试用例覆盖面全,还必须做到测试描述易于理解,可操作性强。不容许出现模棱两可,似是而非的描述。
      话虽如此,实际做起来难了。比如,测试用例覆盖面全这条,需要考虑系统在各种交通场景下的情况。要知道,各种交通场景指的是新加坡不是中国。当时就傻了眼,新加坡咱也没去过啊,国内和国外又是两套不同的交通规则,所以,一开始用例写的也是惨不忍睹。后来,去了后才发现,在新加坡,摩托车也是可以在高速路上驰骋的,在小轿车和大型车之间来回穿梭,就像鱼群一样,很有特色。再比如,描述易于理解这条,实际上客户的意思不仅是要字面上描述清楚,而且要能“看”得到,也就是图文并茂的意思。或者说这算是客户隐性的需求,诸如此类的要求,也是后来在和客户经过几次交锋之后,我们才弄清楚的。
      多。 有两层意思,编写的测试用例多;修改的次数多。
      测试用例多。多到连我们自己都在怀疑,这么多测试用例,将来在新加坡测试场在限定时间内能执行完吗?!实际上,测试用例编写也经历了从无到有,从少到多,从多到精的阶段。尤其是最后一个阶段,在删除了重复,不可执行的测试用例,以及合并了一些测试用例后,测试用例的数量仍然很可观,但已经是经过压缩,千锤百炼后的结果了。
      修改的次数多。每次修改的原因也都是五花八门,有种想吐的感觉。有时因为测试步骤不详细,重写;有时因为测试场景不丰富,重写;有时因为没有图例说明,重写;有时因为测试步骤冗长,重写;有时因为拼写,标点符号错误,重写;有时因为测试用例写重了,重写!一次又一次的修改,以至于大家见面语都变成了,今天你用例改好了吗?晚上下班,抬头仰望星空,真想对上帝大声说,Please take me away。
      为了避免反复修改产生的视觉疲劳感,也为了更好的发现测试用例的错误,每次提交测试用例前都要在组内开展交叉检查活动。就是组内成员互相检查对方写的用例。这个方法很有成效,也确实帮助我们发现了自己发现不了的问题,也相对减少了用例修改的次数。
      严。说的是新加坡政府公务人员工作态度严谨,细致。每次我们怀揣着忐忑不安的心情提交给客户审核后,就是焦急而漫长的等待,等待客户的反馈。这种感觉更像是一个交考卷的学生的感觉。客户几乎每次都能不厌其烦地找出他们认为不合适的地方,即使连一个标点符号也不放过,至于拼写和语法错误更是他们无法忍受的,像是在拿着放大镜仔仔细细鉴赏着一件工艺品。最后,客户反馈的Checklist,是一份长长的修改清单。
      经历十多次的修改,换来的是逐渐变短的错误清单,直至客户最后说,恭喜你们,测试用例审核通过!那时,我们才终于有种解脱的感觉和淡淡的喜悦。我们努力过,付出过,虽然很艰辛,但是很值得。
      纵观整个测试用例阶段,小水滴感觉英语真的很重要,如果英语不好的话,就会在阅读客户邮件或手头的需求时理解的不透彻,在编写测试用例时就会犯拼写、语法、句法错误;其次团队协作精神也很重要,要时时对对负责其他子系统的成员在编写测试用例时提供有效支持;最后,是有效沟通,尤其是与海外客户要能保持良好的沟通,才能得到客户真实的需求。
      声明 : 本文只代表个人观点,不代表公司观点。

  • 测试用例设计经典面试题之电梯等【转载】

    2013-09-17 21:27:20

    本贴转自51testing会员天光云影的一篇博文,http://www.51testing.com/html/57/351957-849844.html
     

    1.测试项目:电梯

      需求测试:查看电梯使用说明书、安全说明书等

      界面测试:查看电梯外观

      功能测试:测试电梯能否实现正常的上升和下降功能.电梯的按钮是否都可以用;

      电梯门的打开,关闭是否正常;报警装置是否可用,报警电话是否可用;

      通风状况如何.突然停电时的情况;是否有手机信号;

      比如说上升途中的响应。电梯本来在1楼,如果有人按18楼,那么电梯在上升到5楼的时候,有人按了10楼,这时候是否会在10楼先停下来;

      电梯下降到10层时显示满员,此时若8层有人等待电梯,是否在8层停;

      可靠性:门关上的一刹那出现障碍物,同时按关门和开门按钮,点击当前楼层号码,多次点击同一楼层的号码等等;同时按上键和下键会怎样;

      易用性:电梯的按钮的设计符合一般人使用的习惯吗.

      用户文档:使用手册是否对电梯的用法、限制、使用条件等有详细描述

      压力测试:看电梯的最大限度的承受重量.在负载过重时报警装置是否有提醒.在一定时间内不断的让电梯上升,下降.最大负载下平稳运行的最长时间。

    2.测试项目:杯子

      需求测试: 查看杯子使用说明书

      界面测试: 查看杯子外观

      功能度:用水杯装水看漏不漏;水能不能被喝到

      安全性:杯子有没有毒或细菌

      可靠性:杯子从不同高度落下的损坏程度

      可移植性:杯子在不同的地方、温度等环境下是否都可以正常使用

      兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等

      易用性:杯子是否烫手、是否有防滑措施、是否方便饮用

      用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述

      疲劳测试:将杯子盛上水(案例一)放24 小时检查泄漏时间和情况;盛上汽油(案例二)放24 小时检查泄漏时间和情况等

      压力测试:用根针并在针上面不断加重量,看压强多大时会穿透

      跌落测试: 杯子加包装( 有填充物), 在多高的情况摔下不破损

      震动测试: 杯子加包装( 有填充物), 六面震动, 检查产品是否能应对恶劣的铁路\ 公路\ 航空运输

      测试数据:测试数据具体编写此处略(最讨厌写测试数据了)。其中应用到:场景法、等价类划分法、因果图法、错误推测法、边界值法等方法

      期望输出:该期望输出需查阅国标、行标以及使用用户的需求

    3.测试题目:桌子

      需求测试:查看国家相关标准。

      功能:桌子是办公,或者放置用的,首先考虑桌子的面积大小是否适度.

      界面:桌子的版面是否平滑,桌子有没有凹凸不平的地方

      安全:桌子肯定有它的支撑点,若支撑点不稳,容易摔坏物品,使用起来也不方便.

      易用:桌子的移动性好不.它的重量是否合适

      可靠性:将桌子推倒后,再检查桌子是否很容易被损坏.

      性能:将很重的物品放在桌子上,看它最大承受的重量是多少…

    4.测试题目:洗衣机

      功能测试:该洗衣机是否能正常的洗衣服

      需求测试:查看洗衣机的使用说明书和安全说明书等

      性能测试:使用时用电量如何,是否满足用户需求

      界面测试:洗衣机的外观是否满足客户的需求

      易用测试: 该洗衣机是否容易操作

      兼用性测试:该洗衣机除了能洗衣服以外还能洗别的吗

      安全性测试:该洗衣机通电以后人接触以后是否有电

      负载测试:通过逐步增加系统负载,最终确定在什么负载条件下系统性能将处于崩溃状态,以此获得系统能提供的最大服务

      压力测试:通过逐步增加系统负载,最终确定在什么负载条件下系统性能将处于崩溃状态,以此获得系统能提供的最大服务级别的测试。

      稳定性测试:加到一定的衣服然后过一段时间看洗衣机是否正常洗

     

  • 我的海外测试经历 - 招兵买马【原创】

    2013-09-14 18:56:50

      2011年8月初的一天早晨,刚到公司,发现部门玻璃门前围了一圈同事,凑近了看才知道,玻璃门上面贴了张颜色鲜艳的海报。细看才知道,原来公司上了一个大项目ERP2,这是与新加坡陆路交通管理局(LTA)合作的一个项目,为新加坡城市道路交通拥堵收费问题提供整套解决方案。继续往下看,目前,项目的负责人正在全公司范围内招揽合适的人才,其中,有研发的岗位,也有测试的岗位。前期在国内研发,后期赴新加坡测试。看到这里,心中早已起了一层涟漪,心想,多好的锻炼机会啊,莫非施展拳脚的机会到了?在公司这么久,内部招聘的邮件也收到很多,但还是头一次为这样一个跨国项目而心动过。但是转念一想,这个项目肯定要求极高,自己能力有限,怕是达不到人家的要求吧。顿时,冷静了下来。回到自己的座位,打开邮箱,收到的第一封邮件就是内部招聘的邮件,内容上和海报上贴的基本一样。当时,关于ERP2的概念还是很模糊,于是,不由自主地白度了下。在中国信息产业网上,找到了关于这个项目更为丰富的背景信息。原来,所谓ERP2是第二代公路电子收费系统的意思。这个项目入围的公司共有四家,而我们公司是唯一的一家中国企业,竞争对手为日本三菱,美国IBM在新加坡的分公司,奥地利喀布什。头两个不用说了,来头不小,第三家公司查了以后,不禁倒吸了口凉气,人家是欧洲智能交通领域的龙头老大!看到这儿,心里凉了半截。心想,智能交通在国内起步没几年,虽然公司在智能交通领域有一定的技术积累,但是和国外公司差距有多大,还真不好说。这还有什么好玩的,不是等着被虐吗?自己还是安分守己点,做好本职工作,别跟着凑热闹了。随后的一周,虽然当时怀着一颗杯具的心,但还是忍不住好奇和周围同事谈论ERP2的事情。一时间,ERP2成了公司上下热门的词汇,自然也成了大家茶余饭后的谈资。
      平静的生活终于被电脑屏幕右下角闪动的飞秋头像打破了。知道是自己公司同事,但不认识。
      来人自报家门,我是ERP2负责测试的某某某。这里程呼他为A君吧。什么??我没听错吧?ERP2?!很难想象我能通过A君和ERP2联系起来。A君很热情,直呼我姓名,说,你是某某部门的某某吧,有兴趣来ERP2项目组吗?我当时一晕,说不清是高兴,激动,还是紧张。只记得当时弱弱地回应说,我有智能交通的工作经验,但是对于ERP2了解的还不够,也不知道能不能胜任。A君开导我,这个项目对测试人员的水平要求比较高,而且要求行业背景知识和相关的工作经验,而这些我都有,应该有信心。能入围这个项目不仅仅靠的是运气,也靠多年来公司在新加坡打下的根基。况且这么大的项目,公司也是头一遭,有困难在所难难免,大家共同面对,一起想办法克服。后来又帮我分析了自己的优势,和竞争对手的弱点。或许是被A君的真诚打动了,就这样,我稀里糊涂地上了ERP2这艘大船。
      怀着有点小兴奋的心情来到项目组后,在一堆陌生的面孔中,居然发现了熟悉的身影,简直像见了亲人一样。更巧的是,他们和我来自同一部门,也是刚被招进来,从事软硬件研发的工作,总算感觉不孤单了。经过了解,这个项目早在半年前就开始投标书了,正式入围以后才开始大张旗鼓的招人。为了确保整个项目团队有较强的竞争力,测试团队要求本科以上学历,并有3年以上测试工作经历;研发团队要求本科或者研究生以上学历,4年以上工作经历;重要岗位比如天线研发,GPS定位,系统安全部分等全安排的是有多年丰富研发经验的博士及博士后。一个月后,各个岗位的人员基本到位,人员规模有将近50人,可谓阵容强大。

      招兵买马这段时间,项目组领导或团队负责人时不时把大家召集起来,鼓舞干劲,自信心也慢慢提升了不少。另外,从人员投入来看,公司是要铁了心的做成这个项目了。在这样一个环境里,大家干劲都很足。于是,暗暗告诫自己,别想那么多,全力以赴做吧,前方还是很光明的。
      声明 : 本文只代表个人观点,不代表公司观点。
  • 卡片发行设备测试问题整理【原创】

    2013-09-14 11:16:42

     曾经做过一个卡片发行设备的项目,我的工作是依据通讯协议文档,测试发行设备的固件。测试过程不太复杂,主要是组织各种命令帧,目的是测试固件对正确指令帧和异常指令帧的处理能力。本文从沟通和文档撰写的角度,整理测试中发现的问题。
      项目初期,在立项的会议上,研发负责和生产沟通的接口人,暂称他为A君吧,拍板定下了固件下载的方式,采用JTAG方式下载。接着,项目经理指定测试人员撰写固件下载说明书,并提供给生产的同事。于是,这个任务自然而然的落在了我头上,那就开始干呗。先把下载的那套环境搭起来,然后对下载过程左拍照,右拍照,最后,费了半天功夫整理出一篇说明文档,颇有成就感的提交到了CC服务器上。结果,一周不到,厄运降临。在项目例会上,A君突然改口说,生产上要求采用先烧写芯片再焊接的方式。这可真让人浑身不舒服,事先不和生产沟通好,拍脑袋定方案,现在又要求改方案。之前的文档不是白写了吗。抱怨归抱怨,工作还得继续,于是多花了半天的时间,不得不按照新的下载方式重新写了一遍文档。这次,内心充满了各种不乐意。再到以后的项目,例会上只要和测试相关的,我都轻声多问一句,你确定是采用某某方式吗?
      这次经历让我印象深刻,作为一个团队的接口人,如果不能和生产的沟通一步到位,甚至靠自己的主观推测,这会给团队其他成员带来不少麻烦,造成时间成本的增加。这次经历也只是麻烦的开始,接踵而至的是技术文档暴露出来的问题。
      作为测试唯一可参考的技术文档,我很快就发现了发行设备通讯协议不一致的问题。第一代发行设备的通讯协议对其中IDTYPE标识的定义是1表示广播地址、0表示专用地址,二代的通讯协议对其中IDTYPE标识的定义是0表示广播地址、1表示专用地址,显然,两份通讯协议对IDTYPE标识的定义是不一样的。由于测试的是第二代发行设备,然而此发行设备程序中沿用的却是一代的标准,直接导致了我报告了“错误”的BUG。
      这件事说明,发行设备升级后,新的通讯协议没能向前兼容老的通讯协议。之后,研发很放心地给了我一份最新的技术文档,随后,用坚定的眼神告诉我,”拿去,不会在文档上出问题了”。随后的测试说明,真是怕啥来啥,我又发现了通讯协议表述不准确的问题。按照通讯协议的说明:标准的数据帧有个LEN字段,后面是DATA字段和BCC字段。协议里对LEN字段的定义是表示DATA字段的长度,但是当BCC为FF的时候,程序做的处理是,FF要拆成FE 01 ,此时LEN应为DATA数据域所有字节的和+1,但是,这个在协议里却没有任何的说明,导致误判。
     
      我很无语,只能说,老天,如果这个项目能重来,先让我测试技术文档吧。怀着一颗纠结的心,我发现发行设备通讯协议的另一个问题,字段定义不严格,数据帧有个RENUM标识,协议里定义此标识为:重发次数。若RENUM=1,按照此定义理解,应为重发一次,也就是发两次,但是,实际上,发行设备只发了一帧数据。因此,这个定义不准确,应改为发送次数。
     
      整个项目下来,我很累,研发也不轻松。回头想想,有效沟通是多么重要。另外,技术文档的撰写也很重要,一定要严谨,准确,不能是是而非,甚至出现歧义和错误,这都是不可取的。

     
     
     
     
     
     
     
  • 我的海外测试经历【原创】

    2013-09-12 14:15:33

    前言
     
      《我的海外测试经历》讲述的是公司和新加坡政府合作的一个项目,涉及到智能交通领域的测试。回顾整个项目还是有许多值得反思,需要总结的地方。由于项目周期跨度长,难以在一篇文章中叙述清楚,以下为文章整体框架。
     
    第一章  招兵买马
    第二章  酷暑寒冬
    第三章  奔赴国外
    第四章  慢工细活
    第五章  背水一战
    第六章  顺其自然
    第七章  再见新加坡
    第八章  后记
     
     
    注:上面仅是框架,尚未成文,后续发表
  • 鼠标键盘模拟工具-按键精灵【原创】

    2013-09-11 22:14:22

      必很多玩游戏的朋友都听说过或者用过这款工具。其实,按键精灵能做的工作远非玩网游打怪这么简单,还可以用它实现办公自动化和功能自动化测试。我也是在工作中结识的它,当时还挺稀奇的,这个小工具跑起来,就像有一只看不见的手帮你完成了点鼠标按键盘的工作。而且还可以自动记录测试结果,并填到表格中。当然,前提是得编写符合要求的测试脚本,脚本编好后,还要进行调试,直到能稳定运行才算大功告成了。
      既然这个工具这么方便,那就学呗。
      开始学的时候,也是一头雾水,从哪里开始啊?总不能东一榔头,西一棒槌吧,那就从最基本的开始,什么是最基本的呢,我一下子就瞄上了按键精灵自带的帮助文档。感觉里面内容很全,还有实例,多好的教材。于是,二话没说,边看帮助边动手操作,从VBS基本命令的使用,到按键精灵专有命令的使用,到办公自动化等操作,居然很快就学完了。感觉不是很满足,就去官网找视频教程看,收获颇多。现在回想起来,视频教程讲的知识点和技巧在实际项目的使用中还是很管用的。再后来,就去逛论坛,不懂就发帖子求助;为了获取更丰富的学习资源,还专门花钱注册了一个会员号。那段时间真是像迷上了一样,毫不夸张地说。
      学有所用的场合终于到了。赶上春节,订票是个大问题,接连几天不论是电话还是网上订票都抢不到,这可真是愁死人。公司同事说,手不够快,要是有个机器人替我刷票多好,不会出错,而且能抢到票。对啊,按键精灵不是可以模拟鼠键操作吗,不就可以做到自动化抢票吗。当时脑袋一热,就开始动手写脚本,修修改改的弄了几个小时,还在火车票订票网站上模拟试了下,感觉上没什么问题了。第二天早晨8点起来抢票的时候,我按下了脚本的启动热键,没想到一分钟不到,居然帮我抢到了一张坐票,虽然不是卧铺,但还是挺满足的。哈哈,现在看当时做的那个抢票脚本还真是简陋,不过不算白做。再后来,发现网上早就有抢票神器了,抢票神器虽然神奇,不过感觉上还是自己做的更有成就感。
      有了这次经历,对按键精灵的兴趣更浓了。于是,QQ上也加了按键的群,居然有10个之多,现在想来当时真是疯狂。每天就是和群里的键友泡在一起,切磋按键的使用。也就在这个时候,我接到了其他部门领导的一个电话,约我谈谈。我当时还不明白怎么回事,后来才知道,原来是这个部门效益好,项目多,亟需要人,问我会不会功能自动化,我说会啊,QTP,WebLoad,Selenium,什么的曾经都用过,当然也少不了提按键精灵。然后,大概都介绍了下。领导考虑到版权和熟练程度的问题,问我按键精灵是不是可以做,我想这不撞倒枪口上了吗,于是毫不犹豫地说可以做。再后来,我就顺利的进入到了这个部门,当然我的工作也是和功能自动化有关的工作。
      实际做起来发现问题真的很多,前前后后用了两个多月的时间,不过总算做成了。现在回想起来,很多时间都花在异常处理上了。另外由于要兼容不同的浏览器和操作系统,因此这部分内容自然也是脚本编写时要考虑的因素。幸亏之前有了积累,要不然很多问题解决起来真是棘手,不仅要熟悉浏览器和操作系统的响应方式,还要熟悉VBS,业务流程,以及脚本编写的技巧等等。还好,这次经历让我对这个工具的掌握更深入了一层。
      虽然按键精灵有这样那样的问题,有时候也会受不了折腾而崩溃,但还是值得推荐使用的,因为它可以很方便的解决工作或者生活中的难题。相比价格昂贵的QTP而言,按键精灵是免费的,而且是轻量级的,就个人使用经验而言,在同类产品中按键算是一款优秀的鼠键模拟工具了。
     
        继续关注。。。
     
  • 测试-想说爱你不容易【原创】

    2013-09-11 21:22:26

     2007年4月入行,掐指算来,在测试行业里混迹将近7年之久。回首过去,虽未经历大风大浪,但也历尽坎坷,遍尝酸甜苦辣,测试于我来说犹同爱人,想说爱你真的不容易。俗话说婚姻有七年之痒,那么扪心自问,我是否也有逃离这个行业的想法?至少现在没有,我仍然热爱着这个行业,这个带给我满足感,带给我希望的行业。

      有朋友问我,为什么不转行做开发,而屈身在这个不受重视的行业里,挣钱不多,而且又枯燥又乏味?我笑答,也许人各有志吧,不受重视是因为测试不够专业不够深入,挣钱不多是因为不是这个行业的No.1,枯燥乏味是因为没有在重复的工作中深入思考,没有提炼出新的东西。那么为什么不转行呢?我觉得,测试中有开发,开发中也有测试,测试和开发本来就是互相融合不能分开的,因此,测试领域里一样可以大有作为,为什么要转行呢?朋友无言。

      我的过去。从清华科技园到现在的望京科技园,从软件测试到嵌入式测试,从仰望星空到登高望远,7年时间,让我永远记住了我曾经和现在供职的两家公司。感谢这段经历,让我从一个初级测试工程师成长到现在的自己,拿到了与职位和入行时间相匹配的收入。现在回想起来,如果当初我没有坚持下来,如果在前进的路上我不停的换方向,如果毕业后我没有及时调整方向,那么我还有今天的生活状态吗?天知道。
      我的现状。从功能测试到性能测试,从黑盒到百盒,从使用工具测试到参与开发测试工具。随着时间的推移,发现测试这个行业真的是博大精深,精彩纷呈。人的精力有限,不可能各个领域都涉猎,因此,就我而言,如果能在一个领域内学有所成也就知足了。
      我的未来。大概还是继续关注测试技术,开发技术吧。但还是一如既往的呆在测试行业里,从自身的亲身经历还有周围测试同仁的经历来看,只要坚持,只要肯付出,总会有云开雾散见彩虹的那一天!

      真要感谢几年来,或曾谋面,或未谋面的测试同行们,谢谢你们给与我的帮助,一路陪我走来。
     
     
  • 软件测试全景图【转载】

    2013-09-11 14:58:15

    本图转载 51testing会员summer_0711的一篇文章《软件测试全景图》
     
     
     
  • 功能自动化测试工具Selenium【介绍】

    2007-10-22 18:55:40

    功能自动化测试工具——Selenium

    一、Selenium简介

    Selenium是一款开源的功能自动化测试工具,它有三个方面的用途。1:可以用它来做浏览器的兼容性测试。例如:可以在浏览器的地址栏中输入网址202.205.%%.%%/selenium/index.html,然后运行Selenium Testrunner,如果Web应用程序可以依照测试脚本自动无误的执行完成,说明web应用程序和此浏览器的兼容性良好;2:可以用它来做Web应用程序的功能自动化测试。例如:某Web应用程序优化了其中的功能模块,我们可以用先前编写好的测试脚本测试整体的功能是否正常,这样做节省了大量手工测试的时间,提高了工作效率;3:可以用它来给客户做演示。手工给客户做演示时,操作可能会出现各种意想不到的失误或错误,而用Selenium就不会出现任何的问题了,降低了演示的风险;可以用Selenium同时演示多个Web应用程序,而且可以控制程序运行的快慢。

    二、Selenium组成

    Selenium有三个组件组成:Selenium IDESelenium Core Selenium Remote Control

    Selenium IDE是一个用来开发测试脚本的集成开发环境,它可以看作是Firefox的一个插件,只能在Firefox里安装,运行。用Selenium IDE录制好脚本后,可以直接在Selenium IDE里修改脚本,从而使得脚本可以顺利回放。开发出的测试脚本可以保存为HTMLRuby scrīpts等格式的文件。

    Selenium Core是用来测试web应用程序的工具,它可以在WindowsLinuxMacintosh等操作系统平台上的IEMozillaFirefox浏览器中直接运行。它可以简单理解为运行测试套件的工具。测试套件是测试用例组成的。在Selenium中,测试用例可以理解为由Selenium IDE开发出的测试脚本。

    Selenium Remote Control可以用来替代Selenium Core Selenium IDE,只不过功能更强大,允许用户使用自己喜欢的编程语言开发测试脚本,而不仅仅局限于Selenium Core所要求使用的HTML语言。上述编程语言包括Java.NETPerlPython以及Ruby等。Selenium Remote Control的内核是Selenium ServerSelenium Server可以理解为为Web应用程序客户端配置的一个介于浏览器和Web站点之间的HTTP代理,它允许支持Selenium的浏览器运行任意Web站点的Javascrīpt应用程序。Selenium Server 使用AJAX协议直接和浏览器建立通信。总之,Selenium Remote Control可以适用于复杂的基于AJAX协议开发出的Web应用程序。

    关于Selenium的三个组件的详述,请参考官方网站:http://www.openqa.org/selenium/

    三、Selenium的部署

    Selenium需要和Web应用程序部署在同一台服务器上才可以执行功能自动化测试。以Selenium Core 举例,事实上,是将Selenium Core Web应用程序放在同一台服务器上的同一个目录下。

    四、Testrunner简介

    Testrunner包含在Selenium core中,是测试员和Selenium交互的用户界面,可以通过它来调用测试脚本,运行测试用例。针对Testrunner的特点,需要开发出测试用例和指向测试用例的测试套件。测试用例可以用Selenium开发,生成的脚本保存为HTML文档。测试套件实质上是用HTML语言写的一个多行一列的表,也要保存为HTML文档。上述表中的每一行表示一个测试用例,指向相应的测试脚本。在浏览器中调出Testrunner ,就可以直接运行测试用例执行功能自动化测试了。

Open Toolbar