Thursday, 12 March 2020

The Inevitability of Regression Testing



When it is all about staying competitive and earning revenues, enterprises are going all out to develop new applications with better user experiences. With users becoming choosy, enterprises are constrained to offer features and functionalities that are different from their competitors. However, there is a catch when it comes to adding new features in an application - regression! Yes, the unintended consequence of any code change, which instead of enhancing the user experience can, at times, act as a bummer.
Let us understand the same with an example. You take your car to the mechanic to fix an issue with its heating function. But after receiving the car with its heating function fixed, you find another function, say its fog lights not working. This turns out to be an unintended consequence, which you never imagined would hit you from nowhere.
To make it further easier to understand, let us relate it to software. For example, an application adding a photo-sharing service ends up nixing its loading speed upon delivery. So, to ensure such unintended changes do not hamper the user experience, testers need to implement a robust regression testing strategy.

So, what is regression testing and why is it needed?
It is aimed at ensuring the seamless functioning of an application in-spite of any addition/modification to its feature(s). This is important as regression testing can identify issues and fix them arising out of any code change. It is different from retesting and ensures the entire application to work in accordance with the expectations post changes. In retesting, on the other hand, only the specific code change is tested for its expected outcome. Hence, any comprehensive software regression testing can be quite complex and time-consuming.

Checklist for regression testing in software testing
A change in one part can create an unintended change in another part of the software. And unless the entire software is monitored post introducing the change, the consequences can impact the software’s functionality and user experience. The below-mentioned scenarios or test cases can be fit cases for conducting software regression testing.
·         Functionalities to have undergone changes
·         Cases related to integration
·         Cases with boundary values
·         Functionalities most visible to the users
·         All core features
·         Scenarios facing frequent defects

Should regression testing be automated?
Since regression testing services are often iterative, they are good candidates for automation. The test cases for automated regression testing should be easy-to-maintain, stable, and frequently repeated. As this type of testing checks the quality of an existing functionality, it needs to be repeated for various parameters. Automated regression testing frees up testers and allows them to further explore the production environment for any unusual responses. Further, not all software regressions are a result of code change. For example, some may be the result of updates to databases or browser versions.

Challenges to regression testing
The quality of an existing functionality can be ensured with more automation. However, it also requires testers to maintain such test suites for their prolonged usage. So, the test suites need to be flexible to incorporate any future changes. Let us discuss some challenges associated with regression testing services.
·         Expensive: As the same function is tested repeatedly, there is no immediate ROI to speak of but mainly expenses.
·         Not adequate time for testing: Since a project needs to be completed in a timebound manner, it is not possible to let the iterative regression testing to continue for a longer duration. So, testers often execute critical regression tests only and skip others. This can leave a few quality issues to remain unchecked.
·         Maintenance and optimization: The automated test suites should be optimized and maintained to meet the rigors of any new testing requirement.

How to manage regression testing
Given the inevitability of such testing in preempting the ingress of any unintentional quality issues during a code change, the tests should be managed well. The steps to ensure the same are:
·         Executing smoke test and automation
·         Analyzing the test requirements
·         Preparing to deal with the impact of changes
·         Prioritizing tests
·         Choosing the right automation tools
·         Analyzing the final glitch report in detail
·         Optimizing and maintaining the test suites
·         Creating criteria for entry or exit of regression testing
·         Executing testing randomly
·         Keeping the testers motivated

Conclusion
The rapidly changing digital landscape owing to the addition of new features and versions of software applications, browsers, and operating systems requires businesses to set up a robust regression testing strategy. So, even though the testing per se is expensive and time-consuming, it should be taken to its logical conclusion.

This article is originally published on dev.to.

Thursday, 5 March 2020

Why you should never cut corners with Software Quality Assurance?



