Tuesday, 31 March 2020

How to test a Retail Software System



Digital revolution has spread across every possible business vertical and software applications have made the lives of people easy and comfortable. One of the major beneficiaries of the digital revolution is the retail sector. Whether you visit any shopping mall with POS terminals taking care of your payments or order groceries and other stuff from any eCommerce portal, the software applications behind the scenes do the actual trick. However, the speed at which the new eCommerce stores cater to your orders or the POS terminals clear the queue would depend on the software quality running those systems. Further, with cybersecurity becoming a critical issue plaguing the whole digital ecosystem, there is no respite but to go for retail application testing.


Why is retail testing so critical?

Since the POS terminals or eCommerce applications carry out financial transactions with interfaces to customer bank accounts or credit/debit card details, they should have robust security measures. If not, hackers can exploit any resident vulnerability or glitch to steal information leading to devastating consequences – both for the customer and establishment. If the retail applications do not function as expected, the consequences can be severe.
  • A glitch-prone retail application will lead to slow processing speed and clearance time
  • More man-hours will be wasted to carry out simple routine activities
  • Cases of incorrect records and employee misbehavior will increase
  • Cost escalation will be the direct consequence of slow processing
  • Incorrect sales report will lead to erroneous business decisions
  • Difficulty in monitor or track promotional campaigns, discounts, or coupons
  • Bad user experience will lead to a fall in brand equity and customer exit.

The aim of any enterprise developing retail software applications should be to ensure the reliability, security, usability, scalability, and high performance of such applications through retail software testing.


Considerations for retail application testing

The QA team should keep a few scenarios in mind while executing retail testing.
  • Both positive and negative scenarios should be covered to pre-empt any issue. These may be related to an expired card, invalid PIN or password, among others.
  • The retail application may have its endpoints connected to the peripheral devices such as card readers, printer, cash dispensers, cash counting machines, or barcode scanners. Any glitch in the APIs can create compatibility or synchronization issues with such devices.
  • Any retail application dealing with electronic payment should adhere to global security regulations like PCI. This will ensure the safety of confidential customer information like the card and bank details.

Challenges for testers in conducting POS testing

Any retail app testing or POS testing process can face such inadequacies or challenges.
  •  A POS application can have various modules where each one of them can have different configurations. Testing such an application with so many configurations can be a tall order. Hence, suitable test cases should be devised covering every scenario.
  • With technological advancements, especially in security happening rapidly, the retail applications should be upgraded alongside as well.
  •  The POS system has interfaces with several third-party software systems – the integration of which should be systematically tested.


Steps to take while conducting POS testing
To ensure the quality of POS software in terms of security, usability, integration, and scalability, among others, it should be run through a robust retail application testing process. The focus areas as far as testing a retail software system are concerned are:
·       Cashier activity: One of the important functions of a POS system is handling cash transactions. These can comprise activities such as offering discounts, coupons, entry of items, petty cash, closings, cash drawer loans, and store value cards, among others. If only a proper retail testing strategy is adopted, the security and efficacy of such transactions can be ensured. The outcomes can be:
o   The accuracy of purchased items can be maintained
o   The total amount accrued from the purchases can be ensured
o   The validity and integrity of discounts, store value cards, and gift cards can be ensured
o   The total closing amount can be accurately obtained
·       Barcode reading: A lot of merchandise is bar-coded to ensure better inventory management and tracking. There are software to interpret the barcodes and get them synchronized with the POS system. The retail app testing exercise would check for glitches and compatibility issues with such software applications and make the functioning of barcode reading accurate.
·       Server management and integration: The POS or retail application at the front-end can only function properly if its integration with the back-end server is total and seamless. The testing would ensure the smooth interaction between the front-end POS terminals and back-end servers. Moreover, transactions recorded electronically can be verified across channels for better accuracy.
·       Operating platforms: A big retail store can have a number of operating platforms upon which the retail applications usually run. A comprehensive retail software testing can verify the functionality of such platforms.
·       Loyalty points: An important aspect of today’s retail outlet is the loyalty points given by the store. These are given to encourage customers from making purchases. Since these are integral to the POS system and offer discounts to customers on various purchases, the system should accurately process these. The retail app testing or POS testing should ensure the system keeps track of customer purchases, loyalty points, and discounts offered, among others. The system should record the anniversary, birthdays, and other important dates of the customers and wish them on those dates.


