Showing posts with label Test automation. Show all posts
Showing posts with label Test automation. Show all posts

Friday, 22 May 2020

Redefining DevOps Software Testing in a Socially-distanced World


Covid-19 has hit the global economy very hard. With people being forced to quarantine themselves and maintain social distancing, the new normal of working remotely has taken center stage. However, digital companies have quickly adapted to the new development or mode of working and shown the world how things can be kept operational even when everything is closed. In fact, digital technologies have become the enabler in allowing people to work remotely even during such disruptions. Amid calls for maintaining social distancing and following a ‘work from home’ model, enterprises can keep the SDLC up and running. To do so, they may adopt DevOps software testing and focus on embracing a culture of collaboration and learning.
The best part is that DevOps specialists can work remotely by accessing tools from the cloud. They can ensure any Business Continuity Plan to run unhindered. The Covid-19 is unprecedented in the sense that in earlier times, disaster management was about fixing a site or two that had gone down. But now, the situation demanded the entire IT architecture to be shifted to the cloud and every employee to work remotely. The concept of DevOps, an enhanced model of Agile, is underpinned on conducting daily team meetings and collaboration. In such meetings, plans are made, reviews of last work are taken, and any new challenge is acknowledged. The entire meeting is conducted among co-located employees using tools like whiteboards. However, with Covid-19 led social distancing norms being the order of the day, teams offering DevOps testing services are falling back on cloud-based IT automation tools. Before discussing how DevOps can help enterprises in dealing with the crisis borne out of a socially-distanced world, let us know what it is all about.
What is DevOps?
An acronym for Development and Operations, the methodology is an enhancement of the Agile model of software development. It aims at improving communication and collaboration between the two business units by streamlining and automating the SDLC. DevOps combines practices, cultures, tools, and processes to scale the enterprise’s capability to deliver products or services at quick speeds. Here the thrust is on continuous development, testing, integration, and delivery of products after taking feedback from the end-customers. DevOps is all about refining a software product continuously to ensure it remains trendy and addresses the needs of the customers. Also, with security playing a key role in any software product, every process, team, or department within an organization should be accountable in implementing the same by following DevSecOps.
What is DevOps software testing?
It follows the Agile way of software testing where QA works alongside development in pre-arranged sprints. Here, a code is tested and integrated to another module in the development phase itself by using automation. To redefine DevOps quality assurance in a socially-distanced world, there should be a change in approach, especially from the DevOps testing specialists. There are as follows -
# Teamwork: In such times when you are on your own (literally) and do not have the neighbour’s desk to ‘consult,’ you should focus more on documentation. Before going about any job, be clear about the requirement(s) and write clear messages for your peers and superiors to understand. If earlier, little transgressions were overlooked due to quick and better monitoring, now the same can lead to a logjam.
# Continuous Integration: DevOps is all about automating the testing process for obtaining optimum results. While working remotely, a CI pipeline should be in place developed by DevOps engineers, DevOps specialists, or anyone with the knowledge and experience in enabling DevOps test automation. The tester should feed the code in the CI pipeline to run the required tests. The test automation software within the CI pipeline should test if the code conforms to the established protocol. Such a pipeline would give results in quick time, be the code written by you or someone else.
# Continuous Deployment: After the code transitions through the CI pipeline, it is time to merge your code. So, your job seems to be done and deployment remains the job of the Ops team. The latter needs to get the same back into production. So, instead of relegating the job to the Ops team, why not make a seamless process wherein both Development and Operations work in synchrony? So, in addition to building a CI pipeline, one must create a CD pipeline as well. The pipeline will ensure the code fed into the CI pipeline enters production. In doing so, you can automate the process by setting up metrics and take care of bugfixes, future feature development, and more automation, among others.
Conclusion
The pandemic has created an unprecedented situation where the entire software development, testing, and delivery process needs to be executed from remote locations. In such a distributed environment, DevOps can be embraced by enterprises to make the process streamlined, responsive, and resilient.

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.

Tuesday, 3 December 2019

How has Automation influenced the Testing Landscape



Today, software development has become a complex process due to the need for compatibility of software across devices, operating environments, browsers, and networks. Add security compliance to the list and the task becomes even more challenging. To ensure the software runs seamlessly across digital environments as mentioned above, it should undergo a rigorous testing exercise. This is important to achieve customer satisfaction – the key determinant to stay competitive. So, how do you choose a testing methodology that delivers excellence in all the areas of software including, performance, security, functionality, and usability, among others? The answer can be found in following a mix of manual and test automation practices with the latter forming the mainstay.

Why test automation?