The rapidly changing world of Information Technology can be observed in many dimensions. These include the advent of new technologies, changing customer preferences, the proliferation of new devices and operating platforms, the growing menace of cybercrime, and the increasing role of regulators. Enterprises, aware of these dimensions, are adopting digital transformation in a big way to stay up the ladder of competition. And one of the salient features of digital transformation is adopting or building new software tools or platforms to deliver great user experiences.

This is because customers with access to new product choices are not satisfied with run-of-the-mill products or services. Their growing appetite for quality products displaying attributes such as high usability, security, navigability, and functionality, has hit the proverbial death knell for companies continuing with legacy systems, methodologies, and policies. This has brought into sharp focus the critical importance of following software quality assurance. The plethora of devices, operating systems, browsers, and networks has meant the software delivered to the customers should be functional across the digital ecosystem.

However, notwithstanding the critical importance of upholding software quality assurance, many enterprises in a bid to release products quickly and take advantage of being the first mover, are cutting corners with software quality assurance testing. This results in the delivery of below-par products leading to unforeseen and unwarranted consequences (especially with financial software). Let us find out why enterprises developing software should never compromise with following a robust software quality assurance strategy.

Pitfalls of not undertaking software quality assurance

With software becoming the critical requirement in driving the digital ecosystem, ensuring its quality is of supreme importance. In case, companies do not pay heed to this dictum, they (including the end-customers) are bound to pay the price. The pitfalls are as following:

Poor quality product or service: Today, when software products are having interfaces to financial and personal information of customers, any glitches or vulnerabilities can play havoc. Cybercriminals may exploit these to steal information. Think of using an application with built-in glitches or malware that results in the siphoning off personal and financial data. Apart from causing losses to the customers, these glitches can destroy your brand equity. Citing another example of software being used in diagnostic devices in the healthcare industry.

If the software malfunctions owing to the presence of glitches, the result delivered by the device can be erroneous. The treatment protocol followed thereafter by the medical professional by taking inputs from such readings can worsen the condition of the patient even leading to his or her death. To avoid such an eventuality, any QA testing services company worth its salt should ensure the glitches or vulnerabilities present in the software are identified and removed forthwith.

An additional cost of reworking: The software quality assurance services help businesses to spend less on reworking, retesting, replacing, or remarketing of faulty software. Remember, any enterprise sets a budget for product development depending on the demand, technology used, the complexity of the process, and viability. If the software development pipeline does not incorporate software assurance techniques the chances of that product to have an uninterrupted run in the market can be cut short. Customers, on being frustrated with the quality of such a product, can disown or send it for replacement. The company has to rework on the product, which is both time and cost-intensive.

Fall in brand equity: People do not always buy products on a whim. They usually follow a brand after being convinced of its quality and price advantage. However, this can take a beating if the product is delivered to the market without following software quality assurance. But how? The product may come unstuck when the customer needed it the most or fail to give accurate information, slow to function, or lead to a data breach. Customers fed up with such products can disown them, influence others not to buy, and seek compensation for the loss. In each of the cases, the company is going to pay a heavy price. This is because building a brand is a time-consuming process involving strategizing, running campaigns, and spending money. However, such assiduously built brand equity can bite the dust in no time.

Conclusion

In the Agile and DevOps scheme of things, following a software quality assurance strategy is critical for outcomes like continuous integration and continuous delivery. When software has become increasingly critical in running and sustaining the digital landscape, especially with the arrival of IoT, giving short shrift to QA is a recipe for disaster.

Role of Cloud in your Digital Transformation Journey



In our technology-driven times, organizations that do not have an online presence risks going obsolete or lose credibility. Going digital has become a necessity for enterprises to remain viable, provide good customer experiences, and stay up the competition curve. Since success is generally measured in terms of customer experience, digital transformation becomes a key business requirement. And among the many proven technologies driving digital transformation and offering great customer experiences subsequently is cloud computing. This technology enables enterprises to have robust vision for the future, accelerate digital transformation services, and provide better experiences to the customers.
Businesses have begun to realize the inevitability and benefits of going the cloud way. In a technology-driven world with growing competition, the focus is on garnering transformational benefits rather than settling for the incremental ones. To achieve this, businesses require to set up a robust technology infrastructure. However, for any enterprise digital transformation initiative, the focus should be on remaining flexible and embracing the industry trends.

