Quality should be built-in, cannot be added on. Some companies focus on releasing projects and features as soon as possible, as long as they’re functional to some extend. In a way, it’s important as it keeps its users excited and gives employees pleasure in achieving the deadlines from Top management. To do so, “they need to compromise on Quality which leads to multiple issues”. Oh, wait… they certainly don’t want to compromise on Quality and these issues, where they are coming from, how this all happened? To analyze it we need to understand where and what are the problems and from where it all started. This problem starts with the mindset of “once development is finished, QA and Testing will start.”
I joined Al Tayer Digital as QA Engineer almost 3 years ago, we were a very fast-paced startup with a lot to deliver in such a short time in order to prove ourselves and our business to the world. In software development lifecycle, there are 3 main parameters to play around :
These 3 parameters come together and shape quality. Picking which parameter to play around with is always tricky and has pros & cons within itself. We learned it with the experience that whenever we compromised on “Quality” to fulfill other business goals, it came and it bites us back. But we always learned from our failures to continuously improve them. There is always something you can optimize on. In this blog, I just wanted to highlight some of the problems that we faced and their solutions that we opt.
Problems and Impacts
Although “Quality is everyone’s responsibility” but Testing is one of the stages of any standard software development life cycle whose main focus is to ensure the quality of the deliverable by testing it from different aspects of the integration. Different stacks of developers push their code and then its QA’s job to report the defects to ensure the end to end quality. In achieving this, some of the problems are :
- Inability to meet the delivery time: Many times the QA team does not get enough time to test the software application, so they have to squeeze the testing time which affects the quality and delivery of the product. Vague and unreliable timelines also embed negative feelings not only in QA but other teams as well.
- High software development cost: Insufficiency in exploring edge cases and lack of critical thinking also increase the maintenance efforts of the Product. Bugs slow the development process down, while frequent requests to customer support overload the system. Not only cost but it also increases anxiety level within the team.
- Lack of Planning: Instability introduces Adhoc testing requests which make the process slower and harder. Testers wouldn’t know what’s coming whether maintenance, change in requirements or new features. Basically they fail to plan to test. And planning is the most important thing as its the base of execution. I can’t emphasize more on planning so let me write something in a deadly way.
Failure in planning is like a coronavirus in the Software Development Lifecycle. It can be activated at any stage, at any point of time to anyone and you know its consequences.
- Improper testing which may lead to loss of business: Lack of logical thinking also impacts the leaking of the bugs and there’s a rule everyone should keep in mind that websites that don’t work properly don’t convert.
- Poor customer experience: Errors in software applications turn happy users into frustrated users who leave the website, app, or service once they find bugs. As a consequence, the product bounce rate runs high.
One of the most important and widely discussed trends within the software testing community is shift left testing, which means to start QA activities in the early stages of SDLC. Instead of overloading the QA team with tasks at the last stages of development the solution is to start testing early so the QA team will get enough time to test software application so they don't need to squeeze testing time. With a product team full of designers, product managers, developers, and QA testers it can be challenging to convince everyone that it is necessary for everyone to be on the same page to involve QA early in the cycle.
Benefits of Shifting Left Approach
I believe that most of us know the basic difference between Testing & Quality. Testing is all about identifying or uncovering the defects in the functionality and Quality is about meeting the users’ requirements. It is also referred to as the ‘fit for purpose’.
Shifting left in QA is all about applying our thinking on the lines of ‘fit for purpose’. No process can be 100% perfect but we are using this approach to overcome our problem and they are helpful in :
- Improved Requirements and design: Through continuous Shift-Left testing and brainstorming sessions, roadblock areas, bottlenecks, and possible performance failures are identified in advance. Even though these discoveries may lead to new design alternatives, they are improved versions of the original idea. With this approach, QA’s can provide feedback on user stories which can help to resolve logical conflicts and discrepancies in requirements.
- Defects are identified early: It gives more breathing room to tackle mistakes immediately after they are spotted. When QA is involved early, we can rest assured that the project will progress smoothly. More defects will be identified earlier in the project, requirements will be groomed more quickly, and money and time restraints can be met more easily.
- Enhanced team bonding between developers and testers: Shift Left approach just does not end with the Testers alone. Writing Test Cases before the code actually comes into the Testing stage will also allow the Developers to take more ownership of their code and increase their responsibilities on testing. This extra layer of testing also creates positive vibes in the team.
- Massive time and effort saved: It is more expensive to fix things later in SDLC, therefore getting QA involved as soon as possible allows issues to be fixed when it is less expensive to do so.
- Exploratory Testing: Once we plan better we will get extra time and while UAT is going on, QA can continue to do Exploratory Testing. This will assure that the overall project is successful.
- Organization and efficiency: Testers can accelerate project delivery by finding defects earlier in the software development life cycle, minimizing the time between releases, and thereby gaining organization trust.
Achieving Quality is a team responsibility. By “team,” I mean everyone involved in the creation of a feature or product: developers, testers, project managers, product owners, and stakeholders. Each of these roles is critical to software quality and the process used to take it from conception to deployment. Introducing new ideas and processes can be frightening for some teams because change is hard. And it’s even harder when we don’t have clear answers and boundaries.
We all make mistakes and there could be some lessons learned while execution but the key takeaway here is that Shift Left is much more than a process change, it is a mindset and culture shift to step up.