Conclusion
The retail ecosystem has many types of apps ranging from POS apps, accounting apps, and eCommerce apps, among others. The successful run of these apps is necessary to maintain the integrity of data, derive useful insights into customer behavior and inventory movement, and ensuring superior customer experiences. To enable these outcomes, the retail applications should be tested on various counts such as functionality, integration, security, and others.

Thursday, 26 March 2020

The need for Salesforce Automation Testing



Customer satisfaction lies at the core of an enterprise’s quest for success. Today, an enterprise with multiple branches and departments spread across geographies may struggle with managing its affairs or taking care of its customers unless it is backed by a CRM platform. The platform would help an enterprise to effectively communicate with its existing and potential customers and manage operations. It would go further in establishing and sustaining customer relationships through various initiatives and stages. A Customer Relationship Management (CRM) software or platform is a conglomeration of systems, techniques, strategies, and practices that helps enterprises to manage customer data and communication during the entire business lifecycle. It reduces bottlenecks in customer communication and helps enterprises meet their business objectives by strengthening customer relationships.
When it comes to CRM software, Salesforce remains the preferred choice. This cloud-based platform is used by 88% of Fortune 100 companies and its associated ecosystem is expected to grow five times its own by 2022. Further, Gartner affirms Salesforce as a leading CRM software platform in terms of sales revenue and customer support. And in the marketing segment, it is placed third in revenue. With so much at stake, the software (and the apps within its ecosystem) needs to deliver top-notch quality outcomes. 
The answer to what makes Salesforce a popular CRM platform lies in its ease of implementation, agility, scalability, and various customization features aligned to the divergent business needs. Salesforce offers a slew of activities based on its integration with various applications such as web portal, data loader, web services, outbound messaging, and social media, among others. However, with constraints of time, cost, and other business exigencies, the integrated applications are not often tested. The result gets manifested in terms of poor quality products, delayed communication, increased costs, and low customer satisfaction. To get around these issues, enterprises should go for salesforce test automation.

Why salesforce automation testing?
Since various applications that are part of the Salesforce ecosystem help enterprises perform a series of functions, they should be validated through an automated salesforce testing framework. Among the benefits to be accrued by this exercise are:
·       Boosts efficiency: Manual testing has its challenges with testers not checking every aspect of the software due to the fatigue factor. Also, besides slowing down the testing process it impacts the overall quality of application adversely. However, with salesforce test automation, aspects like regression testing can be accelerated, glitches can be identified quickly, and software implementation can be done within shorter turnarounds. And with effective Salesforce implementation, enterprises can derive benefits like
§  Quick deal closure
§  Increase in growth opportunities
§  Upselling opportunities
§  Strong customer experience
·       Better test coverage: The implementation of a cloud-based CRM platform like Salesforce entails tackling changes related to various applications. However, this would require the execution of hundreds of test cases and creating user scenarios. With data-driven Salesforce automation testing, the compatibility of applications and their consistent performance across digital elements (devices, browsers, operating systems, and networks) can be validated.
·       Quick detection of glitches: Automation testing can be conducted 24 x 7 without the need for constant supervision. Since hundreds of test cases are checked in iterations, glitches can be identified quickly. This, in turn, ensures the quality of features and functionalities of applications within the Salesforce ecosystem to remain top-notch. And sooner the glitches are identified the quicker they can be fixed.
·       Better documentation: Salesforce test automation generates log reports detailing the success and failure of test cases. These serve for documentation purpose and guide the team to understand the causes of failure and apply correctives.
·       Better ROI: The error-free outcomes generated through automated testing help saving money and resources, improving the quality of applications, enhancing customer confidence in the brand and product, and generating a higher ROI.
·       Decreasing production defects and increasing CX: The identification and mitigation of defects in various applications of Salesforce are accelerated through automated testing. This results in enhancing the quality of products and delivering a superior customer experience.
·       Adhering to quality or security protocols: The security protocols like ISO/IEC 27000, Sarbanes-Oxley, and others require strict adherence by enterprises. This is to ensure the products turn out to be robust, qualitatively superior, compatible, and secure. Automated testing can relieve testers from mundane testing jobs to focus on tasks like adherence to protocols. It builds customers’ trust, reduces vulnerabilities, and preempts enterprises from censure or penalties.

