Showing posts with label agile testing. Show all posts
Showing posts with label agile testing. Show all posts

Sunday, 27 September 2020

How are Agile, DevOps, and Continuous Testing connected

 


Digital transformation brought about by quality software applications and robust hardware platforms helps to create a competitive advantage for enterprises across verticals and geographies. Now it is no longer about choosing between speed or quality of software but to incorporate both when delivering to the end customers. With Agile and DevOps being embraced by enterprises to stay up the competitive curve, Continuous Integration (CI), Continuous Delivery (CD,) and Continuous Testing (CT) have become the catalysts to drive quality digital transformation.

It goes without saying that Continuous Testing has become critical and challenging. Further, CI and CD are primarily tool and team-driven activities while CT is comprehensive in its scope. It includes teams, tools, testers, and services. The importance of driving and integrating code changes cannot be ignored in the SDLC. At the same time, unless the automated delivery system can figure out the impact of such code changes on customer experience, CI and CD could become meaningless.

The rising competition and changing market dynamics have put pressure on enterprises to innovate and change. And Agile and DevOps in consonance with continuous testing offer the framework to address the requirement. At the heart of digital transformation lies the need to deliver software quickly, safely, and reliably, which can be achieved through continuous testing in DevOps.

Why continuous testing?

The customers of today are wont to use software applications across a plethora of devices, operating platforms, browsers, and networks. They want the applications to be high performing, navigable, scalable, secure, intuitive, and fast-loading. These attributes can only be fostered if the software development process supports a robust QA mechanism in the Agile or DevOps mold. Unlike in the traditional or manual way of testing where QA comes after development as a separate discipline, the Agile or DevOps model has QA being part of an integrated team with development.

In Agile testing, the software under various stages of development is tested for performance, security, usability, scalability, and many more. Thus, glitches are identified and fixed early in the SDLC leading to the delivery of quality software. A continuous testing strategy enables enterprises to put in place the processes, systems, and automation to accelerate the time to market, install improved feedback loops, and deliver desirable business outcomes. The outcomes, on their part, comprise top quality products and services, operational efficiency, responsiveness, competitive differentiation, and enhanced customer experience.

The continuous testing services create a quick and risk-free feedback loop for the QA specialists in the Agile testing pipeline to understand (and act upon) the issues faced by the end customers. These services help to manage business risks borne out of the complexity and pace of application delivery.

Why Agile-DevOps?

To thrive in a competitive business environment, enterprises must address issues like time constraints and resource mobilization to build-test-deliver applications that are qualitatively superior, secure, and stable. This engenders a renewed focus on continuous test automation and collaboration.

  • The DevOps approach is ideal for enterprises that struggle to manage demand and implement rapid changes in the SDLC.
  • DevOps allows enterprises to address their acceleration and integration needs by establishing a toolchain that cuts across the realms of development, QA, integration, management, and delivery.  
  • The silo-driven Development and Operations teams should be integrated to drive better collaboration. Further, the pipeline should have a built-in mechanism to receive continuous feedback and to generate better quality features and functionalities.

DevOps: the extension of Agile

In the Agile model of software development, developers create user stories comprising smaller chunks of the build to generate feedback loops and to align the product to the market need. It started with small teams comprising developers and QA testers working collaboratively and efficiently. Thereafter came the notion of scale wherein the software code was developed in short iterations. However, down the pipeline, when it came to deployment and receiving feedback, the silo-driven processes stifled what was expected of Agile. 

Consequently, the process was further refined by automating and streamlining the SDLC and incorporating Continuous Integration (CI). In CI, the code is tested repeatedly and integrated to create a stream of small but frequent releases. However, these challenged the Ops team, which found it difficult to keep pace with Development. So, while Agile addressed the issues developers faced with glitches being passed on to the next phase, the DevOps approach turned out to be more effective. It treated the entire SDLC as a monolith of collaborative processes that generate better outcomes.

Continuous Delivery and Testing

To support the strategic business needs, enterprises seem to have graduated from performing CI to implementing CD. In doing so, they have finetuned both processes and technical frameworks. So, from creating CI builds and executing testing to achieving deployment, the Continuous Delivery and Continuous Testing methodologies have covered all dimensions of the organization’s operations. These ensure the quick and frequent deployment of quality software applications to the end customers. The questions to be asked while implementing a continuous testing framework are:

  • Is the software application deployable during its lifestyle?
  • Can the software application be deployed while the team is working on its new features?
  • Can the process receive quick and automated feedback each time a change is implemented?
  • Can a push-button deployment be performed for a software version in any environment?

