使用DST性能测试小结

发表于:2014-3-05 11:48

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

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

分享:
  项目期间对应用核心代码进行了重构,想要了解该次重构是否对应用的性能造成了影响,如果有,到底是下降了还是上升了,如果下降了,那将需要进行性能调优工作。基于进行性能测试对比的目的,在项目期间使用了DST平台进行了一个性能对比测试。在性能测试期间碰到了很多坑,从一个坑爬到另外一个坑,感觉自己的成长也非常的大,在此给做一些小的分享。
  性能测试一般流程,无非是场景设计方案制定,环境搭建,脚本编写,脚本执行,结果分析,每一个阶段都会遇到很多的问题。在此想详细分享一下在脚本编写和执行时遇到的一些问题。
  性能测试工具编写
  .V4加密生成Sign总是不通过,V4脚本失败---à查看服务器上mtop的日志,看生成的sign和服务器端生成的sign有什么区别,为什么会有差别;(时间戳或者其他参数放错了,忘记放了等等)
  .工具编写好后需要deploy到maven仓库,没有权限。--à问开发要settings文件,加上server的配置,拥有了deploy的权限;
  .性能测试工具中原来使用的是testng框架,在eclipse里面跑需要安装一个插件,安装费时,改用了junit框架,引用的本地库的junit,导致在deploy时发生没有找到org.junit的异常--à通过pom依赖引入junit,重新deploy;
  .有时候重新发布了性能辅助包后,再运行DST上面事务,发现代码并没有更新改了的二方库,需要在开启命令中添加-U,使之强制更新二方包即可以了。坑:修改H5并发问题之后,反复修改了性能二房包,但一直还是一般请求失败,后来根据日志发现,貌似DST上没有更新修改后的性能二方包,加上-U之后,正常了。
  平台上运行单个脚本
  .压测机所有运行的case都没有返回成功,抛异常:java.net.MalformedURLException: no protocol:,发送的请求http://ip变成一串不认识的东西---->反复本地运行都没有问题,到平台上发送的请求就不对,没有返回正确的结果。
  A、性能测试脚本使用了资源文件,新建的文件夹名字为sources,而maven识别的是resources,导致打包没有打进去,运行脚本的时候,请求的前半部分无效;
  B、修改后还是同样的问题,可能DST平台打包的时候,根本没有将resources文件打进去。
  解决方案:不使用资源文件配置请求的url前半部分,而是在脚本里面,使用工具提供的setBaseUrl方法设置;
  .有些配置文件未推送到性能机器上面,导致运行脚本时,有些配置没有调到,抛出各种异常。
  平台上运行单个用例
  .运行任意一个老的用例,发现大概50%的请求返回了失败。使用ab test并发数场景一样,却没有发生请求失败的情况。
  A、问题在压测机上?
  B、生成url的性能测试工具,对于httpClient的设置问题?
  查看请求失败的日志,谷歌发现可能是端口占用未关闭导致。--à推测是生成url的问题,进一步代码review发现,性能测试工具在对返回的数据流进行读取后,忘记关闭了,导致太多的端口没有释放,导致后来新的请求没有获取到端口。修改后解决
  .V4的H5性能脚本,单次发送请求成功,并发场景有一般的请求session为空。
  经排查,是因为,性能测试脚本里面用了类变量,h5脚本 每个脚本都会调用两次API,第一次获取token设置回request,然后发起第二次请求api,拿到业务数据返回。多个线程并发,去设置token的动作,可能引起了并发的问题,
  将修改token的值,从而使有一些业务API的请求加签后与服务端算出来的不一样,导致请求返回失败,令牌为空等情况。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号