Wednesday, 5 December 2018

Discuss the best Test Automation strategy to achieve test results

Test Automation Stategy

The convergence of factors such as intense competition, the launch of new devices, the presence of legacy systems, and a multiplicity of platforms, operating systems, browsers, and networks has made the development of software a challenge. Add to that the changing dynamics of customer preferences and the advent of development models like Agile-DevOps, and you observe ‘quality’ becoming the preferred deliverable in the SDLC. To keep pace with digitization, businesses are required to develop robust and secure software applications that are rich in performance and functionality, in the shortest turnaround time. This entails incorporating Continuous Integration (CI) and a robust QA mechanism in the SDLC to deliver quality applications to the customers. Since manual testing remains woefully inadequate to address the challenge, test automation seems to have become the de rigueur for software testing.

Advantages of conducting test automation

Extensive test coverage: Since the software application of today has a comprehensive interface with various elements of the digital environment courtesy the APIs, it needs to go through an extensive QA exercise. With test automation services, codes can be integrated on a continuous basis and critical parameters validated within short turnarounds. The automated test scripts can check a multitude of test variables to find out if the test outcomes are on expected lines. Thus, the test scripts are able to identify glitches that may have crept into the codes. Moreover, since automation testing can work practically nonstop, the iterative tests can be validated across processes, APIs, devices, and networks. It is a far cry from manual testing where the test coverage area depends on the ability of human testers to conduct (or do away with) extensive tests.

Cost effectiveness: Due to the lack of extensive test coverage in the manual process, glitches can remain undetected for long. And when they are eventually detected in the final stages of the SDLC, it becomes costly and time consuming to eliminate them. The automation testing approach, on the other hand, can identify glitches in the initial stages of the development sprint. These glitches when brought to the notice of the development team are easy to eliminate, and thereby lead to cost savings.

Faster time-to-market: Software test automation can validate the quality of an application in the shortest possible time. This leads to a quicker integration of codes and a swift delivery of the software suite.

Reusability: Many of the automated test scripts can be reused for similar software applications. This quickens the time of testing as test automation experts are not required to write new test scripts.

Any automation testing approach needs to be robust and clear in its objectives. Let us find out the best approaches to implement automation testing.

So what does a great automation testing strategy require?

To begin with, not every process can be automated, nor can manual testing be fully eliminated. The test automation experts should identify the processes that lend themselves to automation. It is better to automate a few tests that are repetitive, complex and time consuming.

Record and Playback: In this approach, testers record the actions of users and play them back a number of times to compare the actual results against expected outcomes. The approach uses hard coded data, which can be understood and executed by non-coders should the complexities in terms of customization is kept at a minimum. This approach is easy to be implemented and has a low development cost as well.

Data driven framework: This works well when the workflow is repetitive and the data voluminous. Here, the test scripts run alongside the respective data sets within a framework. It helps to validate applications with big data sets in multiple environments. This approach consists of a limited number of checkpoints with robust test cases. The data driven framework test scripts can be reused and help to enhance the test coverage area.

Keyword driven framework/table driven/action world testing: The test consists of two distinct stages – design/development and execution. This test automationframework can validate applications across multiple environments and data sets. It has a good test flow coverage and the script can be reused.

Conclusion

In a continuous integration and delivery environment, the role of QA automation testing cannot be overemphasized. However, to derive the right test outcomes, proper automation tool, processes, and strategy should be selected.

Diya works for Cigniti Technologies, which is the world’s first Independent Software Testing Company to be appraised at CMMI-SVC v1.3, Maturity Level 5, and is also ISO 9001:2015 & ISO 27001:2013 certified.

Tuesday, 13 November 2018

What are the reasons to conduct Performance Testing for eCommerce?

Performance Testing

Along with many online services, eCommerce too has found favour with customers due to its convenience, multiple options, and cost effectiveness. Customers are often confused when it comes to choosing one eCommerce store over others as each and every store more or less looks the same with similar features and functionalities. And among the many factors that can differentiate the leader from the rest is its performance when there is a sudden spike in the customer count. This is especially true during the holiday season when customers go on a shopping spree and put the eCommerce site or app under a lot of stress. 

The sudden spike in the workload can lead the site or app to face downtime, disruption, server issues, and downright crash resulting in a bad user experience. And if not handled in right earnest, the bad user experience can lead users to move to other portals or apps by completely jettisoning the former. To salvage the situation or pre-empt such a scenario, the performance testing of the eCommerce site or app becomes important. 

What is performance testing?
 
It is testing the responsiveness, reliability and stability of a software system when subjected to a certain threshold of workload. It checks and validates the features and functionalities supported by the software when put under stress. The application performance testing even tests the scalability of an application to ensure it meets the performance criteria when needed. A performance testing approach would include executing a range of tests such as load test, stress test, soak test, spike test, breakpoint test, configuration test, isolation test, and internet test. 