What is cloud computing?
The process involves the storage, maintenance, management, analytics, processing, and security of data by leveraging a network of internet-based servers. It is in sharp contrast to the data stored on a personal computer or a local server. The distributed storage and management of data help enterprises to make more informed and accurate decisions. Further, this helps them to improve productivity, streamline processes, save costs, innovate, accelerate time to market, enhance customer experiences, and achieve ROI.


Types of cloud computing
The cloud consists of three types of services viz., Software-as-a-Service (SaaS), Infrastructure-as-a-Service (IaaS), and Platform-as-a-Service (PaaS). In SaaS, a third-party cloud provider hosts software applications and delivers them on demand to customers over the World Wide Web. Some examples of SaaS are Google Apps, Dropbox, Salesforce, BigCommerce, MailChimp, Hubspot, and DocuSign, among others.
In PaaS, the third-party provider delivers software and hardware tools, operating environments, database, or computing platforms that are needed to develop applications, over the internet. The examples include Windows Azure, Force.com, Apache Stratos, AWS Elastic Beanstalk, and Heroku, among others.
Similarly, in IaaS, a third-party vendor offers access to computing resources viz., storage, data centre space, security, scaling, network components, or servers, among others. The examples include Linode, DigitalOcean, and Rackspace, among others.

How the cloud can play a role in digital business transformation
To disrupt the status quo and stay competitive, enterprises embrace digital transformation services wherein they need to upgrade their legacy IT infrastructure. Also, to enable digital disruption, enterprises, besides streamlining their business processes, need to leverage advanced technologies. These include Augmented Reality, AI and ML, Big Data Analytics, and the Internet of Things (IoT), among others. Since these technologies demand heavy computer power and storage space, cloud computing comes as a savior. The benefits to be accrued from cloud during the digital transformation process are as follows:
Flexibility: To ensure the success of any digital transformation strategy, the business processes of enterprises can be changed many times. The cloud allows any organization to save costs by not investing in setting up and maintaining costly IT resources in-house such as software or hardware. This way the organization can remain flexible and agile as it can leverage cloud-based resources based on its requirements. For example, if a project needs greater computing and storage power, the organization can scale up its on-demand cloud requirement by paying an extra amount. The reverse can also hold true leading to the optimization of resources and cost savings.
Security: Any information stored in-house can be vulnerable to situations like security breaches, unexpected system downtime, and natural or man-made disasters. Since all data including backup are contained within a singular IT system, any security-related issue can wipe it clean. On the other hand, cloud hosting can maintain multiple backups of data in a distributed system. So, even if one node gets affected, the data in other nodes can remain unaffected. In cases of big data analysis where big chunks of data are involved, any system failure or security breach can have devastating consequences.
Quick prototyping: Any digital transformation implementation entails continuous innovation, testing, and delivery of products or services. This is where the cloud can help enterprises with platforms to build, test, and deliver/deploy applications bypassing the need for a complex IT architecture. So, if an enterprise builds multiple products, then the cloud platform can allow quick prototyping of such applications, saving cost and time in the process.
Seamless collaboration: Implementing digital transformation solutions would require every stakeholder in the organization to embrace a culture of collaboration. This is congruous to the requirements of DevOps that aim at breaking hierarchies or silos to achieve creativity, quality, innovation, efficiency, and glitch-free delivery. With cloud computing, different teams can work seamlessly in parallel to develop, test, and deliver applications. It allows access to computing resources, anywhere and anytime. Also, the optimal delegation of authority can be assured by controlling the level of user authority.
Cost-effective: Cloud services are highly flexible to user requirements. They offer a scalable model wherein enterprises only pay for services that have been used. Thus, there is no need to set up and maintain a costly IT infrastructure (hardware and software) thereby saving CapEx in the process.