How does Agile, DevOps, and Continuous Testing benefit enterprises

These interconnected methodologies help enterprises in several ways.

  • Accelerated time to market
  • Better productivity and efficiency
  • Frequent releases of reliable and stable builds
  • Capability to build products aligned to the market
  • Better feedback mechanism
  • Superior customer experiences

Conclusion

The need for enterprises to be the disrupter in the market by producing or delivering top-quality software products or services has put focus on methodologies like Agile, DevOps, and Continuous Testing. The complementary relationship among the three methodologies has led to the overhauling of processes and working culture in favor of a new paradigm where quality deployment is a continuous process.

Article Source:

https://devops.com/

Thursday, 9 April 2020

How to accelerate your release cycles with Agile Testing



Agile testing needs to be aligned as per the business objectives of enterprises for accelerating the software release cycles. The processes to achieve the same include proper planning, meeting expectations, and testing early and frequently.

Staying competitive in today’s world of business requires consistent delivery of customer satisfaction through your products or services. If quality has emerged as a differentiator for enterprises to expand their customer base, enabling faster release cycles arguably comes next. With the traditional Software Development Life Cycle (SDLC) encompassing the waterfall method of testing, achieving quality and faster time to market has become difficult. This brings Agile testing into the equation where development and testing take place simultaneously instead of operating in their respective siloes.

How agile testing approach can accelerate the software release cycle

In the Agile form of software development life cycle of iterative development procedure, the requirements generate mainly from the end-customers and testing teams. The Agile software testing methodology is aligned to the customer requirements. The Agile application testing aims at delivering a product free of glitches and quickly to the market.

Further, agile testing services do not consider testing as a separate process but an integral part of the development cycle. Here, developers and testers work in cohesion as a single entity called sprint. These services are distinct from traditional testing comprising logging glitches, checking metrics, and writing detailed test cases. In agile methodology, instead of testing the code post development, it is done early and frequently. In fact, the testing team is engaged with testing and integration of sub-systems and features. It is observed that Agile practices do not always generate the likely outcomes enterprises set out to achieve. It is due to the fact that enterprises often embrace agile practices without adapting them to their IT environments, workflows, culture, or architecture. This means enterprises, while adopting agile, should be guided by their goals. Among the goals, the feedback loop needs to be shortened to fix the glitches quickly.

The agile methodology aims at delivering quality software at frequent intervals, speedily and consistently. This calls for better collaboration, flexibility, and transparency among the development and testing teams. The agile testing experts should ensure quality becomes everyone’s responsibility (both developers and testers). To reach the goal of identifying (and redressing) glitches early, testing should be conducted early and often in the SDLC.

However, since the process needs to be speedy and efficient, test automation becomes the key. It ensures copious lines of codes and variables are checked for glitches and integration against expected outcomes. Test automation prevents the code from showing unexpected results, defects, regressions, and cost escalation due to refactoring later. The metrics tell the detailed scope of testing comprising code coverage, the percentage of test automation coverage area, and the impact of glitches on the end-users. Switching between the old and new codes using toggles must be coupled with forward and backward compatibility. This is to ensure the code is not broken while enabling new functionalities. The entire process requires thorough architecture planning and deep knowledge of the code base.

A Microservices architecture entails breaking up the code into smaller units and assigning them to different teams. The final application can be built using any combination of the microservices provided the interfaces are properly defined and maintained. Since the microservices architecture requires less maintenance, it helps to improve the consistency and speed of software delivery.

How did we increase testing efficiency for a global technology enterprise?


A leading multi-national IT corporation reached out to us regarding severe testing inefficiencies in their Agile cycles. They were facing a serious crunch of the required skillset and were somehow managing with a limited pool of resources. Their business deliverables demanded highest quality in a rapidly changing Agile environment, which was rendered with inconsistent processes across the scrums. They had parallel scrum teams developed at multiple locations, which resulted in challenges in achieving test coverage and agility in communication with virtual teams.

The Agile mess that they had was screaming the sorry state of their Agile testing plan. Evidently, they needed a solid testing strategy to be designed, executed, and integrated with their Agile methodology.

