Reliable Delivery with Comprehensive Shift-Left Approach

Sevda Aynacı
KoçSistem
Published in
8 min readApr 17, 2021

Hi All,

In today’s post, i will share with you how KoçSistem adopted a Shift-Left Testing Approach with DevOps practices, helping to reduce bug fix costs, shorten time to market and identify unexpected errors earlier in the software development cycles. And will learn how we are adopting UFT One to manage the test cycles within our CI/CD pipelines, see how the introduction of shift-left testing enables agile teams to make quality the responsibility of developers and testers.

First of all, i will focus on the most common challenges we faced during software development life cycle which I am sure will be familiar to you :)

Common Problems that almost Everyone Has Experienced
  • The most important challenge that cause the others occur is Lack of Test Strategies. Because to deliver a reliable software application, having an efficient test strategy is absolutely imperative. The strategy should cover the goal you want to achieve, tactics which are the details of how to put the strategy into play, what tools to use, and how, what approaches/practices to adopt, all phases of quality control and defining clear responsibilities.
  • In the rapidly developing and transforming technology world, applications are developed that are more complex and have more integration points compared to previous designs. These types of applications are error-prone applications. This results in the inability to offer an error-free product.
  • Unfortunately ,there are people who think that quality is only the responsibility of the tester. So Non-Shared Quality Responsibility cause the tester to be crushed under the workload and increase time to market.
  • Not applying agile practices such as Code Review, Pair Programming, Testing Driven Development or not implementing automatically quality checks cause code quality problems.
  • Struggling to build and execute test scenarios that adapt to the pace of change needs too much manual effort.
  • Not adopting test automation and testing later in the life cycle delays instant feedback. While this situation delays the detection of bugs also increases bug fixing cost.
  • As a result, the spread of unavoidable bugs to later stages increases customer complaints, which will damage our reputation.

How Could We Overcome the Challenges?

Answer is creating a strong quality transformation strategy based on Agile and DevOps. The point that should not be missed here is that the strategy must be compatible with the culture of the company, otherwise, as Peter Drucker says, “ Organizational Culture eats strategy for breakfast ” and your incompatible strategy soon fail. So where should we start ?

  • First of all, it is necessary to change the quality perspective of the people who are at the center of the transformation, make them believe in the change and explain of the necessity and benefits of change clearly; in other words, you should create and spread a culture of quality overall the organization.
  • Then, you should adopt appropriate approaches and practices for your needs.
  • And finally you should choose the right toolset that fit your purpose.
Solution Model

UFT One

One of the success criteria in test automation is choosing the right tool that suits your needs and team skills. It would be wrong to say that a tool is good because everybody uses it. Therefore, we recommend that you do PoCs before choosing the tool you will use.

In this way, you will see the features that the tool will and will not offer you, discover the problems that may be encountered and the situations that may be risky and also you will experience for yourself whether it is suitable for your needs and competencies.

Until today, we have experienced many tools in the ecosystem and integrated the pipeline but in this article I will focus on Micro Focus UFT One .

I would like to mention the distinctive features that encourage UFT One to use both in our own test processes and in our customers’ test processes :

Distinctive Features of UFT One
  • You can install and setup UFT One easily by following the comprehensive documentation in UFT Family knowledge base systems.
  • Thanks to its advanced UI and visual designer, both testers and business analysts can quickly learn to develop tests scripts easily.
  • By Record and Playback feature increase test script generation speed without need to have programming skills.
  • The most challenging point in functional test automation is fragility. By powerful object recognition feature you can create automation tests that resist user interface changes so decrease maintenance effort.
  • UFT One enable end-to-end testing, across all layers of the application this accelerate end to end testing and increase test coverage.
  • By pipeline integration, team can get insight into quality of application continuously.
  • Produce a comprehensive test execution report, with all of the information required for developers and testers to understand the context, the environment ,the flow, and the events leading up to errors.
  • UFT One supports over 200 applications and technologies, including SAP, Salesforce, Java, web, mobile and enables a consistent testing experience for all teams across all supported technologies.

In this post, i don’t give more details about UFT One pipeline integration. For more information about UFT One CI/CD integration, please visit UFT (Unified Functional Testing) on Azure Pipelines article.

Agile is all about shortening feedback loops. So our automation tests must run fast and provide quick feedback. You need to keep an eye on this metric and optimize your automated tests when required so that the automated tests do not become a bottleneck on DevOps Pipeline.