Conclusion
Salesforce implementation helps an enterprise to add value, build customer loyalty, and distinguish itself from peers & competitors. Through Salesforce automation testing, QA specialists can eliminate routine errors that are often left unidentified during manual testing. If done diligently, automation testing can enhance the quality of applications in the Salesforce ecosystem and deliver superior customer experiences.

The importance of Load Testing


The latest software applications need to be compatible across a plethora of digital platforms. These include devices, operating systems, browsers, frameworks, third-party APIs, and networks. However, the success of such applications can only be ensured if they are able to function seamlessly across the above-mentioned digital elements or channels for peak load conditions. In other words, the applications should perform accurately and without any issues (latency, downtime, etc) should they be subjected to specific load patterns. However, to ensure the software performs to its optimum capacity when faced with extreme loads, it should undergo load testing.


What is load testing?

As non-functional testing, it is carried out to find out the behavior of a software application under specific load threshold. A software application load testing helps to determine a system’s behavior during normal and peak traffic conditions. For example, during Black Friday sales in the West, people throng retail or eCommerce stores in droves. And unless these systems have undergone load testing, they can get overwhelmed leading to system latency, downtime, or worse, crashes. This type of application performance testing is meant to check an application’s performance in the event of a large number of users trying to access it at the same time.

What does application load testing tell us?

The following outcomes can be determined by subjecting an application to load testing.
·       Identify if the hosting infrastructure is sufficient to run the application.
·       Find if the application is able to perform to its optimum when subjected to its peak user load.
·       Verify the number of simultaneous users the application can handle. Also, evaluate the hardware configuration, network capacity, and other considerations the application may require to function optimally.
·       Identify the specific element in the application that is causing the deterioration in performance. For example, in the event of an increase in user count, the testing would throw light on the quantum of memory and processor usage, and response time for network bandwidth.

Benefits of load performance testing
To ensure software applications perform to their optimum when maximum number of users try to access them at the same time, they should undergo rigorous load testing. The benefits to accrue from such a type of performance testing include:

Stimulation of real-time user scenarios: It is important to know how an application, website, or API shall behave when accessed by a large number of users at a given point in time. It is needed to prevent situations like system latency, downtime, or crashes, which have the potential to mar customer experience and confidence. Simulating real user scenarios can help in identifying bugs or understanding bottlenecks that may impact the application when put to real use.

Measurement of the quality of product or service: Application performance testing measures the quality of a product or service as per the user behavior. Testers using tools like LoadRunner, Blitz, BlazeMeter, CloudTest, and Apache JMeter evaluate an app or website’s performance under actual load conditions. Also, the testing exercise monitors the throughput of servers, memory, CPU, and other hardware elements when subjected to extreme load thresholds.

Analysis of key performance parameters: Testers, through application load testing, can identify a slew of performance parameters. These include throughput, response time per transaction, delay in network between server response and client request, or design issues. Further, configuration issues like database server, application server, web server, memory limitation, and CPU maximization are identified.

Improved scalability: This type of performance testing helps testers to find out the actual quantum of load that an application, web portal, or server can support. The information can be of great help when developers need to scale up the infrastructure as per the changing business demand. Besides, in order to preempt special load scenarios like Black Friday, music festivals, or sporting events witnessing a surge in traffic, testers can perform special load testing.

Prevention of application failure: Any application may contain a hidden glitch, which, if not identified and mitigated in time, can lead to its failure. Such failures can manifest themselves when the load is beyond the capacity of the application to handle. This is where load testing can help by detecting such issues early on in the SDLC. If not, such failures can incur huge costs for organizations and impact their brands adversely.

