Ensuring Quality of a Software Application

The SQA Team Perspective

Ensuring Quality of a Software Application

A dedicated Software Quality Assurance (SQA) team is essential in the modern software industry to deliver quality product to their clients. The goal of the SQA team is to achieve the best possible product. The scope of best possible product includes ensuring critical functionalities, validations of the core features of the product and verifying the SRS.

SQA team helps to prepare better requirements during the early stages of Software Development Life Cycle (SDLC) by bringing a unique perspective i.e., addressing any concerns regarding incomplete or missing requirements, finding defects in early stages of the product development, perform integration testing to ensure that the micro-service components can interchange data between them properly and system testing to ensure that a feature is working properly. After finding the defects which are represented using the jargon bugs in typical SDLC process, an SQA Engineer registers them in a bug tracking system, negotiates with developers to fix the bugs and tests the fixed bugs before the release is sent for production. So, the SQA team helps the company to reduce overall cost by adopting QA process in early stages of SDLC as well as help to achieve goodwill by ensuring the applications’ functionality, security and responsiveness as per requirement.

Combined-PMLC-SDLC-and-SQA-process-Researchgate.png

Pictorial 1: SDLC and SQA process in one frame (Image courtesy of Researchgate)

Software Quality Assurance has a textbook definition and if asked different people will give different definitions of it. If I am asked its definition my answer is simple: ensuring quality of a software means taking the application quality to a certain ‘level’ where I am confident enough and happy to use it on a daily basis in my day to day life as an end user. This level will be achieved by ensuring seamless flow of the application, smooth running of the core functionalities without any hitch and an impeccable user experience.

In one single sentence Software Quality Assurance is a practice, an act to be performed on every single living day, an aspect which improves gradually day by day. From the perspective of an SQA team, ensuring the quality of an application means making the application flow smooth, making no compromise with the user experience (UX), making sure the core functionalities are flawless. In this article, we will discuss the process SQA teams should follow to ensure high quality of a software application.

First of all, we should practice some bookish approaches rigorously. Among the textbook SQA processes, we must ensure that smoke test, sanity test and regression tests are completed on a regular basis. Lets not get into the details and definitions of these approaches. But, after every sprint release or after confirmation of every release build, SQA team must cover all the checklists containing in smoke, sanity and regression test suites. Even though one of the basic software testing principles states that repeating the execution of same test cases will not find new bugs, it is mandatory for ensuring quality that we are completing these textbook approaches efficiently and without any error. Our goal here is not to find new bugs but to ensure that the critical functionalities of our application are running without any hiccup. Another task for the SQA team in this department is to keep the corresponding test suites up to date on a regular basis. Maintaining test cases efficiently is also a basic stepping stone for ensuring quality.

Sanity_Smoke_Testing.png

Pictorial 2: Flow of smoke, sanity and regression testing (Image courtesy of guru99.com)

Next in line comes some specific platform dependent checking of the application. Nowadays, almost every application requires internet connectivity. So, it is necessary to monitor the application behavior in different strength of network connectivity. For mobile and desktop applications we need to test cross OS stability. OS stability checking can be extended for mobile applications as there are currently various versions of android and iOS running in the market. SQA team should be able to sign off the application for different OS platforms. For mobile applications, application behavior in device foreground and background needs to be checked. Also, the handling of push notification is another mobile application specific case to be checked. For desktop applications, checking hardware compatibility is something which need not to worry about in the other aspects. In terms of web applications, it is necessary to check the application in different browsers in different platforms like desktop, mobile, tablet etc. Checking UI responsiveness across these mentioned platforms is a big part in ensuring quality of a web application. These specific cross platform tests ensure the stability of our application.

Proper end-to-end test of every feature is another aspect SQA team must incorporate with their tasks. End-to-end testing of a feature means that we have checked all the corresponding components associated with this feature. Besides checking the front-end application behavior we also need to analyze the necessary database schemas and tables to check if all the required information are stored into the database successfully and in parallel we need to check the application logs of all related micro-services and validate that there are no error logs in the positive scenarios. When testing web applications, we should always check the console log and make sure that there are no failed items in loading resources or in an API call. Even when we are in our integration or system testing phase, this approach will improve the quality practice significantly. In case of mobile applications testing, we need to make sure that the application does not crash in critical scenarios.

Usability testing is our next achievable goal. This testing is should aim to improve the overall UX. SQA team should always push the organization to maintain an improved and seamless UX. This is why possessing good instincts and knowledge of UX is an essential quality from the whole SQA team. Checking the typos and grammatical mistakes in UI is also very important. Another important trait is to improve the small details. Like, if balance or any amount displayed in the UI, these should be comma separated at every thousand digit; date formats should be same across all the UIs of the application; user sensitive information like password, bank account information should never be exposed in plaintext in database or application log etc.

user-experience-testing-Sciencesoft.png

Pictorial 3: Benefits of usability testing (Image courtesy of Sciencesoft)

Lastly, we have our non-functional testing aspects. Security testing is a major non-functional approach we should take for ensuring better quality. The form of security testing we should focus on is Vulnerability Assessment and Penetration Testing (VAPT). The purpose of VAPT is we figure out the security risks in our system with some penetration testing approaches and uncover the vulnerabilities and their impacts and we take proper measures to prevent them. In the modern era where millions of user data is becoming susceptible to hacking frequently, security testing is becoming an essential focus point in ensuring a better quality product.

VA.PNG

Pictorial 4: Steps of vulnerability assessment

PT.PNG

Pictorial 5: Steps of penetration testing

Another non-functional approach we should consider as a must is performance and load testing. Every software application targets to serve as much user as possible. In order to achieve this target, it is an essential job from the SQA team to do extensive level of performance and load testing. Following proper methodology of performance and load testing will uncover many bugs which cannot be explored during functional testing phase and will also give us a clear picture how well our application is going to perform in the live environment.

Performance-testing-process-testingexperts.jpg

Pictorial 6: Steps of performance testing (Image courtesy of testingexperts.com)

Users always tend to rely on a software application which is easy to use, serves the intended purpose without any difficulties. Only way to achieve that is by maintaining a high scale of quality. SQA team has a strong binding to ensuring quality since the word ‘quality’ is attached within the team name. Maintaining the aspects we have discussed above will certainly be the key to ensure quality but we should always remember that quality is a collective and collaborative effort from the whole organization.