In this part of the tutorial, we are going to automate the web application monitoring with the help of JenkinsCI continuous integration server. JenkinsCI will also generate us reports which can be accessed by non-technical project stakeholders.
Once we get our web application projects up and running live, we have to constantly keep an eye on them. Such an activity works best as a scheduled and automated task.
In most cases we want to inspect the uptime of the web application as well as validate that all the important functionality is working as expected.
In this tutorial, we are going to setup such web app functionality monitoring with the help of JenkinsCI – continuous integration server and CucumberJS – a popular behaviour driven development framework.
Prepare to automatically monitor web apps
This tutorial has 2 parts. In the first one, we will cover the setup of test cases for manually testing live web apps in the headless web browser.
Behaviour Driven Development or BDD is the process which combines ideas of domain driven design and test-driven development process (TDD).
BDD as a process aims to involve business users and raise their interest for the actual the software development process. This is done through simple, English-like domain specific language. Such language allows non-technical users to describe the expected application functionality and use cases by creating a human readable scenarios.
This domain specific language is also understood by computers. It allows delivery teams to maintain English like functionality description tests cases against the actual software functionality. It capturing the feedback about which parts of the application are implemented.
Buisness users get a rapid feedback on the application development progress. They can read and understand which desired software functionality is already implemented and which is still pending.
The example of such domain specific language might be the following:
Scenario 1: Purchased items should appear in the shopping cart
Given a visitor add the new item to their shopping cart
When he goes to shopping cart page
Then shopping cart should have purchased item
This page aims to list the most popular BDD frameworks. With the short descriptions for each of them.
Continuous integration is the practice in the software building process where development teams have to maintain the central repository of their product code. All team members frequently / continuously merge their code changes to this central code repository.
Continuous integration has started as a part of extreme programming practice and now days is being used by many small and agile technical teams. The main goal is to reduce the project delivery times, integrate QA into the development process and apply test-driven / behavior-driven development methodologies.
Good choice of CI tools and services exists for development teams to address delivery lifecycle automation.
DevOps and lifecycle automation topics are getting lots of attention, especially in enterprise technology domain. New services and tools are constantly introduced by the community, sometimes offering improvements to development lifecycle flows.
Some continuous integration solutions are available only as SaaS (software as a service), others are self-hosted and the team has to install and maintain them on their own servers / infrastructure.
CI solutions also differ by the technology stack they are build upon, as well as having the proprietary and open source licenses.
The goal of this post is to list the most popular and commonly used continuous integration tools and services in one place. Together with a short summary about each of them.
JenkinsCI is an open source, enterprise grade continuous integration server. It has a large and active community of contributors and supporters, especially from within enterprise technology space. With over 300k global installations and more than 2000 community plugins JenkinsCI is a very popular choice for automating software delivery lifecycles.
This post will walk you through a hands-on installation and configuration of JenkinsCI to be run in your own environment. We will make this installation production ready by adding additional load balancer and by configuring user management capability of JenkinsCI.