Conclusion
The need to enable digital transformation has become imperative given the cost of setting up and maintaining a robust and functioning IT infrastructure. As business processes become agile with the inclusion of new technologies and the need to uphold greater user experiences, migrating to the cloud environment becomes a necessity. It helps enterprises to bypass the challenges of legacy systems and build-test-deliver quality software applications consistently.

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, 27 February 2020

The right approach for testing the ERP applications



Enterprises are realizing the need to leverage the SMAC (Social, Mobile, Analytics, and Cloud) model to accelerate growth. However, overhauling core processes administered by legacy ERP applications is equally critical. ERP applications help enterprises manage various functions, departments, and processes, including the data generated therein.
These applications help enterprises to run as one single unit and, in the process, generate outcomes such as improved productivity, better efficiency, reduced waste, enhanced customer experience, and increased ROI. In view of the criticality of ERP applications for organizations, they should be tested and validated. Testing ERP applications can ensure the smooth functioning of multiple tasks within organizations. These may include tracking inventory and customer transactions, managing finances and human resources, among many others.

Why is ERP software testing needed?
ERP software is cost-intensive and requires a lot of investment in time and effort. Every ERP software comes with multiple versions and requires customization to suit specific business requisites. Moreover, since every element in the application is connected to some other module, upgrading them can be a challenging task. For example, creating a sales order would need access to the inventory management module. If any of the modules does not function to its optimum, the entire ERP application may be impacted. This can have a cascading effect on the performance of the company as well as create bad customer experiences. Hence, testing ERP applications shall ensure the correct implementation of the software and prevent crashes.
ERP software testing, besides checking the software’s functionalities, should ensure the generation of reports and forms accurately. By identifying and removing bugs during the testing phase, testers can avoid facing post-implementation blues. Moreover, it can lead to an early adoption of software and ensure its smooth running. ERP application testing services validate business processes, functions, and the rules governing them. They help reduce operational risks within the constraints of available resources and time.
Approaching the testing of ERP applications
It is imperative for enterprises to set up a robust testing strategy. The strategy should prioritize the testing of processes depending on the short and long-term goals.
Setting up KPIs: At the outset, testers should setup the KPIs or performance metrics and evaluate how they will impact the overall organizational goal as well as departmental objectives. Thus, establishing the KPIs will help derive the right ROI for the organization.
All-encompassing: ERP implementation for a large organization with many departments and processes can be a complex and challenging job. However, it is important that all stakeholders are taken into confidence and involved in the process. The process also includes making the necessary investment in training. When everyone is involved in ERP implementation, there is more cohesiveness in the administration of the software.
Data migration: An organization can plan its strategic moves if it can make use of its data emanating from various processes over a period of time. To ensure real data is not lost or distorted in any way during ERP validation and testing, its proper migration process should be planned beforehand.
Selecting the right automation tools: As ERP software can have myriad variables interfacing with various processes, they need to be validated. This requires choosing the right test automation tools - open-source or premium ones. Automated ERP testing can validate a large number of variables for various processes against expected outcomes. The right automation tool will help testers to write and execute test cases.
Identifying test cases: Since it is not possible to test every sinew of an ERP application, proper test cases should be written to ensure the maximum test coverage. Thus, testers should identify the test cases for each test and document them as well. Also, since ERP processes are linked to each other, and even to third-party applications or modules, they should undergo automated ERP testing.
Conducting performance, regression, and security tests: As an ERP system helps to run the operations of an enterprise as a single unit, it should run some critical tests. These include regression, performance, integration, security, and usability tests. This way the enterprise can ensure continuous monitoring of the system, save time and cost, and prevent any sudden downtime or latency.
Proper documentation: Post testing of components in the ERP system, the documented glitches ought to be analyzed to preempt any failure in a real environment. Moreover, the reports can be used for future reference.

