Practical Tips to Speed up the Software Delivery Performance

This post will give you enough ideas to improve software delivery performance (and Automation Plays a key role here) and how to measure software delivery performance using statistical methods. I would like to share industry proven and practical tips which helps you speed up the Software Delivery Performance.

Accelerate classified the capabilities into 4 categories:

Technology & Automation capabilities:

Product and Process Capabilities:

Lean Management and Monitoring Capabilities:

Cultural Capabilities:

In next couple of articles, we will go over these capabilities one by one.

How to Speed Up Software Development?

Why is Faster Software Development Important?

Faster software development is important because it saves time and money.

In a business world that is more competitive than ever before, it’s important to be able to develop software as quickly as possible. Today’s software developers need to be able to build out new features for the company’s product or service, and they need to do so quickly. The faster that this can happen, the less time is wasted, which means that companies will be more prepared and have a higher chance of success in this competitive market.

What Practices Will Help You Speed Up Your Software Development?

  1. Shift Left through Automation
  2. Implement CI/CD
  3. Automate as many tasks as possible – coding, data entry, testing, etc.
  4. Make defects visible so they can be fixed early and often – unit testing, nightly builds, etc.
  5. Know what you want before you build it – are requirements clear? does the design make sense? are there risks or side effects we should know about?
  6. Do things in parallel wherever possible – running multiple tests, running multiple code reviews at the same time, etc.
  7. Be responsive to changes in requirements and design from stakeholders and teammates
  8. Limit your work in progress

Testing in Production at LinkedIn

If you can’t confidently deploy to production, write tests until you can! Learn about all of LinkedIn’s testing processes for releasing features to its 500 million members with confidence.

The company’s primary app, linkedin.com, receives around 1000 commits every week from over 300 different contributors. We have other products that span 5000 codebases in addition to flagship. Let’s take a closer look at: – in-production testing – feature flags and canaries – microservices testing – putting machine learning models to the test – putting search and relevancy algorithms to the test – engineering for resilience This session will assist you in developing a product testing plan. Continue to write excellent tests!

Agile Without Dedicated QA [Video]

In the early days of Agile, methods such as Extreme Programming advocated for shipping without a QA phase. In fact, they often didn’t have dedicated software testers or even bug-tracking systems. And yet there are stories of these teams producing an order of magnitude fewer defects than normal. What did these teams do, and why did it work? And what role does that leave for QA? In an age where Agile is interpreted to mean “sprints” and “story points,” the technical side of Agile is often forgotten. This presentation discusses the technical underpinnings of Agile and how they lead to true business agility.

Click here to download the slides.

Author: James Shore, The Art of Agile | First published at: PNSQC 2019

Agile Software Testing – Techniques and Tools (100% Free Udemy Course)

Agile Software Testing – Techniques and Tools (100% Free Udemy Course)

Limited Period Offer (expires in 1 day i.e. on 9/24). 3400+ students enrolled so far.

Go to https://www.udemy.com/course/agile-software-testing-techniques-and-tools/ and apply coupon 00533267C97F10EE5634

Or Direct Link: https://www.udemy.com/course/agile-software-testing-techniques-and-tools/?couponCode=00533267C97F10EE5634

What you’ll learn

  • Agile Testing and Risk Assessment: Test-driven and Behavior-driven Development, Test Levels, A Scrum Tester, Quality Risks in Agile Projects
  • Techniques in Agile Projects: Estimation of Testing Effort, Test Basis in Agile Projects, Definition of Done, Acceptance Test-driven Development, Functional and Nonfunctional Black Box Test Design, Exploratory Testing
  • Tools for Testing in Agile Projects: Task Management and Tracking Tools, Communication and Information-sharing Tools, Test Development and Configuration 

This course includes:

  • 1.5 hours on-demand video
  • 2 articles
  • 34 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of completion

Go to https://www.udemy.com/course/agile-software-testing-techniques-and-tools/ and apply coupon 00533267C97F10EE5634 Or Direct Link: https://www.udemy.com/course/agile-software-testing-techniques-and-tools/?couponCode=00533267C97F10EE5634

Testing Cycle in Agile Process

There are typically 3 types of automated tests that are run in a CI/CD pipeline

1. Sprint Level Tests

  • These are new automated tests that have been written to test the functionality of the Sprint. They should be contained in a
    separate test suite that runs once a day to ensure the newly implemented functionalities are working as expected.
  • They are later merged into the regression tests suite.
    In the acceptance testing phase, usually the teams have a high level acceptance test plan that ensure the critical functionality of the systems are still working as expected afer the new
    features have been merged into the main code branch. Also, the smoke and regression tests are run again in parallel.

2. High Level Smoke Tests

  • These high level automated tests run on every code check in to ensure the critical functionality of the system is still working as expected. This could be a mixture of UI, API and Unit Tests. The point of this test is to get quick feedback about the system and it usually should finish running within 5 – 10 minutes.