We set up test environments at the developer’s locations to be virtually accessible to our off-shore testing team for revalidation in critical situations. A Quality Control dashboard was developed and maintained with interface to exchange server. The dashboard increased the scrum-level transparency and offered better control. We designed end-to-end processes and defined entry and exit criteria for all stages.

Adopting best practices across scrum teams helped achieve consistency across the parallel testing processes and cycles. A well-defined regression, mini regression, and automation coverage was achieved with the help of our solid test strategy supported by maintainable supporting artifacts. By leveraging automation techniques to cover at code level and capturing key inputs for high volumes of data for dozens of sites, we assisted with better planning. We established a disciplined communication model which ensured a seamless transition of tasks between scrum master and scrum leads.



Conclusion

To accelerate your software release cycles with the agile testing strategy, the entire process needs to move to a CI/CD pipeline. Implementing agile is similar to any change process involving challenges, bottlenecks, as well as, opportunities. If enterprises are sure about their objectives and the way to achieve them, the challenges would become opportunities for learning.

The definition of agile can mean different things to different people. However, it needs to be implemented as per the requirements and working pace of organizations. In pursuance of agile, there can be challenges in terms of aligning people and processes. In case of failures, it is worthwhile to remember that agile can engender failures but the same should be an opportunity to learn. Failures are acceptable provided the process of deployment is iterative and continuous.

Thursday, 5 March 2020

How Test Automation helps Agile to be successful?



To meet the stringent quality requirements of complex applications, the Software Development Life Cycle has changed. If earlier, the waterfall was the preferred model with testing done at the end of development, it has given way to Agile today. This is because the waterfall model suffered from a lot of inconsistencies and did not deliver the right results. Also, it increased the cost of software development and testing for businesses. The need for Agile was felt due to the growing complexity of software applications. As the new software applications come with endpoints that interface with third-party databases, servers, or sites, the quantum of vulnerabilities has increased. If not plugged in time, once these applications are out in the market, they can be exploited by hackers leading to severe consequences for the users.
With Agile, it has become easy to detect glitches and vulnerabilities early on in the software development pipeline. Also, to keep pace with shorter release cycles, enterprises are adopting Agile test automation. This is to ensure the software conforms to the exacting standards of quality. Further, with plenty of features being added to the software in every sprint, developers need to ensure they do not affect the existing functionalities. Also, as the sprint is of a shorter duration, it is not possible to test and execute the entire software suite every time a feature is added. This is where Agile test automation can help by running the codes iteratively.

Why Agile development needs automation?
The Agile model entails the development, testing, and delivery of glitch-free software products within fast turnarounds. Since the process can involve repeated changes, a robust test automation strategy should be put in place. For Agile testers, there are several challenges to be addressed with Agile test automation.

Challenges for Agile testing
Even though adopting an Agile testing framework delivers a string of positive outcomes, it can entail some challenges too. These include
Inadequate test coverage: During the later sprints when a number of features are added to the build, the testers get lesser time to test them and analyze their impact. In such conditions, a few user stories are left untested with the hope that they would not affect the release. However, by automating the Agile application testing process, the build can be put through a regression testing exercise to achieve assured quality.
Frequent build leading to cracked code: In Agile, there can be instances of frequent code changes due to the addition of features to the build. These changes can lead to cracked codes, especially during the integration phase. Further, to implement a continuous integration and deployment pipeline (CI/CD), the Agile testing experts ought to implement test automation.
Performance issues: It can often be the case when improving the functionality of an app can end up complicating it further. Since every change can lead to an increase in the volume of codes, the performance of the app can take a hit. However, conducting Agile performance testing using automation tools can identify the performance issues.
Compatibility issues: Any software of the day should be checked for its compatibility across devices, operating platforms, browsers, and networks. Ideally, testers should ensure the seamless run of software across devices. An automated test run can check for glitches or vulnerabilities in the endpoints and APIs, and make sure the compatibility issues are sorted.
API testing: A web or mobile app involves the implementation of complex APIs, the quality of which is often overlooked. Automation testing tools such as LambdaTest can help Agile testers to overcome such issues.