Conclusion
Load testing can help an organization to evaluate the capacity of an application or website. It ensures user satisfaction in the case of a surge in traffic and renders superior performance for the software. This type of testing should be made a part of the usual QA process to preempt software failure.

Friday, 20 March 2020

Strategizing your Digital Transformation, the right way



When the world is moving toward all things digital, businesses cannot remain immune to reality. In fact, the mature ones are looking at integrating SMAC (Social, Mobile, Analytics, and Cloud) technologies in their quest for achieving business transformation. Others are focusing on addressing discrete business issues by integrating singular digital technologies. With digital transformation, businesses are aiming at streamlining their workflow/processes, enhancing productivity, reducing waste, responding quickly to customer feedback, and increasing ROI, among others. However, about 70% of digital business transformation initiatives do not succeed to meet their objectives. So, before understanding why such staggering figures for failure, let us learn about digital transformation.

What is enterprise digital transformation?
It is about transforming all aspects of your business by integrating digital technologies to deliver value to the end-customers. Here, enterprises do not always follow the well-trodden path but innovate and experiment to stay up the competition curve. Digital business transformation may require the legacy systems to be overhauled and migrate all resources to the cloud. It makes any enterprise agile, responsive, and productive. For example, a middle or large enterprise may go for digital transformation implementation by integrating its processes with the ERP software. This way, the management of the enterprise can track the movement of resources across the value chain and respond quickly to any sudden requirement.
To a large extent, digital transformation solutions can deliver the following outcomes.
1.     Better customer experiences: As processes get streamlined and bottlenecks are removed, the inherent glitches present in the product are identified and mitigated quickly. Thus, with a quality product that keeps on improving, customers derive better experiences.
2.     Operational agility: In a robust digital transformation strategy, activities like shift-left testing are introduced in lieu of the traditional waterfall model. As quality testing takes place alongside development, the process agility increases.
3.     Cultural change: Aspects like quality and security are often given short shrift over more pressing issues like faster time to market. However, with the adoption of Agile and DevOps - a result of digital business transformation, the employees across sectors need to change the way they work, especially when it comes to upholding aspects like QA and security in the value chain.
4.     Enabling the workforce: The workforce could work even remotely by accessing the cloud-based resources of the enterprise, anywhere and anytime. This can address issues related to absenteeism, system latency & downtime, or geography.
5.     Integrating digital technology: Arguably the core requirement of any digital transformation consulting, integrating advanced digital technologies can make the IT architecture agile, secure, and seamless.
To drive a digital transformation strategy successfully and achieve the desired outcomes, enterprises can follow this process.
1.     As per business needs: Businesses can implement transformation depending on a host of factors. These include changing customer preferences, market trends, business forecasts, automation, Capex, the advent of technologies, or rising operational costs, among others. It is important to understand your specific business needs as the journey can entail massive changes and disruptions. So, before opting for transformation, businesses should be clear about their destination lest they end up getting stuck.
2.     Identify the risks: Any digital transformation initiative can involve risks, which if not factored into the scheme of things, can leave an enterprise high and dry. These risks should be properly documented and tracked over a period of time.
3.     Know the requirements: It is important to involve all stakeholders in the digital transformation process and be realistic about the outcomes. Some of the considerations can include:
·       The destination of data and information: in-house, cloud, or a combination of both
·       Risk management implications
·       Technology requirements such as mobility solutions, cloud, or AI and ML, among others
Importantly, if the digital transformation strategy is too radical to implement and takes the users away from their comfort zone, it may create a fair share of challenges.

4.     Pilot testing: Once the risks are documented and the process thoroughly analyzed, a pilot test run should be conducted. This can give a fair idea of the type of challenges or qualitative changes brought about by the transformation exercise. Also, any issue with pilot testing will not impact the whole value chain but a small ‘manageable’ segment.

Conclusion
Developing a strategy for business transformation through digital technologies and initiating a culture change should not be complex or time-consuming to implement. The focus should ultimately rest on fulfilling your business goals and addressing your challenges.


