Open Rebits opened 2 weeks ago
The following is a summary table of the tools analyzed with the main characteristics of each one
Tool | Test Language | Multiplatform | Requirements | Purpose |
---|---|---|---|---|
Artillery | YAML | Yes | Node.js, NPM | Load and performance testing of web applications and APIs |
Playwright | JavaScript / TypeScript | Yes | Node.js, NPM | Test automation in web browsers |
OpenSearch Benchmark | JSON | Yes | Python 3.6+ (Pip), Elasticsearch, OpenSearch | Search and Analysis Cluster Performance Evaluation |
Locust | Python | Yes | Python 3.6+ (Pip) | Load and stress testing in web applications |
Fluentd | - | Yes | Ruby, Gem (Installation Packages Available) | Collect, transform, and send logs and events |
Tsung | XML | Yes | Erlang, GNU Make (Installation Packages Available) | Load and performance testing of web applications and services |
Cypress | JavaScript / TypeScript | Yes | Node.js, NPM | End-to-End Tests |
The information on each tool explains the advantages and disadvantages of each one.
Tool | Advantages | Disadvantages |
---|---|---|
Artillery | Modern & Easy-to-Use. Cloud-Scale Testing. Test Any Stack. Fast Adoption. Extensible. Scalable & Cost-Efficient. Open Source. | Learning Curve. Limited UI Testing. Protocol Limitations. |
Playwright | Cross-Browser Support. Cross-Platform Compatibility. Mobile Emulation. Language Flexibility. Headless and GUI Modes. Advanced Automation Capabilities. | Learning Curve. Limited UI Testing. Protocol Constraints. |
OpenSearch Benchmark | Performance Metrics. Decision Support. Resource Optimization. | Complexity. Maintenance Overhead. |
Locust | User-Friendly Task Definition. Distributed Load Generation. Real-Time Web-Based Monitoring. Simulating User Behavior. Performance Metrics and Reporting. | Python Dependency. Limited Protocol Support. Less Suitable for High-Concurrency Workloads. |
Fluentd | Pluggable Architecture. Real-Time Data Processing. Cross-Platform Support. Better Memory Usage. | Decentralized Ecosystem. Transport and Buffering. Parsing Complexity. |
Tsung | Erlang-Based. Protocol Support. Stability. Distributed Load Generation. Automated Statistics. | Learning Curve. Complexity. Limited Protocols. |
Cypress | Speed. User-Friendly Interface. Reliability. Flexibility. Stability. Active Community. Browser-Based. | Limited Cross-Browser Support. No Native Mobile App Testing. Single Browser Session. No Direct Multiple Windows/Tabs Support |
Of all the tools analyzed, the most notable are: Artillery, Playwright, Fluentd and Cypress. Artillery and Cypress can also be integrated to work together. Cypress can be used in place of Playwright but not integrated with Artillery. Cypress has in its favor that it was previously used to test the Wazuh Dashboard. Likewise, for Fluentd there is documentation to integrate it and use it with Wazuh. Cypress, from the tests carried out, seems more versatile and powerful than Playwright. It all depends on the specific use you want to give it.
Of the rest of the tools, I would highlight OpenSearch Benchmark for Indexer Cluster tests (it is a very specific Benchmark, for OpenSearch). Locust could also be useful if you want to measure loading times in requests. Although it is true that this could be done with other tools.
Tool | Configuration Languaje | Multiplatform | Requirements | Generate report | Automated analysis |
---|---|---|---|---|---|
Prometheus and Grafana | YML | Yes | None | Yes | Yes |
Netdata | None (custom) | Yes | gcc, make, curl | No | Yes |
Nagios | - | - | - | - | - |
Zabbix | - | - | - | - | - |
Tool | Advantages | Disadvantages |
---|---|---|
Prometheus | Easy Installation and Deployment. Metrics Collection. Data Visualization. Scalability. | Configuration and Setup. Scalability. Customer Service. |
Grafana | Customizable Dashboards. User-Friendly Visualization. | Customization Effort. Limited Visualization Styles. External Data Storage. |
Netdata | Real-Time Monitoring. Lightweight. Automatic Dashboard Creation. | Limited Historical Data. Complex Configuration. |
Nagios | Alerting and Incident Management. Compatible Platforms. Documentation and Support. | Installation Complexity. UI/UX Design. Scalability. |
Zabbix | Metrics Collection. Scalability. Incident Management. | Installation and Setup. UI/UX Design. Data Visualization. |
Research must be expanded to the tools that are already being used. Specifically, we must review how hardware resources are monitored (tests and footprints). Also, alerts and specific Wazuh measurements are generated that are not possible to cover with an external tool.
Description
The objective of this issue is to investigate and identify the most effective tools, techniques, and methodologies for benchmarking testing. These tests will serve as a baseline for comparison, enabling the tracking of performance improvements or regressions. By doing so, benchmarking will help maintain and enhance the efficiency of the product. The proposed tools and techniques should meet the proposed functional and non-functional requirements. This research will enable us to determine the necessary functionalities to develop a performance test for the product, ensuring that it is comprehensive and effective.
Funcional Requirements
Capabilities
KPTM analysis and data collection
Proposed tools should be capable of monitoring the following KPTM (Key Performance Test Metrics):
Implementation restrictions
Plan
Related issues
Parent issue