Monday, June 29, 2020, 11:30AM – 1:30PM
- John Shepherdson, CESSDA ERIC
- Matthew Morris, CESSDA ERIC
The operation of sustainable services provided by Social Sciences and Humanities Research Infrastructures (such as CESSDA ERIC) is only possible if the software components used to deliver them are production ready. In recognition of this requirement, CESSDA has long been working on defining its own internal procedures to ensure appropriate quality levels are set and met. Where software components fail to meet these standards, Research Infrastructures typically experience high installation, configuration and annual maintenance costs, lack of support, and difficulties with modifying or upgrading the software. In short, a general lack of “fitness for purpose”.
In the past few years, CESSDA ERIC has turned its attention to software maturity , as a means of improving the quality of the software components that make up its tools and services, by providing architectural and usability guidelines, specifying quality standards, providing a common technical infrastructure and targeted training sessions for its software developers.
Based on our recent experience of providing internal training on developing and deploying ‘fit for purpose’ software components, we are able to offer a session for the SSH community on software testing strategies and tools.
Trainees will be introduced to the mechanics of the build/test/deploy cycle for Docker containers via an example application.
Each component is built and deployed by the Jenkins Continuous Integration tool.
The build cycle (aka the pipeline) is controlled by a Jenkinsfile
Source code is scanned by SonarQube to check quality:
- it identifies any significant issues (such as lack of test coverage or known security vulnerabilities)
- if pre-defined SonarQube Quality Gates are not passed then it stops the pipeline and abandons the current build
Learning is achieved by a series of short introductory theory presentations each followed by a relevant hands-on practical session. The diagram below summarises the training content.
The trainees will become familiar with different types of testing strategies, and examples of tools (such as Jenkins, SonarQube, JMeter and Selenium) that can be used to automated them.
- Have experience of developing production-quality software;
- Be comfortable with the Linux command line and Git SCM commands;
- Have access to a laptop computer running Linux, MacOS or Windows 10 that they can bring to the workshop (some software packages need to be pre-installed, which will be specified in advance);
- Be familiar with the concepts of: software containers (such as Docker);
- Continuous Integration; cloud computing;
- Be prepared to spend a few hours on pre-work in order to build their own component to use in the practical sessions. Details of what to build and where to put the source code so that it can be used in the training session will be specified well in advance.