Thursday, 2 April 2020

Penetration testing – making your software impenetrable



The global march of digitization continues unabated. As a consequence, it has brought attributes like convenience, speedy delivery, a slew of options to choose from, and cost-effectiveness like never before, for the users. However, with technology and its myriad benefits comes the curse of security breaches. If on one side, new technology are breaking new thresholds, on the other, hackers are finding novel means of intrusion and siphoning off data and information. Also, with workplaces becoming the hub for information access through digital devices, people often show scant regard for security protocols. This allows hackers the opportunity to penetrate the IT infrastructure of a company and steal valuable data.
According to Gartner, the global spending on cybersecurity is projected to touch a whopping $133.7 billion in 2022. Does this make the global IT systems secure? The answer is both yes and no. Yes because the security mechanisms complying with industry regulations have created a strong deterrence for hackers. However, since users are often the weakest link in the whole value chain, their lackadaisical attitude regarding security has often given hackers the opportunity to strike gold. The annual official report of Cybersecurity Ventures has pegged the damages due to cybercrime at 6 trillion by 2021. With so much at stake, enterprises have no escape but to adopt penetration testing and secure their systems.

What is Penetration Testing?
Also known as pen testing or ethical hacking, the testing process looks into a computer system, web application, or network to search for security related vulnerabilities. It can either be performed manually or by using a test automation software. It goes beyond regular compliance audits or security assessments. Let us see how software penetration testing is different.
·       The testing process simulates a real attack to check how databases, financial assets, or business systems would be impacted. It helps security experts to identify the vulnerable areas in a system.
·       Application penetration testing checks the ability of any IT system to detect security breaches in real time.
·       Even though a major part of the testing process involves automation, experienced professionals aka ethical hackers majorly do pen test. These people analyze IT systems in the same way a hacker would.
·       Hackers always look for vulnerabilities or gaps between the use of security tools often created due to their incompatibility. A pen test uncovers such vulnerabilities.
·       It reveals vulnerabilities that might have been overlooked during routine testing.
·       Software penetration testing helps an enterprise comply with existing regulations.
How to conduct penetration testing
Testers conducting pen testing begin with analyzing the business, its IT infrastructure, and entry points. They try breaking into the system and report on their experience. Also known as white-hat attacks, these help a business to identify the potential weak points that can be exploited by a real hacker. The various steps are as follows:

Testers providing penetration testing services often work in tandem with the tech/information team of an enterprise. Together they simulate targeted attacks and analyse the findings.
·       They try hacking into resources such as domain name servers, email servers, and web servers. Also known as external tests, these reveal how far a real hacker can penetrate into the system.
·       Internal testing is all about identifying the gaps behind a firewall. Here, testers use the same level of authorization and access that employees possess. This way they can find out the weak points in a system, which any hacker or disgruntled employee can exploit.
·       Another method employed by testers doing network penetration testing is blind testing. Here, testers execute the task at hand with very little information about the system. For example, they might be provided with only the website URL or name of the company. If testers are able to ferret out more information about the company, the greater would be the security risks.
In double-blind testing, only one or two testers know about the process being conducted. This generates the most unbiased results as people using the system continue to remain careless while going about their tasks. It helps to evaluate security awareness and the response of protocols.

Conclusion
Cybercrime has assumed menacing proportions. It has the ability to undermine user confidence in an organization by targeting its systems, databases, and servers. In a digital ecosystem where everything is getting increasingly connected, the quality of its security architecture should be top-notch. Penetration testing helps to unearth any hidden vulnerabilities in an IT system and provides valuable information about the ways to mitigate them.

Wednesday, 1 April 2020

4 Best Practices for Automating your Regression Tests



To stay in the competition, enterprises need to deliver quality and user-friendly products or services on a consistent basis. While doing so in real-time, they ought to upgrade their deliverables with better features and functionalities possibly without altering the cost. As customer experience becomes the key differentiator for products to being adopted by their target customers, their quality becomes important. The quality needed is in terms of performance, scalability, security, and, to some extent, aesthetics as well. So, how to ensure the changes made to the applications do not end up impacting any other aspect of the same? The answer lies in conducting regression testing. In fact, given the business-critical need for the products to perform well, there has been an urgency to administer regression testing in software testing.

How does regression testing help enterprises?

Modern software applications are huge, cumbersome, and come with a lot of end-point interfaces with third-party applications. These make them vulnerable to the ingress of glitches when changes are introduced. Thus, determining the impact of any minor fix can be a challenge unless, of course, the software is put through automated regression testing. In this type of testing, the core functionality and performance are analyzed to uphold the application’s robustness. Further, regression testing validates performance of the application’s interdependencies.

Notwithstanding the criticality of regression testing in the build-test-deliver pipeline, it is often given short shrift by the powers-that-be. As per the management, retesting the already-tested features and functionalities in a software can be a wasteful, time-consuming, and costly exercise. Let us discuss some other challenges that can be added to this list containing ‘management reluctance’.

Challenges for regression testing services

The slew of challenges impacting the proper execution of regression testing comprises of the following:

Inadequacies of the waterfall way of testing: Enterprises are wont to follow the waterfall way of quality testing where siloed departments, especially QA, may not have the idea of any changes being made in the application. To address the lack of information, testers conduct the full suite of regression testing, often manually. This can take a toll on their time, cost, and effort. However, with the adoption of Agile and DevOps methodologies, everyone is aware of the changes. Hence, testers, instead of running the entire suite of testing, only test the impact of the specific change made in the application.

Costly and highly complex: As this type of testing entails retesting the already tested features and functionalities of an application, it is difficult to justify the cost. The cost can accrue towards allocating resources and tools. Further, since the updates to any software application can be a continuous process given the technology trends and changing customer preferences, the need for maintaining the test cases increases.

Choose appropriate test cases: To make the most of the time and resources allocated towards regression testing, testers should create and execute specific test cases.
Since regression testing in software testing can be a cumbersome and time-consuming activity, it should be automated. In other words, by automating the regression test suites, enterprises can free up resources and relieve them from the drudgery of performing repeated manual testing.

Best practices for automating regression testing

As regression testing for checking the functioning of various aspects of an application is repetitive, automation holds the key to make it quick, efficacious, and cost-effective. The best practices to follow are:

Choose the right test cases: Since running the test covering all aspects of an application through large test suites would belie the very rationale for automation, testers should choose test cases carefully. They should brainstorm as to the specific cases they need to validate rather than going about testing every aspect of an application. Importantly, test the interdependencies that feed the performance of various features and functionalities.

Choose the right tool: Automation testing needs the presence of proper tools that enable the writing of test scripts in any language the tester is comfortable with. The tools can be open-source or premium depending on the extent they can meet the testing objectives.

Train the testers: Even though automation in regression testing can supposedly relieve testers of the drudgery of conducting manual tests, they should have the expertise to write test scripts and run them. So, choose testers who are adept at writing test suits or train the ones who are not yet up the learning curve.

Study user personas: Usually, the features and functionalities that the core group of target users would like to use should be automated. This, when extrapolated, can cover most people’s browsing habits and ensure a superior browsing experience.

Conclusion
Regression testing is a critical requirement to ensure the seamless performance of an application. However, while automating the same, steps should be taken to cover specific aspects of the application that may have a large impact on the user experience.


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.