Provided services
Product Development, Test Automation Services, Manual Testing Services, Early-Stage Innovation, R&D Services, Software Maintenance and Support Services
Customer
Spanish company, innovative solution provider within the medical technologies and telemedicine sphere. Scientific research included in the development of diagnostic and treatment methodologies of mental health pathologies.
Product
It’s an innovative system of treatment for patients with mental health disorders, developed on a unique methodology created by a professor of medicine. A comprehensive software solution designed for medical institutions and professionals in an effort to enhance the quality and accessibility of psychotherapeutic treatment.
The product allows the patients to interact with the methodology of treatment using interactive learning and testing scenarios. A range of exercise formats is utilized in the product, including drag and drop, selecting the correct answer from a number of choices, text entry, and more, which not only makes the treatment process effective but also interactive.
Besides, the system is enriched with special effects: scrolling, flashing, and smooth transitions, which add more fun to the process and maintain attention of the patients during their therapy.
Challenge
The challenging task during the beginning of our stage of cooperation with the client lay before our team. By this moment, the functionality developed with the help of a free tool had already been used by the client, and he had set the standard pretty high for integrating our solutions. The main challenge was to develop an approach that would enable us to integrate our unique exercise builder into the given UI without affecting the established processes of the client. This was an important requirement, putting emphasis on the conservation of resources and exploiting already available solutions.
The next level of complexity was the need to create our own domain-specific language (DSL) to describe training and testing scenarios, answering all the peculiarities of the project. Creation of DSL required us to foresee and take into consideration a great number of possible combinations and exceptions, which immediately raised questions about the efficient implementation of test automation, such as Data-Driven Testing.
These challenges had us come up with a harmonious solution that can retain maximum integration and reusability without disrupting the client’s workflows or incurring additional development costs from scratch.
Solution
The difficulty of the tasks and the high requirements that our team was expected to meet led to an elaborated solution that not only was able to meet the unique needs of the client but also to smoothly integrate into the systems already in existence. Drawing from a broad experience coupled with technological expertise, we could provide the following crucial solutions:
- Integration of Specialized Workout Builder: We developed the workout builder for integration with the existing customer UI through Java applets, which may then load training and testing scenarios created using a specialized, XML-based DSL directly from a media server.
- Implementation of DSL Development: In view of such a need for a language that describes the various scenarios, we developed our XML-based DSL. Of course, this provided us with the ability to take into consideration several possible combinations and exceptions, thus implementing efficient automated testing, including Data-Driven Testing (DDT).
- Java Applets and NetBeans IDE: It constructs test screens and forms in the visual editor of NetBeans IDE and hosts it on a media server. The Java Applet, which is connected to the server, downloads forms and plays them for the user in test scenarios. The applet supports multiple exercise formats such as: Drag and Drop, select the right answer from multiple choices, and text entry. Java Swing form creation by NetBeans IDE visual editor allowed medical professionals themselves to create and visually see the test scenarios without the help of a programmer.
- Component Customizations and Special Effects Addition: We customized various Swing components and added various special effects such as smooth scrolling, flashing, and smooth transitions to make the application more user-friendly and attractive.
Very short iterations, including the frequency of releases twice a week, have contributed a great deal to our project. Having this in place allowed us to respond very quickly to changes and requirements and be highly efficient in the satisfaction of the client’s needs. The releases were done with such frequency that there was continuous feedback between the development team and the client.his in turn allowed for immediate adjustment and improvement of the software. In this regard, agility refers to the development and deployment that played a vital role in sustaining project momentum and keeping stakeholders in line with the progress and respective outcomes of the project.
Development Approaches
Utilizing Data-Driven Testing (DDT)
Integration and the development of the domain-specific language are very challenging. Under such conditions, the approach based on Data-Driven Testing (DDT) is a powerful tool since large volumes of data and scenarios needed for testing of the DSL and integrated features can be managed efficiently. Following are multiple ways in which automation of testing, particularly DDT, can assist in your project:
- Automating the Creation of Test Data: Utilities were developed to create test data, which could automatically generate various sets of data, including every combination and exception our DSL would support. This helped us in the test cases and to make sure that the system was acting correctly under all conditions.
- Automation of Test Scenarios: Using the DDT approach, we conducted tests for applying different sets of data against the same test scenarios. Thus, we were able to validate how the DSL and all the integrated features would handle different inputs and usage scenarios.
- Continuous Integration and Testing: Automated tests were incorporated into the Continuous Integration and Deployment system, which means that tests would run automatically on a regular basis with every update made to the code. This allowed bugs to be found and fixed in as little time as possible, maintaining high code quality.
- DSL validation and verification include dedicated tests that cover syntax and semantics, with the intention of setting everything right in terms of requirements, both codified and correctly interpreted. More particularly, it was important for keeping the DSL flexible and extensible.
- Feedback and Optimization: We also used tools to collect and analyze testing results in order to find common issues and optimization points. This allowed us to carry out improvements related not only to product quality but also to the process of development and testing itself.
Technological Overview
Using software automated UI tests for the applet with the Robot class
As the test screens and forms were developed in a visual editor and put on some media server, the tool had to generate events as if it were really interacting with a GUI. A Robot class can impersonate users processing mouse clicks, keyboard key presses, and so on with GUI, so it easily lends itself to the testing of visual components.
A good quantity of individual Swing components and many custom effects were needed for this project. This capability of the Robot class facilitated testing under those conditions that most closely approximated the actual use of the application by end-users, simulating on-screen actions and testing the visual and functioning parts of the interface.
This greatly improved the speeds of test runs to be predictable and repeatable, leading to much more of an ideal situation for an Agile development methodology. In such context, the Robot class proved to be suitable for automation testing including verified functionality and look-and-feel tests of the application against compatibility with rapid iterations of Agile development methodologies.
Signing Java Applets with a Commercial Certificate
The reasons for this requirement were crucial to the successful execution of the project:
- Code Signing ensures that the code is not altered in any form after its release, and this is assured because the code is signed. This becomes crucial for applets operating in a browser since it adds authenticity and integrity to users and general security systems.
- Minimizing Security Warnings: Signed Java applets may trigger security warnings in a browser, especially for low-ranked certificates. Consequently, this application is signed with a commercial certificate to avoid such warnings and make interaction with the application easy for its users.
- Improving user confidence: With signed applications, the user will consider them even more reliable and secure, raising the level of trust from the users, which in turn improves their satisfaction.
Signing of Java applets with a commercial certificate implies attaching a digital signature to the applet to guarantee its authenticity and integrity. Major steps to implement signing in our system included:
- Obtaining the Certificate: To obtain the certificate, one needs to apply to a commercial certification authority (CA) and then proceed with a verification process to receive a certificate.
- Preparing the applet for signing: Compile all those components that need to be signed into a single archive file, such as a JAR.
- Signing Using JDK Tools: The ‘jarsigner’ utility of the JDK can be used for signing JAR files.
- Verifying the Signature: To verify the signature of the applet after signing, the same utility is used, called jarsigner. It ensures that a signature is correctly applied and the archive was not changed since it had been signed.
- Deploying the Applet: Upload the signed JAR file on a web server in its own right.
Testimonial
"IT outsourcing is a powerful tool in the hands of professionals. For an IT project to be successful, three conditions must be met: continuous information exchange, technical excellence, and high-quality standards. The developers from JazzTeam fully met these requirements during their work on the project for Euglia Telemedicine."
Result
The major outcome of the current project was the successful testing and deployment of the applet in numerous medical institutions. This, in its turn, greatly expanded the availability of various methods of treatment throughout the country and substantially decreased the cost of medical services provided within this scope. Such a result was possible due to dynamic loading and displaying the educational materials directly by the medical staff and bringing the role of external developers to minimum, simplifying the process of updating and adaptation of specific methods of the treatment.
The use of the Robot class in conjunction with DDT provides a wide range of various scenario- and data-driven UI test automation, adding to the flexibility and efficiency of testing. For this purpose, a custom XML-based DSL was developed for specifying test scenarios that provided a very thorough and flexible description of the processes of testing. Implementation of the Robot class was made together with these scenarios, therefore automating the running of tests, which positively affected the accuracy and reproducibility of testing.
This was developed by applying novelties in project and quality management methodologies. Agile, Jira, and automated UI testing allowed us to reach high quality and timeliness in changes’ implementation.
Technologies
Backend: Java Applets, AWT/Swing, Restful web services, Custom classloading
Test Automation: JUnit, Applet UI-testing features (FestSwing)
CI/CD and DevOps: Maven, Jenkins
Software Engineering and Management Tools: NetBeans forms, SVN, Jira