The traditional form of testing software aka manual testing does not quite match up to the evolving requirements of testing. Since the software applications of today combine cutting-edge technologies like AI & ML, IoT, Big Data, Cloud Computing, and others, the testing requirements have grown manifold. These require checking the performance of the software on multiple channels involving scores of users. This is where manual testing can be time-consuming, error-prone, and tedious thereby putting considerable strain on the human resources. The automation testing approach, on the other hand, can address the shortcomings of manual testing and relieve the human resources to focus on other areas.

With enterprises aiming to deliver software faster to the market, they often take risks with its quality. This involves downplaying or bypassing the testing requirements. Moreover, testers too suffer from fatigue when executing repetitive tests involving huge data. This often leads to situations where enterprises are unable to manage the expenses incurred in service delays and performance issues. Let us find out how automated software testing has changed the testing landscape for the better.

Key benefits of software test automation

QA involves executing a series of tests involving data and comparing the expected outcomes against the actual ones. Here, test automation can guarantee software quality without much human intervention. The best thing about executing automated testing services is its increased frequency of implementation with minimal effort. And if such implementation leads to better results, then achieving customer satisfaction can only be a matter of time.

High test coverage: Since any software with an omnichannel interface encompasses plenty of features and functionalities, it ought to be tested for the latter. A QA automation testing process helps to validate the quality of all features and functionalities thereby increasing the scope of testing. An automated suite can conduct repeat testing with plenty of variables and data thereby enhancing the quality of the software application. It is important to note that manual testing is fairly limited in its scope vis-a-vis testing the features of an application.

Meeting DevOps goals: DevOps has emerged as the latest methodology to develop and deliver superior quality software. It focuses on shift-left testing where testing is conducted alongside development in sprints. Since DevOps is all about achieving continuous integration and testing throughout the SDLC, the role of software test automation assumes salience. It ensures each code is tested thoroughly during the development process before being integrated into a suite. Also, any updation of software based on market demand and/or customer feedback is put through regression testing using automated tools.

Quick detection of glitches: As the SDLC follows the shift-left process, codes are validated using an automated test suite. During the process, glitches get identified at the development stage and fixed. This ensures faster delivery of quality software and saves a considerable amount in time and cost. The latter would have been incurred if the glitches were identified later, either during testing at a later stage or through customer feedback.

How the testing landscape changed with automation

The testing landscape encompasses a number of testing viz., unit testing, functional testing, integration testing, load testing, and regression testing, among others. Automation has helped the above-mentioned areas of testing to be accelerated. Let us find out how.

Unit testing: This type of testing ensures how each piece of code shall behave once it forms a part of the overall software suite. It is usually created by developers and provides feedback on the specific performance of the code. It tells developers whether the code is performing the tasks as expected and can arguably provide the best ROI for automation.

Integration testing: It involves the testing of multiple components of a software suite. Here, even though the components may exist independently, they are interconnected in the larger software suite. By following a test automation strategy, the integration of various components of software such as email services, analytics, third-party components, databases, deployment infrastructure, etc., are tested to ensure the seamless performance of the software.

Load testing: Any software should undergo proper load testing to ensure its components can handle peak load situations. By measuring both normal and peak load thresholds, the software can be scaled up when the crunch time comes. Here, automated load testing tools can come in handy to perform load testing on demand and involves simulating traffic at high speed. This helps to identify the non-functional issues and ensure the scalability and performance of the software.

Functional testing: It checks if the software is doing what it is expected to do instead of how it does. Here, the functionality of the interface or sundry end-to-end components is verified without getting into the nitty-gritty of coding that drives it. By automation, functional testing can be conducted umpteen number of times without any human intervention. However, the test suites should be maintained properly to prevent any false positives.

Regression testing: It checks the functioning of the original features of software when a new one is added. Conducting it manually in-house can be tedious and ideally requires engaging automated testing services. Automated testing can carry out comprehensive regression testing involving unit testing, integration testing, and functional testing. However, conducting UI level testing may not yield the desired results as the UI can be volatile and cause test failures.

Mobile testing: This type of testing can be challenging, for it involves compatibility, functional, performance, security, and UI/UX testing. Mostly the testing is done on real or simulated devices by automating some of the tasks. However, the results can often be sketchy given that they are executed on emulators. Also, the results of such testing would depend on the reliability of the device platform.

Conclusion

Test automation has brought about a significant improvement in the testing landscape. It has been able to address some of the lacunae of manual testing thereby enhancing the quality of software. Enterprises should incorporate automation in their SDLC to ensure the software ticks all the checkboxes for quality. However, as mentioned at the beginning, automation in testing is not the be-all and end-all of everything and should be executed in consonance with manual testing.


Author Bio

Oliver has been associated with Cigniti Technologies Ltd as an Associate Manager - Content Marketing, with over 10 years of industry experience as a Content Writer in Software Testing & Quality Assurance industry. Cigniti is a Global Leader in Independent Quality Engineering & Software Testing Services with CMMI-SVC v1.3, Maturity Level 5.



This article is originally published on dev.to.