3. Daily Regression Tests

  • These tests are run to ensure the new code added to the system did not break existing functionalities. They are more detailed than smoke tests as they cover end-to-end flows through the system. They are usually run at least on a daily basis and probably multiple times before a release.
  • Throughout this process, teams may continue to do manual scripted testing, exploratory testing and/or risk-based testing depending on their level of continuous testing maturity, application complexity and risk tolerance.

Source: Getting started with Automation (testIM E-Book). Click here to download.

Challenges with Traditional Testing and the adoption of Continuous Testing

Organizations now expect software development teams to deliver more, and more innovative, software within shorter delivery cycles. To meet these demands, teams have turned to lean approaches, such as Agile, DevOps, and Continuous Delivery, to try to speed up the systems development life cycle (SDLC). After accelerating other aspects of the delivery pipeline, teams typically find that their testing process is preventing them from achieving the expected benefits of their SDLC acceleration initiative. Testing and the overall quality process remain problematic for several key reasons:

[[Also Read: Understanding the Continuous Testing in DevOps]]

  • Traditional testing processes are too slow. Iteration length has changed from months to weeks or days with the rising popularity of Agile, DevOps, and Continuous Delivery. Traditional methods of testing, which rely heavily on manual testing and automated GUI tests that require frequent updating, cannot keep pace. At this point, organizations tend to recognize the need to extend their test automation efforts.
  • Even after more automation is added to the existing test process, managers still lack adequate insight into the level of risk associated with an application at any given point in time. Understanding these risks is critical for making the rapid go/no go decisions involved in Continuous Delivery processes. If tests are developed without an understanding of what the business considers to be an acceptable level of risk, it is possible to have a release candidate that passes all the available tests, but which the business leaders would not consider to be ready for release. For the test results to accurately indicate whether each release candidate meets business expectations, the approach to designing tests must be based on the business’s tolerance for risks related to security, performance, reliability, and compliance. In addition to having unit tests that check code at a very granular bottom-up level, there is a need for a broader suite of tests to provide a top-down assessment of the release candidate’s business risk.
  • Even if testing is automated and tests effectively measure the level of business risk, teams without a coordinated end-to-end quality process tend to have trouble satisfying the business expectations within today’s compressed delivery cycles. Trying to remove risks at the end of each iteration has been shown to be significantly slower and more resource-intensive than building quality into the product through defect prevention strategies such as development testing.
  • Organizations adopt Continuous Testing because they recognize that these problems are preventing them from delivering quality software at the desired speed. They recognize the growing importance of software as well as the rising cost of software failure, and they are no longer willing to make a tradeoff between time, scope, and quality.

Continuous testing has evolved to become an important phase in modern application development and delivery. Its very important for today’s testers to understand the Shift Left and Continuous Testing practices. It is not possible achieve Shift Left / Continuous Testing without enhancing the skill set to SDET/Full Stack QE

Understanding the Continuous Testing in DevOps

Continuous testing was originally proposed as a way of reducing waiting time for feedback to developers by introducing development environment-triggered tests as well as more traditional developer/tester-triggered tests. Continuous testing is the process of executing automated tests as part of the software delivery pipeline to obtain immediate feedback on the business risks associated with a software release candidate.

[[Also Read: Challenges with Traditional Testing and the adoption of Continuous Testing]]

Following Key Points will help in understanding the Continuous Testing:

  • Continuous Testing’s primary goal is assessing business risk coverage
  • Continuous Testing provides instant insight on whether a release candidate is too risky to proceed through the delivery pipeline
  • Continuous Testing establishes a safety net that helps the team protect the user experience in accelerated development processes and avoid software failure headlines
  • Continuous Testing expects testing to be embedded within the development process, not tacked on at the end
  • Continuous Testing is seamlessly integrated into the software delivery pipeline and DevOps toolchain
  • Continuous Testing expects a stable test environment with valid test data to be available for each and every test run
  • Continuous Testing embraces everything from “shift left” (unit, component, coverage…) to “shift right” (monitoring/ APM, Testing in Production)
  • Continuous Testing involves executing the right set of tests at the right stage of the delivery pipeline—without creating a bottleneck
  • Continuous Testing delivers actionable feedback appropriate for each stage of the delivery pipeline
  • Continuous Testing evaluates each layer of a modern architecture at the appropriate stage of the delivery pipeline
  • Continuous Testing includes end-to-end tests that realistically assess the end-user experience across all associated technologies (front-end and back-end)
  • Continuous Testing’s tests must be broad enough to detect when an application change inadvertently impacts functionality that users have come to rely on
  • Continuous Testing reduces false positives by prioritizing robust, flexible modern test frameworks over brittle scripts
  • Continuous Testing involves continuously reviewing and optimizing the test suite to eliminate redundancy and maximize business risk coverage

source