Empirical evidence suggests that a dip in the performance of an eCommerce site or app can result in the following:

  • Decrease in customer satisfaction
  • Loss in page views
  • Loss in conversions
  • Abandonment of the site
Key reasons for considering performance testing services

#1 Scalability: An eCommerce site or app should be able to function to its optimum level for a particular number of customers. The numbers should be decided after considering the possible load the site or app could experience depending on the geography, demography, range of products/services and server capacity. To ensure an eCommerce site/app functions seamlessly without facing any latency or downtime, it should undergo tests such as load and stress among others. These simulated tests will give the threshold up to which the application can handle the workload and the consequences of exceeding the same. By executing application performance testing before deploying the site or app for actual use, the stakeholders can ensure the features and functionalities of the software work to their optimum. The capacity of the eCommerce software should be scalable enough to handle the increased workload, as and when needed.

#2 Mobile optimization: The present trend among customers is to use smartphones for carrying out eCommerce transactions. So, apart from making the eCommerce site mobile responsive or the mobile app functional, it should be tested for its capacity to handle peak loads. This can be done by simulating the peak load by using a load generation software. Moreover, since a mobile works on a range of platforms, operating systems, networks, and screen resolutions, the challenge of testing an eCommerce app or site’s performance is immense. The performancetesting strategy should ensure the app or site does not crash under peak load conditions.

#3 Day and service specific transactions: Certain services on the app or site are more intensive and widespread than others. For example, customers visiting an eCommerce site or app first carry out product searches. And only when they are satisfied with their search, they may end up buying one. Thus, the product search functionality should work seamlessly across browsers, devices, platforms and networks to drive conversions. The other functionalities like add to cart, payment gateway, and checkout should be validated for optimal performance as well. Also, tests should be conducted to ensure the site or app performs seamlessly on certain days of high usage (read Sundays and holidays.) 

#4 Achieve ROI: The cost of building an eCommerce site or app can only be recovered if the site or app lives up to the expectations of the users. Although factors such as the pricing of products or the robustness of after sales services play an important role, the site or app should provide the best user experience. Remember, a satisfied client will spread the word around and can potentially bring more customers. 

Conclusion

In view of the growing competition, business stakeholders should ensure their eCommerce sites or apps should function to their optimum. This calls for validating the features and functionalities of the site or app in handling peak workloads.

This Article is originally published at Medium.com, Key reasons for considering Performance Testing for eCommerce.

Monday, 12 November 2018

How to achieve the Continuous Delivery of software?

Continuous Delivery

The ecosystem that drives application development has become increasingly competitive. This is due to a host of factors such as shifting customer loyalties, rapidly changing technologies, and cost imperatives. Companies, in their quest to achieve digital transformation and reach customers in the best possible manner, want to deploy applications that are rich in features, robust in functionalities and cheaper in cost. Since the traditional waterfall model of developing, testing and deploying software is found to be inadequate in addressing the above mentioned concerns, companies are embracing the Agile and DevOps model of development.

To achieve the continuous delivery of software, the development team should entail continuous integration. This would mean integrating the codes early on in the SDLC instead of waiting at the end of the development sprint. The approach can identify and resolve conflicts or glitches early rather than spending a considerable amount of time on carrying out regression testing later. Following continuous integration early on in the SDLC helps the DevOps testing team to better understand the code, features and functionalities.

What is continuous delivery all about?

The process entails making changes in the application at any stage of the SDLC without impacting the quality of the product or its user experience. The changes can include adding new features and functionalities, fixing glitches, or changing the configuration.

The way forward

  • The changes that need to be incorporated into the software are broken into smaller components or steps.
  • To fix glitches, the developers receive feedback from the test team within the sprint. The test team, on its part, comes to know about the changes/glitches from a host of automated tests – regression, usability, performance etc.
  • Any new feature to be incorporated in the software may need additional testing for validation before its eventual deployment.

How to create a continuous delivery pipeline of software?

In order to create a continuous delivery pipeline, the glitches need to be identified and removed at the earliest. And since an application has multiple interfaces with devices, networks, operating systems, platforms, and frameworks, the interfaces should be tested threadbare. This is important to provide a rich customer experience – the ultimate arbiter to generate revenue. The complexity of testing a software across devices, networks, operating systems, and platforms would call for using test automation. The first step towards that is to create a robust test automation suite.

Running test automation: To ensure DevOps continuous integration, the automated tests should run for each and every change that has been made to the application. This includes running test not only for the main branch of the application but other branches to ensure glitches are captured early and removed. The test team can start with a few tests such as unit test, integration test, acceptance test and usability test among others. To address such considerations, one can make use of the on-premise systems or the cloud. The best part of running an automated test suite is its vast coverage area and the speed of executing repetitive tests.