Conclusion

To sustain in the competitive business environment of today, businesses need to take digital initiatives such as implementing an ERP solution. However, to ensure the successful running of such a solution and derive benefits out of it, enterprises should carry out ERP testing. The approach for such a testing should involve automation and carrying out various types of testing.

What are the main challenges of Mobile Test Automation?



Organizations are releasing mobile apps in quick succession to leverage the growing appetite of tech-savvy customers. However, not every app receives user acceptance owing to a range of issues. These include functional defects, below-par performance, device incompatibility, and poor user experience. As users become more critical of such issues and are deluged with a range of alternatives, mobile application testing has become important. Surprisingly, most organizations are yet to embrace mobile test automation even as they slug it out to release newer variants of apps. So, what challenges do enterprises face when they go about conducting mobile test automation? Let us describe some of the biggest ones:

Biggest challenges for testing mobile applications
The list of challenges bedeviling the mobile test exercise is -
1.      Quick release schedules: With customers rooting for mobile apps in greater numbers, enterprises don’t want to be a late entrant and miss the bus. They go for quick build and release cycles where a thorough round of testing often becomes a casualty. Also, due to the pressing schedules, enterprises neither integrate new tests into their test cycles nor have the time to write test scripts. With DevOps and Agile being the methodologies to develop glitch-free applications, the need has arisen to develop a test suite. The suite should be underpinned on continuous innovation to address the dynamics of a complex mobile environment. However, this makes the test cycle lengthy with the release of new devices, operating systems and their variants, features, and functionalities.

2.      Choosing the right mobile app test automation tool: Every mobile app comes with different test challenges where no two are similar. Although the market is flush with many automation tools, the challenge is to find the right one that addresses the specific test requirement. So, to choose the right mobile application QA testing tool, enterprises should meet certain standards:
·         Ease of use and the ability to create a script
·   Ought to run on native and object web properties for better identification of the components
·         Ability to connect to the cloud
·         Enable more than functional testing

3.      Security: Given its growing ramifications on brand equity and user experience, security testing has become a challenging exercise. The reason being the umpteen vulnerabilities that hackers can exploit to steal data or information. When it comes to the cloud, it is better to rely on a private cloud, for it provides better encryption. Also, preventing data breach on a public cloud platform should be given serious consideration by implementing mobile testing. Further, DevOps should be changed to DevSecOps for better security compliance and accountability across the organization.

4.      Diversity in devices: The mobile ecosystem has numerous mobile devices with different configurations. Such device diversity makes mobile app testing a challenging task, especially for native, hybrid, and web apps. Moreover, the type of testing differs as well vis-a-vis compatibility, performance, stress, conformance, and security. Even though native apps have a limited scope of testing, their hybrid and web counterparts are needed to be tested for on and off platforms. This can create knotty back-end issues. Both native and hybrid apps should be tested on various device platforms to ensure outcomes like quick and seamless download, performance, platform interaction, and updates.

5.      Diversity in OS platforms: One of the most challenging scenarios in mobile test automation is to account for the fast-changing operating systems and their variants. With devices operating on different variants of Android, iOS or Windows operating systems at any point in time, mobile testing can become complicated. These mainly relate to the compatibility issues when apps are deployed across operating environments. However, these can be addressed by following solutions -
·         Putting emulators into use to identify glitches and security issues
·         Testing on a set of popularly used devices and target users.
·   Using a mix of both in-house mobile lab and cloud based mobile QA testing

Conclusion
The widespread usage of mobile apps and their interfaces with myriad thirty party sites have meant vulnerabilities can creep into the system, anytime and anywhere. Also, since a significant number of mobile apps carry critical financial and personal information, they should be guarded against all kinds of cyber threats. A thorough mobile application testing framework can help identify such glitches and deliver great user experiences.