• 15
  • 14
分享
  • 提升测试开发工程师效率的法宝:ELK构建日志平台——软件测试圈
  • 曼倩诙谐 2021-02-02 10:41:20 字数 1611 阅读 1666 收藏 14

  随着互联网技术的日益发展,测试开发工程师要达到“保障质量、提升效率”目标,提升效率更体现在方方面面。作为测试开发工程师,需要掌握基本开发技能,对代码能力也有一定的要求,这也是对项目多一道强有力的保障。

  在功能测试遇到BUG时,测试开发工程师需在编译器中调试代码,一边追根溯源,一边监测代码质量。而“追根溯源”这一步最重要的依据就是系统输出日志,日志也是开发人员定位问题的第一检查场所。因此,为提升这部分工作效率,小编想通过ELK搭建一套日志收集、存储、展示的工具,来解决目前存在的日志查看效率低下、缺少可视化界面等问题。

  1、什么是ELK

  ELK由又Elasticsearch、Logstash和Kibana三个工具的首字母拼写而成,下面对这些工具进行简单介绍。

  (1)Logstash 

  Logstash是一种数据处理管道,能够从多个不同的来源收集数据,进行转换之后将数据发送到需要的地方,它支持几乎任何类型的日志。

  (2)Elasticsearch 

  Elasticsearch是一个基于Lucene分布式、RESTful风格的搜索和数据分析引擎,可以近乎实时的存储、检索数据,具有良好的扩展性。

  (3)Kibana

  Kibana是一个开源的分析和可视化平台,是用于展示日志信息的图形界面,能够分析和可视化存储在 Elasticsearch指标中的日志数据。

  2、如何构建ELK通道

  使用ELK工具搭建的日志管理平台整体架构如图1所示。其中Logstash用来收集、分析、过滤日志信息,收集到的信息经过预处理和过滤之后发送到Elasticsearch;Elasticsearch提供日志分析存储功能,实现全文搜索;Kibana为日志信息可视化功能提供展示界面,展示存储在Elasticsearch中的日志数据,供用户查询分析。

18-1.jpg

图1  日志管理平台架构图

  Logstash中日志收集与预处理比较操作较为复杂,需要手动编写配置文件。Logstash包含三个部分:输入插件(input)、过滤器(filter)、输出插件(output),输入插件收集来自各个模块的日志,过滤器插件预处理收集到的日志,输出插件将日志写入目标。Logstash处理日志的详细流程如图2所示,Logstash启动前需要编写一个(.conf)配置文件,配置文件中有三个插件及各自包含的控件等配置。

18-2.png

图2  Logstash日志处理流程示意图

  Elasticsearch与Kibana的配置文件较为简单,只需更改已有配置文件参数。

  Elasticsearch更改配置如下:

  http.port: 9200

  http.cors.allow-origin: "/.*/"

  http.cors.enabled: true

  Kibana更改配置如下:

  elasticsearch.url: "http://localhost:9200"

  三个工具的启动方式也类似,进入软件安装包的bin目录下,通过命令行启动即可。最后再浏览器中输入Kibana的地址,端口号默认5601,界面如图3所示。

18-3.png

图3  Kibana界面展示图

  3、使用ELK的思考

  在测试环境中,将被测系统的日志收集存储到ELK平台,最终在Kibana界面中查看,不仅能够对存储的日志进行全文检索,直接定位到输出级别为ERROR的日志,同时对于Linux操作和IDE调试不熟练的测试人员,能够降低通过日志定位问题的门槛。

  日志作为一个持续输出的增量文件,在后续的使用中应考虑存储空间的问题,设计方案定期解决过期日志;当遇到日志迸发的高峰期时,硬件条件一定的情况下,需要调整Logstash的配置参数,提高整体数据传输速率。对于以上问题,小编会在接下来的实践中不断摸索尝试,为大家带来更多解决方案。



作者:张艺   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、什么是MOCK测试Mock 测试就是在测试过程中,对于某些不容易构造(如 HttpServletRequest 必须在Servlet 容器中才能构造出来)或者不容易获取比较复杂的对象(如 JDBC 中的ResultSet 对象),用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法。Mock 最大的功能是帮你把单元测试的耦合分解开,如果你的代码对另一个类或者接口有依赖,它能够帮你模拟这些依赖,并帮你验证所调用的依赖的行为。mock中的必知概念:桩函数(stub):桩函数实际上是白盒测试中的概念,意思是使用一些自己定义的测试函数来替换当前需要测试的函数。被替换的函数可能是目前还没写完的...
            0 0 8158
            分享
          •   社交媒体 X 周二晚些时候表示,它已经完成了对美国证券交易委员会(U.S. Securities and Exchange Commission)账户被入侵的初步调查,该账户被黑后展示了一个精心设计的虚假帖文,声称美国证券交易委员会已经批准比特币 ETF 进行交易。  "根据我们的调查,此次泄露并非由于X的系统遭到任何破坏,而是由于一个身份不明的人通过第三方获得了与@SECGov账户相关的电话号码的控制权,"X在帖子中确认美国证券交易委员会的账户遭到了泄露。  X 在帖子中说:"我们还可以确认,在账户被泄露时,该账户并未启用双因素身份验证。"  未经...
            0 0 700
            分享
          •   在展开今天的内容之前,我们先来看一下,是不是任何一个测试都可以学习性能测试。  如果说需求、开发、DB、运维、测试是单一一门学科,那么性能就是综合学科,它包含了需求分析、DB、开发、测试、运维的所有学科。  所以说,学习性能测试,你前期需要懂的是需求分析、DB设计、程序开发、自动化测试、运维。  所以今天的内容是性能分析的一大重点,也是一大难点!  WebServer服务优化  对于Web服务性能优化的方向,一般是:  页面静态化:比如访问的页面,先进行静态化后提供访问,减少DB负担;  减少页面的Size:  减少尺寸、CSS合并、JS精简等;  客户端缓冲、样式等;  去掉无用请求与数...
            0 0 1020
            分享
          • 沐沐在以往的测试过程中发现,测试团队成员的测试颗粒度不均衡,导致测试完的产品质量参差不齐。因此梳理了一些Web端的通用测试用例,可以导入到缺陷管理系统(例如禅道),在测试过程中,执行这些通用的测试用例,使得非业务层面的一些测试点可以均衡覆盖。当然以下总结的测试点不一定适用于所有的Web端系统,仅做参考。一、新增功能新增表单,文本框字符长度是否限制新增表单,数字文本框是否限制字符格式新增表单,身份证号码是否做强校验新增表单,手机号是否限制格式、位数新增表单,选择文本框是否限制输入字符新增表单,必填字段是否限制输入空格保存新增表单,必填字段仅输入特殊字符null保存是否校验新增表单,xss注入是否...
            2 1 3415
            分享
          • 读者提问:『接口测试准备测试数据,有哪些推荐的操作方法 ?』阿常回答:接口测试准备测试数据,通常有如下 4 种操作方法:1、基于 GUI 操作生成测试数据很少直接使用基于 GUI 操作生成的测试数据。2、通过 API 调用生成测试数据目前主流的测试数据生成方法。为了规避在创建测试数据时过于在乎实现细节的问题,我们可以把调用 API 生成测试数据的过程封装成测试数据准备函数。3、通过数据库操作生成测试数据目前主流的测试数据生成方法。将创建数据需要用到的 SQL 语句封装成测试数据准备函数,当我们需要创建数据时,直接调用这些封装好的函数。4、综合运用 API 和数据库的方式生成测试数据先...
            0 0 1941
            分享
      • 51testing软件测试圈微信