调试全网回归脚本小结

发表于:2014-3-12 11:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:襄玲    来源:51Testing软件测试网采编

  我们在完成接口测试之后,需要先通过mvn test本地运行全部的脚本通过,然后放到全网回归的实验室进行回归。尽管在Eclipse里面全部的脚本通过,但是无论在本地还是在全网回归的机器上面,都很可能会因为各种原因,而无法运行全部的测试脚本;原因有很多很多,很可能每次调都会遇到不一样的问题,最近调全网回归的时候,又遇到了问题1、2,在此小结一下。
  A、整个运行透传两个脚本时,总是第二个失败;而单独运行的校验都是通过的;
  排查过程:
  a、观察第一次运行总是第二失败,debug发现返回结果同第一个;
  b、调整两个脚本的顺序,再次运行发现位置在后面的运行失败,返回的结果同第一个;
  猜测:同时运行两个用例,返回的结果,可能网络层相应慢一步,而用例这边的线程已经往后面跑,拿结果的时候从缓存拿了??还是怎么的,尝试跑完第一个脚本之后等待两秒,再运行后面的测试脚本。
  c、等待也不能解决问题;
  d、打印的拼的链接,链接也是对的;
  e、一起运行又发现有些脚本跑失败,发的链接请求返回的是非法请求,进一步排查发现,是有一个脚本里面修改了一个公用的static 变量,使用例运行返回非法请求,结果后面的脚本都使用了这个变量值,都返回了非法请求;
  小结:各个脚本之间使用的变量尽量不要公用,需要公用的,也要保证在某一个进行操作之后,要还原成最初始的样子。这是做接口测试最最基本也最最重要的原则了
  B、 Assert.assertTrue("success:", returnstr.contains("非法请求签名"));
  a、前面的语句,应该是失败后会打印的内容,而应该是包含说明失败的原因,而不是打一个success
  b、在eclipse里面一起运行成功,mvn test的时候就失败一大片一大片,这是肿么回事肿么回事???
  c、第二天早上尝试,只包含一个测试脚本在类中,mvn test运行,结果发现还是失败的;
  d、推测是脚本编写的问题,可能用到了static变量导致???  不是
  e、仔细观察脚本和日志,发现是执行到最后一个校验语句的时候才发生这种校验失败的问题的,恰好最后一句校验都是校验中文的,校验的时候校验返回的中文,结果在插件校验的时候使用了另外的编码导致乱码???
  尝试在命令行中输出返回的中文值,果真发现乱码,所以校验出问题了。
  原因:
  sure-fire plugin插件,mvn test 默认会fork一个新的进程运行测试脚本,如果没有设置新进程的编码方式,则会使用系统默认的编码方式,就有可能造成乱码的问题;
  解决方案:
  1、在sure-fire plugin插件新添加一个配置,将forkMode设置为never
  2、不改forkMode,默认为once,设置<argLine>-Dfile.encoding=UTF-8</argLine>这个其实在谷歌上谷歌一把也有很多解决方案的,只是这次自己碰上了,最开始是不知道是什么原因,把自己的解决方案分享给大家,大家参考下解决思路便好~
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号