Things to automate in Agile
When it comes to introducing automation in testing, areas like regression testing or smoke testing take the cake. However, these are just the top layers of the build, which can be insufficient as far as ensuring the quality of the software is concerned. The other areas where test automation can be implemented are
·         Builds and deployments
·         Unit tests
·         Non-functional testing
·         API testing
·         GUI testing
·         Repetitive tasks like data comparisons

Benefits of test automation
Agile development can be benefited from automated testing in a number of ways related to performance, portability, versioning, reliability, usability, and speed, among others. The benefits include
·         Enhanced quality
·         Quick turnaround
·         Repeat execution
·         Seamless performance
·         Better collaboration

Conclusion
The Agile testing approach can lead enterprises to create a better software development pipeline. Its success is underpinned on the level of implementing test automation. The automation-led Agile methodology combined with DevOps has the potential to improve the quality of software and deliver great user experiences.

Thursday, 26 December 2019

Why Agile Testing needs to follow a new approach?



The global digital transformation journey requires the quality of processes, models, products, and services to be top-notch. To ensure accelerated growth, enterprises are embracing the Agile model and moving away from the traditional ones - waterfall, spiral, and iterative. The reason being the slowness and inadequacies of these models. Enterprises have realized the need to adopt innovative ways to offer customer delight, the final outcome to stay competitive. The agile testing approach is mainly embraced by enterprises that need their development pipeline to create continuous builds. This calls for both development and testing to be conducted simultaneously instead of the earlier silo-based waterfall method.

The need for adopting the agile testing approach has been necessitated due to the growing complexity of software applications. Today, the performance of the software is determined by the quality of its interfaces with third-party applications, browsers, devices, and operating systems. The more complex a software is, the more comprehensive testing it demands. Agile testing is about shift-left testing where planning, designing, writing, and testing code becomes part of the sprint. It is a collaborative approach instead of the waterfall’s silo-driven approach and drives better outcomes. Agile testing involves taking continual feedback from the customers and stakeholders.

Why is agile software testing advantageous?

The complexity of software applications has shifted the focus on testing. This is to ensure the applications live up to the expectations of both businesses and customers. The agile testing approach focuses on smart testing through automation rather than using the time-consuming manual means. Here, the testers and developers follow a collaborative approach with the former offering timely feedback to the latter. This makes the final product fully aligned to the customers’ requirements or expectations.

Principles of Agile Testing

Agile application testing follows a set of principles to deliver glitch-free products to the end-customers:

Continuous Testing: Agile testing experts conduct continuous testing to identify glitches at various stages of development and integration.

Continuous Feedback: One of the main reasons why products often fail to meet customers’ expectations is the apparent disconnect that exists between the end customers and other stakeholders. The agile testing strategy ensures the development team receives continuous feedback on the quality of builds. This helps the product to meet the business as well as customer needs.

Test-Driven: The agile testing approach includes testing at the time of development itself rather than later. This saves time and costs as mitigating a glitch after development can be expensive and time-consuming.

Less Documentation: The reusable checklist used by the agile testing specialists ensures the focus is on testing rather than on keeping the incidental details.

Simplified and Clean Coding: Since the glitches are identified and remedied within the sprint, the final code remains simplified and clean.

Accountability is shared by all: In the traditional system of testing, only the testing team is held responsible for the presence of glitches. However, in agile testing methodology, the development, testing, and business analyst teams share equal responsibility for the outcome.

Latest trends in Agile Testing

The spiraling demand for software testing and the advent of new technologies like IoT, AI, big data, and analytics emphasize the need to follow the latest trends. These include:

Artificial Intelligence (AI): The objective of agile in identifying and mitigating errors early on in the development cycle can be met effectively by using AI. For example, AI can analyze the database of past codes and check for patterns that contained glitches. These patterns can then be flagged for the developers and testers to gain necessary insights. Artificial intelligence can analyze the code under development to find if it deviated from its intended objective. This way it can help the agile-driven team to align the build with the business objectives and customer expectations.

Move towards Quality Engineering: The growing technological complexity of software applications means more chances for the ingress of bugs. So, along with continuous testing to identify errors in real-time, the focus should be on eliminating the ingress of errors in the first place. This calls for moving towards quality engineering where products and services are designed and built to meet or exceed customers’ expectations. It also involves the development, management, operation, and maintenance of IT systems displaying a high-quality standard.

