# Comparison of Multi-Agent Platform Usability for Industrial-Grade Applications
## 5 AOSE in Contrast to Modern SDLC
### Test Support  
As indicated in Section 4, **Testing** is one of the most critical stages of modern software development. Through early detection of errors and failures, tests support the mitigation of risks. They provide more control over concurrent incremental development and are particularly helpful when the implementation is carried out by multiple teams. Moreover, tests are conducted frequently when an agile SE process is implemented. Additionally, applications with high test coverage can be considered more reliable and transparent, for example, in terms of satisfying acceptance criteria. Within the domain of distributed systems, such as MAS, integration and scenario tests, which allow for monitoring and verifying the results of cooperation between multiple entities, are especially important. In current AOSE, software testing has been severely neglected. Even though some works introduce dedicated frameworks for testing [75], they provide custom-made tools that, in the context of industrial applications, are difficult to incorporate into standard technologies and libraries. This particularly pertains to the automation of CI/CD tools. In such cases, industrial-grade developers working on specific technology stacks would need to learn completely new testing approaches. Moreover, the tools introduced hinder the possibility of automated multi-platform testing, which can become essential in the context of stress and load tests. As in previous sections, Table 6 describes the support for automated and standard-based tests, within each of the reference platforms. In order to support running test cases, JADE offers a dedicated JADE Test Suite add-on. However, the framework does not provide any means of performing tests that are common to modern standards and technologies. While modern Java-based systems use libraries, such as Mockito, JUnit, or Assertl, the description of test cases in JADE Test Suite is definable only through XML files. Similarly, there are no methods for writing tests that can verify the communication between agents and external services. For instance, considering an application that combines JADE agents with a REST-based system, integration tests would need to be executed according to a previously prepared test context, which is not possible in the JADE Test Suite. Furthermore, this dedicated framework cannot be integrated with common tools for assessing test coverage, which is considered necessary by some large industrial companies to verify whether components are production-ready. Similarly, the JADE Test Suite is incompatible with automation tools such as Jenkins. Therefore, writing integration tests in JADE requires adding extensions to the standard test runners. However, here, developers encounter yet another issue. As briefly mentioned in Section 5.3, initiated agents cannot be retrieved from containers by default. While this can be achieved using some workarounds (e.g., using reflections to change the accessibility to private fields), these solutions do not match production system standards. Lastly, JADE does not automate tests to verify communication between agents residing in multiple agent platforms or agent containers. Integration tests of this type will require the preparation of test contexts and may not be easily automated. In this context, Jadex faces similar issues. In particular, it also relies on a dedicated GUI for the scenario tests. Although it provides JUnit-like support for defining test cases, it is still not automatically extendable for providing additional integration configurations (e.g., setting up containers for database testing). Therefore, all of the issues mentioned for JADE, which are related to the custom-based testing component, also apply to Jadex. However, one small difference between these two agent platforms is that Jadex offers easier access to initiated agents than JADE. Nonetheless, custom extensions are still required to support integration testing. Finally, SPADE does not provide any built-in means to facilitate tests.