Integrate early: The first part of carrying out test automation is building a test culture where the test team adds the features/changes to the main arm of the application instead of the branch(es) alone. Overall, the features should be integrated into the main trunk of the application as soon as they are rendered elsewhere. Here, delaying integration would risk the development team to forget adding the changes to the main branch. And should the number of changes or features incorporated in the branches be large, the complexities arising out of the same can become a tough challenge to face. Integrating the changes early would reduce any conflict scenarios and make it easier to be shared across the team.

Prevent any break of the main branch: Breaking the build for the main branch by developers can create unforeseen situations. These include tackling changes that have been incorporated into the broken build and preventing application failures. Thus, the test suite should be made robust enough to give instant feedback or notifications to the developer(s) should he/she/they end up in breaking the main build.

Write a test for each and every feature/change: The test team should create automated tests for each and every feature. The step, instead of appearing to slow down the development process, will reduce the time spent on regression testing and fixing bugs. The final codebase will work as per the stated business objectives.

Conclusion

The crucial aspect of continuous deployment is to involve the management in testing each and every feature of the application. If this slows down the release process at the beginning, it should be pursued to achieve the long term objective of meeting user expectations.

This Article is originally published at Medium.com, How to make Continuous Delivery work for you?

Monday, 5 November 2018

How important is Software Testing and Quality Assurance for a business?

Software Testing and Quality Assurance 

Software underpins the success or failure of any digital transformation initiative. In a world increasingly driven by computers and automation, software stays at the heart of a system executing things that were unthinkable in the past. It has helped create a human machine interface thereby reducing the human effort to a large extent. The customers of today have become the biggest beneficiaries of machines (read computers, tablets and smartphones) that are run by software wherein a host of activities gets done. These include paying utility bills, shopping from eCommerce stores, watching movies, booking hotels, cabs, trains, and airlines among others. However, executing these activities in a seamless manner can only happen when the software behind them works optimally. If not, the customer experience can eventually go for a toss. Thus, software testing and quality assurance have become important cogs in the wheels of software development and delivery.

What is quality assurance?

Quality assurance is a series of activities that check if the software, and processes based on that, deliver outcomes that conform to the business objectives. It checks and validates the requirements and standards for a software in the entire SDLC. Quality assurance thus identifies the bugs or glitches present in a software before its eventual deployment for customer use.

With growing competition, providing the best customer experience has become the primary objective of businesses to achieve ROI. And a glitch prone software application would be a detriment to realize that objective. Thus, software quality assurance testing has taken the centre stage in any organization’s scheme of things. The software application testing activity reveals inconsistencies, glitches, and redundancies in a newly developed software. It ensures the same are flagged off and removed (by the developers)  to provide a better customer experience and longevity.

Where does software quality assurance services come in SDLC?

Traditionally, QA used to come after the development of software and before its eventual deployment. Since this approach was found inadequate to meet challenges like accelerating the time to market, testing the software across devices, platforms, devices, and networks, and offering a robust customer experience, it was discarded in favour of Agile-DevOps method of software development, testing and delivery. Thus, in the Agile-DevOps methodology, QA is part of the development sprint instead of operating in a silo.


Reasons to apply software application testing

#1. Enhance the quality of software: A bug filled software can impact the customer experience by not functioning to its optimum or as per expectations. It may lead to latency, downtime or render the features ineffective. As a software is supposed to reduce human effort and offer specific services, the presence of glitches can put paid to everything. And in the competitive business environment where customers have a range of choices, a glitch prone software can spell trouble for the business. For the customers will not have second thoughts in discarding the software and moving to the competitors.

#2. Prevent security issues: The software application testing exercise, especially security testing, can identify (and later eliminate with the help of developers) malware, trojans and viruses present in the software. This prevents hackers from siphoning off sensitive business and customer information or even money. For example, eCommerce or banking apps make use of network banking, credit and debit cards to make payments. However, if these apps are affected by malware, it can result in customers losing money.

#3. Performance: Quality Assurance tests the performance of software by conducting load test, stress test etc. These tests ensure the software runs to its optimum when the workload increases. For example, eCommerce stores experience a rush of customers during holidays or Sundays. So, if the online stores are not tested beforehand for their performance, they can suffer from latency, downtime or even server crashes. Needless to say, such outcomes can hit the customer experience and bottom lines really hard.

#4. Saves time and money: It is better to identify and fix glitches early on in the SDLC rather than going through an elaborate exercise later. As the saying goes, ‘a stitch in time saves nine,’ carrying out software testing in the initial phase of software development can save time and money.

Conclusion

The quality of software is arguably the most important attribute to garner customer approval. It is important for any business engaged in the development of software to validate the latter’s quality before delivery. By making a software quality compliant, the company can boost its brand, market, and ROI.

 This Article is originally published at Medium.com, Why is Software Testing and Quality Assurance a strategic decision?