We know that green indicates positive. This article is all about green, the positiveness and how testing brings that positiveness in software delivery and in what way green is conjugated with testing. Overall, I plan to use green in 2 different ways: first; I will talk about how testing gives green signals to the application or stakeholders team, providing assurance & confidence before release. Secondly, I will take each of the 5 letters of the word ‘green’ and how they are related to testing delivery and how test execution results give confidence for the application team to acquire the green signal to go live.
Taking traffic signals as an example, the green light tells traffic it can go. So, when in traffic, we all wait for the green signal. In the same way, testing results tells the application team to go ahead to live or not. If the testing results look green and application owners/stakeholders are agreed, then software gets the green signal for deployment. Overall, end to end through testing reduces the overall risk, gives assurance before deployment and ensures that there will be much less chance of surprises in production. When I say testing results, I am trying to say holistically in terms of functional testing results, non-functional testing results, and end-user requirements as all of them must have a green status to get the overall green signal for the project. If any of these does not have a green status, then iterative rounds of testing are required until green status achieved before proceeding to the next testing steps. So, we usually order the steps as follows; unit testing (mostly done by developers), followed by system testing, integration testing, user acceptance testing, nonfunctional testing like performance testing (like load, stress, endurance, spike, volume), security testing, fail-over testing etc. Each of these testing phases must be green to proceed with the next element of testing to get the overall green status for the the testing stage which then signals green to proceed with deployment.
Let’s talk about a different perspective and what each of the 5 letters of the word ‘green’ portray and how they are related to testing delivery to bring confidence to the application team which in turns gives the green signal to go live. This is what I believe the 5 letters refer to and without each of these, testing is incomplete. Each of these 5 elements are important for gaining the green signal of application deployment.
• Ground truth
The first letter of the word green is ‘g’. For me, this g stands for ground truth. This is like a reality check of the current application status. I believe, testing tells the ground truth of the application in terms of expectation and reality. Ground truth is a term used in meteorology and is recently getting widely used in statistics and machine learning. In software development life cycle, testing results express the ground truth of the application. When the ground truth of the application shows green, only at that time will the deployment team receive the green signal for go live.
The next letter is ‘r’. For me, this r stands for requirement. Software can’t be created without the initial requirements. Testing tells whether these client requirements have been met or not. Based on the testing results show whether all the client requirements are appropriately met, the application team is given the green sign and only when it is green, then production team gets the green signal to go ahead with the planned deployment.
The third letter of the green word is ‘e’. In my opinion, this ‘e’ stands for effectiveness. Software is created and expected to provide the desired result known as effectiveness. When software is deemed as effective, that means it is working well and is fully operational. Testing results show that whether software is effective or not prior to go live. Based on test execution results when the software is effective, it provides a green rating to the application owners which supports the production team in acquiring the green signal to proceed.
Next up we have the letter ‘e’ again. I believe this ‘e’ stands for environment. Environment plays a major role in software. And it applies to all stages of SDLC- software development life cycle. It is expected that the production and testing environment should be exactly similar, not only in terms of size, but also in terms of the configuration management. This will ensure that the test execution results are correct and precise. In many cases 25% – 50% scalable environment of production is quite often seen due to associated costs. In this case, extrapolating the test results assists to ensure the green status. However, remember that the configurations must be identical in both the environment or else the test execution results will not be correct and those results can’t be used as a decision maker. Also, the environmental data and its size plays a role in test results. So, test environment has an important role and based on which test results occurred, you will decide whether the software gets a green status and then forward this positive signal to application owner or stakeholders to go ahead.
The fifth letter of the green word is ‘n’. For me, this ‘n’ stands for non-functional. Applications can’t be completed without non-functional attributes. When I say non-functional attributes, I mean performance, security, usability, availability etc. Without non-functional testing results, we are unable to say that testing has been completed. If non-functional test results are within service level agreements, then the application owners will obtain a green status and only after the green indicator for live deployment is called out.
In a nutshell, from both perspectives, testing helps to convey a green status, brings assurance, confidence and positiveness in software delivery and signals the overall green to the application owners to go live.