Fitting QA and Sec in DevOps



Traditional QA is woefully short in tackling the challenges of modern software applications. This is due to the fact that today’s software applications have interfaces with several digital elements and third-party sites to function and deliver the right outcomes. And to ensure that they do so seamlessly, DevOps QA must replace traditional QA.
So, why did DevOps QA slowly assume salience in the new digital scheme of things?
In a traditional software development lifecycle, QA exists as a distinct group along with Dev. It has different job roles, responsibilities, and management. The bottom line, both Dev and QA exist as separate entities catering to different objectives. However, from the operations perspective, both development and QA are considered to be part of the same ecosystem.
With quality, or should we say customer experience, taking precedence over everything else as far as acquiring a competitive edge in the market is concerned, enterprises are adopting DevOps as a methodology. Here, development and operations are combined in a cultural web where ensuring quality is not a one-off thing but a continuous process to be adhered to. So, when development and operations merge, how does QA fare in the scheme of things? DevOps is all about enhancing the quality of software applications throughout the SDLC and beyond. It incorporates test automation, security, and quality engineering while delivering continuous integration and deployment.
Why DevOps?
Enterprises are adopting this model to create a build ecosystem where quality software is developed quickly – on a weekly, daily, or even hourly basis. Here, the traditional concept of software release gives way to the continuous improvement of products or services. DevOps is the culmination of agile wherein all bottlenecks to delivering a superior quality application are removed. Through DevOps test automation, enterprises can achieve objectives like faster time to market, high-quality applications, instant responsiveness to customer queries or feedback, and preventing the ingress of glitches, among others.
How to incorporate Security into DevOps
As the security of applications becomes a cause of concern due to the rising incidents of cybercrime, customers have become wary of trying out new applications or even using the established ones. Are the concerns of end-customers valid or are they overreacting? The answer to the validity of concerns is a resounding yes. Unfortunately, even when the spectre of cybercrime is on-the-face, many enterprises have not yet woken up to the challenge. There is often a mistaken belief that cybercriminals would only target big and established players, and smaller players can get away without incorporating security into their build pipeline. Since security is such an important part of DevOps, let us understand how to weave awareness about the same in the SDLC.
How to introduce security into DevOps and make it DevSecOps?
The best practices to incorporate security into the DevOps model are as follows:
Create a DevSecOps culture: Every member of an organization should be made aware of the consequences of a security breach, especially on the brand and business. A heightened level of security awareness can help companies in situations where there is pressure to come out with a large number of software applications in lesser time. All-encompassing security culture will prevent developers to take shortcuts and instead insist on making way for DevOps quality assurance. To ensure the incorporation of DevOps QA in the SDLC, the culture for security awareness should be driven from the top. The executives and various stakeholders in the value chain should be made responsible for overseeing the introduction of security into the DevOps model.
Inculcate security awareness: This continues from the above wherein every new hire in the organization should be trained in the basics of security. It could be about writing a secure piece of code or identifying the most common attack vectors. The senior developers and DevOps testing specialists could be tasked with preparing training courses on secure coding protocols or common mistakes. Thus, the senior developers take ownership of these issues, especially when it comes to the daily grind of reviews, builds, and deployments.
Security processes should be compulsory but minimal: People, by and large, dislike lengthy protocols and can be at the end of their tether when the security processes are elaborate. So, it makes sense to lay down short and robust security mechanisms when it comes to dealing with passwords, encryption keys, or ciphers, among others. However, the types of authentication that are required should not be left to guesswork but made mandatory.
Conclusion
As DevOps picks up momentum and becomes the de-facto model for software development, QA and security should be made an integral part of the value chain. The latter two will ensure the effectiveness of the model when it comes to developing quality software applications.

Thursday, 12 March 2020

The QA imperative of a DevOps cycle



With customers taking the lead in determining the success of a software product in the market, enterprises have their task cut out. They can no longer afford to give short shrift to quality while focusing on faster releases alone. In traditional QA, siloed departments often work at cross purposes to each other and render the overall quality of a product less effective. So, to transform the whole QA value chain and deliver outcomes like speeding time to market, increased collaboration, and the delivery of a quality product, DevOps QA takes center-stage. The latter helps to streamline the functioning of silo- driven departments by driving a culture of collaboration.