Therefore, we position our smoke tests to run after each code change, while our more extensive tests such as regression suites are scheduled to run nightly.

Shift-Left Testing Approach

Shift-Left Testing Approach

Until very recently, software testing was an activity that was carried out towards the end of the software development life cycle, whose purpose was only to find errors in the software.This caused increased bug fix cost and reduced customer satisfaction.This negative experience introduced a great revolution in the software industry and gave birth to a new concept called Shift Left , which means :

  • Shift the Testing Phase to the Left from the end.
  • Involve testers early at every stage throughout.
  • Test early, often and continuously .
  • Change testing perspective from Defect Detection to Defect Prevention .

With Shift - Left Testing Approach :

  • Testers understand the requirements, gain complete knowledge about the product, design real-time scenarios based on the software behavior that customer expected which would help the team in identifying the defects earlier even before coding is done.
  • Identifying defects earlier is more cost-effective, saves time and effort ,improve the quality of the software and customer experience.

To adopt Shift-Left Testing successfully :

  • The team needs to change its mindset from the traditional approaches.
  • Testers should improve static testing skills such as technical review, walk-through, inspection to review requirements in advance and provide fast and instant feedback to team.
  • Developers should be included into testing activities to test their code before pushing it to the main branch so the merged code is cleaner and less error-prone.
  • Team members should adopt Behavioral Driven Development and Test-Driven Development practices, which helps in preventing the defects induction into the software.
  • In addition to develop test automation scripts, testers need to improve their coding skills to be effective in code reviews and support developers who implement unit tests , this improves team collaboration.

Shift-Left is a building block, but isn’t enough. Shift-Left focuses on the pre-production part of the SDLC, whereas Continuous Testing focuses on the post-production stages in addition to pre-production too. To ensure end-to-end software quality you need to transition to more holistic Continuous Testing where automated tests for different levels are frequent and distributed across the pipeline.

Continuous Testing refers to the execution of automated tests that are carried out at regular intervals every time code changes are made.These tests are conducted as a part of the software delivery pipeline to drive faster feedback on recent changes pushed to the code repository.

When testing is done with each build (especially during unit testing), the errors that are found are smaller, easier to detect and locate, and subsequently, less costly to fix.

Here is the Koçsistem Continuous Quality Pipeline that starts with code quality checks with SonarQube and continue with test automation that is implemented for different test levels with different tools.

KoçSistem Continuous Quality Pipeline

Continuous Quality Pipeline helps teams to :

  • Early discovery of critical bugs
  • Seamless collaboration among developers and testers
  • Assess the quality of software developed at each stage
  • Drive faster test results which leads to improved code quality
  • Ensure minimal failure rate by repeated testing for new releases
  • Faster time to market with a viable product and continuous feedback mechanism

Chapter Model

If you want to change and transform, Culture is the most important point.As i mentioned before, It is necessary to make people to believe in change and to explain the necessity and benefits of change clearly. If people trust this change , they become an organization with a certain quality maturity and culture in accordance with Agile principles.

With Chapter Model, we aims spreading knowledge ,finding solutions to problems with common sense and sharing best practices and experiences.

QA Chapter members will share their quality responsibility with other team members by spreading the knowledge, experience and quality awareness they have gained with this model and will contribute to deliver products of high quality.

We use Confluence internally as knowledge base. We also contribute to the development of the industry by publishing the value we have created inside with articles on Medium.We discuss and evaluate up to date technologies together by organizing Lunch & Learns with wider participation.

In a nutshell, the main benefits of the approaches and practices we have adopted are :

  • By identifying bugs early in development life cycle reduce bug fix cost.
  • Earlier means faster. When you find defects earlier, you can also fix them a lot faster. As a result Deployment Frequency is increased and the time between releases reduce significantly so delivery speed is increased.
  • Faster delivery of software with less defects increased customer satisfaction.
  • As the testing occurs more earlier,frequently and in smaller units, the team receives Faster, Instant and Continuous Feedback about the product in smaller unit checks.So, it becomes much easier to find the root cause of the error, more manageable, and faster to resolve the problem.
  • Continuous Quality Checks reduce and mitigate risks and let to deliver more reliable products.
  • With the change of quality perspective, quality responsibilities shift to full team and increase team collaboration.

I hope my article has been useful for you.

See you in my next post, stay tuned :)

--

--