Big Data Testing: With applications interfacing with other IT ecosystems (SMAC for example), a huge quantum of data gets generated. These need to be tested for errors using big data testing. Here, rather than testing the individual features of the software application, activities like data creation, storage, retrieval, and processing are validated.

Continuous Improvement, Integration, and Delivery: Agile is giving way to DevOps where apart from development and testing, the operations team is also involved. Here, any software build is tested continuously and enhanced based on the customers’ feedback. The entire DevOps process is geared towards ensuring the integration and delivery of glitch-free software quickly.

Conclusion
Is agile testing meeting the rising expectations of software applications? With delivering better customer experiences becoming critical for companies to stay competitive, the agile way of testing needs to follow the latest trends. Capturing and mitigating glitches earlier in the SDLC or even preempting them can significantly increase the acceptance of software in the market.


This article is originally published on medium.com.

Wednesday, 27 June 2018

How to implement Test Automation in an Agile set-up?

Test Automation


The digital landscape has witnessed frequent changes in the way software products are developed, devices introduced, technologies used, costs optimized, processes streamlined, and customer expectations are fulfilled. One of the changes is related to the way a software product is developed. As opposed to the traditional method of SDLC where development and testing take place one after the other, Agile has gone a step further. In an Agile testing strategy, development and testing are done concurrently in short sprints.
                 
The advent of Agile methodology in the development of software has brought about significant changes. The changes are primarily about improving the quality of software and hastening its delivery schedule. The thrust of Agile is towards improving as well as shortening the sprint iteration leading to better outcomes. In the Agile testing environment, the imperative of testing a product feature or functionality post its development in the quickest possible way has underlined the importance of test automation.

Test automation services bring the following benefits

  • Glitches or bugs can significantly reduce the quality of software by impairing its functionality, usability, and security. If the bugs are detected at a later stage, the cost and time of removing them can be significantly high. However, Agile testing can identify and eliminate glitches in the initial phases of the SDLC. This apart from improving the quality and timeliness of software delivery, can enhance the ROI as well.
  • Easy and quick adaption to changes put forward by the client. Since the changes are done in quick iterations but in an incremental way, they can be easily incorporated. In the changing market dynamics, such a development process is the most suited one as it squarely addresses the client and market requirement(s) as and when needed.
  • Enhances the test coverage area, which otherwise gets severely curtailed during manual testing. Moreover, automated tests can be conducted without manual intervention at any time of the day (or night.)
  • Optimizes the testing of resources by engaging a small number of test automation experts. This is not possible in manual testing for conducting a large number of tests needs a greater number of testers.
  • Easy to develop the beta version and receive customer feedback. Based on the feedback, the software can be suitably customized to meet the client or market requirement.

How to effectively implement test automation in an Agile set up?

Selecting the right automation framework: Not all tests are to be automated, for writing scripts for them can be a time consuming exercise. The test automation experts should earmark specific tests for automation and select an appropriate framework. The criteria for choosing a framework should be based on its scalability, clear understanding and easy adaptability. There can be a number of automation frameworks as given below:

Data driven:  This framework is used when specific functionalities of a software application are tested for different sets of data. In this, the data are stored in external databases such as Excel or XML files.

Keyword driven: This framework allows the testing of data based on certain keywords. The keywords present in the database perform specific functions on the application, which are tested for their effectiveness.

Modular based: Here, the test code is broken into independent modules that are connected logically to each other. The framework considers each module as a separate test case, which upon completion, ensures the entire software functions according to the stated objectives.

Hybrid: As the name suggests, this framework leverages the benefits of one or more frameworks as mentioned above.

Setting the sprint target: The target for each and every sprint should be identified and fixed. The target should not be influenced by the level of complexity of the effort involved. However, notwithstanding the difficulties one can face while working on the sprint, the end result leads to a better testing outcome.
 
Team feedback: Timely feedback from the team can help test experts to identify features or modules that can be automated successfully. It is a good practice to involve each and every member of the testing team in deciding the features to automate. The expert should discuss the approach taken for automation with other team members. Continuous feedback can help members to suggest new features and approaches to be adopted for automation.

Conclusion

The above mentioned points can pave the way for an effective implementation of automation in the testing of software. These can help the team to achieve test objectives that are made part of an Agile set up.

This Article is originally published at Medium.com, Effectively implementing Test Automation in the Agile set-up.