What is DevOps and what are its benefits?

DevOps combines Development and Operations wherein the thrust is on automating the processes between the two teams. DevOps QA facilitates the development, testing, and release of software, quickly, reliably, and cost effectively. It is underpinned on building a culture of collaboration between the traditionally silo-driven teams. Here, three distinct elements in the whole ecosystem viz., people, processes, and products are integrated to deliver value to the end customers. With DevOps testing services, the entire SDLC is streamlined and accelerated to release applications or services within quick turnarounds.

The various benefits of a DevOps driven build-test-deliver pipeline are as follows:
As enterprises root for digital transformation to stay competitive and deliver the best user experiences, DevOps specialists are looking into the end-to-end product cycle. They do so with the aim of enhancing the quality of software at a lower cost.

·         Quick fixing of glitches: In the shift-left scheme of development and testing, a code does not move beyond a point until it is tested for various parameters. This results in quick identification of vulnerabilities or glitches and their resolution/mitigation. Thus, the clean code is passed on to the next module or cycle for integration.

·         Streamlined processes including automation: As DevOps quality assurance goes about breaking silos around teams and streamlines their processes, the quality and speed receive a boost. DevOps test automation stays central to the entire activity as codes are put through automated test scripts for validation. Also, automation can run repetitive processes iteratively leading to the quick identification of glitches.

·         Better engaged workforce: With DevOps test automation taking up the load of running iterative tests, testers can be deployed elsewhere. The testers can better utilize their skills in activities where there is a scope for innovation. The engaged workforce can ultimately benefit the organization with activities that can keep it competitive.

·         Collaboration: In traditional QA, teams across the organization generally do not go beyond their remit. This approach often results in ignoring issues, glitches, or vulnerabilities when the product module moves across the pipeline. Since glitches can get into the software at any point in the SDLC, everyone in the organization should be made accountable. There should be a change in culture wherein every member cutting across departments or processes should ensure the product moving through their part of the pipeline is devoid of glitches. Such collaboration can lead to the identification and removal of glitches thereby improving the overall quality of the product.

·         Continuous integration and delivery: Arguably the ultimate outcome of DevOps where a product can be upgraded based on the feedback from customers or the market. In the real world, customers may come across issues in a product, which did not find traction during development. The operations team must keep their ears to the ground and listen to the feedback. The same should be passed on to the development team for correction. The product pipeline should have a loop of continuous integration and delivery to ensure the quality of the product remains top-notch.

Since the ultimate aim of DevOps is to render the development and delivery of a product glitch-free, QA should be an integral part of the cycle. In other words, DevOps without QA is a recipe for failure. Let us understand this with an example. With faster time to market being one of the objectives of DevOps, enterprises may release a product without proper QA. Since a comprehensive round of QA testing involves checking the usability, functionality, security, and other aspects of a product, the overall quality suffers.

So, even if the customer receives a product quicker than others in the market, its lack of quality can mar the user experience. The quality issues again force the product to be fed into the development pipeline. This entails additional cost, time, and effort on the part of the team. So, on one hand, the product does not receive any goodwill in the market, on the other, it leads to the accrual of additional expenses for the organization. In the competitive world of business, these shortcomings can prove to be the undoing of enterprises.

QA is everyone’s responsibility

In DevOps software testing, ensuring the quality of software is treated as everyone’s responsibility. This does not, in any way, imply that the QA team becomes redundant. Rather, it underlines that quality has to be ensured at every point of the SDLC and beyond. Every team and individual within the team should take responsibility for the quality and stability of the product. QA should assume a more strategic role of establishing a robust testing architecture or/and offering an oversight of QA.

Conclusion

To ensure QA remains an integral part of the whole DevOps-led SDLC, it should sit at the core of the build rather than being treated as an afterthought. To be at the top of your game and make the product stay clear of the competition, DevOps should be implemented across the SDLC.