Showing posts with label application performance testing. Show all posts
Showing posts with label application performance testing. Show all posts

Monday, 20 January 2020

How to address the Performance Testing challenges of IoT



The digital age aka industry 4.0 has been redefined by intelligent solutions that are merging the digital and physical worlds across verticals. These intelligent solutions are leveraged by organizations to enhance scalability, enable customization, realize efficiencies, improve customer experience, and achieve ROI. The Internet of Things or IoT technology is driving synergies between smart machines, industrial processes, and software applications. This requires organizations to build end-to-end systems with enhanced capabilities, driving outcomes such as product enhancement, innovation through collaboration, greater operational visibility, better equipment performance, and quicker decision making - all based on contextual data obtained in real-time.

The Internet of Things (IoT) connects smart devices to the internet using sensors. It also connects such devices to digital technologies constituting big data, artificial intelligence, and wireless networks. The main objective of establishing such a network is to collate and share intelligence among devices without any human intervention. The data obtained from IoT helps organizations to analyze their digital ecosystem and pre-empt equipment malfunction, downtime, and other glitches. It gives them insights into the performance of products and how they are utilized by the users. The insights can be leveraged to enhance the differentiating features of products, create value chains, and build new business models to drive growth.

IoT helps organizations to
  • Track and monitor assets in real-time with respect to their performance and availability
  • Analyze data from sensors for predictive maintenance
  • Take critical business decisions
  • Generate greater efficiency, enhance safety and customer experience and create new business models and revenue streams

However, IoT can present a host of challenges, especially concerning performance testing.

Challenges in application performance testing of IoT devices
  • Increased complexity: Since data communication takes place between smart devices such as televisions, air conditioners, washing machines, refrigerators, or smartphones, they need to be considered for performance testing. However, the plethora of devices can increase the level of complexity while drawing a specific performance testing strategy. Also, recording data from mobile devices, and web browsers, among others by using a load tester is relatively easy compared to testing the above-mentioned devices without changing their settings.
  • Tackling the impact of factors: In IoT, factors such as network bandwidth, load, latency, or packet loss, among others can be critical when it comes to executing application performance testing. For example, if the above-mentioned factors are not tested for a web or mobile application, the same may crash.
  • Stateless operation: Typical software applications are connected through a sequence of steps aka context or state. However, since IoT sensors do not follow any well-defined context, the IoT applications ought to manage such context or state elements.
  •  Diverse device interfaces: With changes in IoT devices and the addition of new ones with different connection protocols and data formats, the performance testing methodology needs to change as well. This is because every new addition would require the execution of performance testing. 
  • Absence of subjective feedback: In most testing procedures, data can be inserted to test the effectiveness of UI or response time. However, the same cannot be provided by the IoT networks.


The performance testing approach to tackle the challenges?

To begin with, testers should prioritize test cases, especially the key areas that can take the longest testing time. Testers must understand to choose such areas as the consequences of performance issues can be devastating for some businesses compared to the rest. Also, given the fact that a great deal of standardization has taken place in the technology field, the testers should ensure their compliance while providing performance testing services. Any updates being pushed for these devices would present challenges of security and usability. The core functionality of IoT devices should include monitoring their current status as they are connected to a network 24x7.

Implementing IoT can include devices that do not have IoT in them. These may include communication networks, instrumentation, and storage, among others. The complexity of such devices and the lack of an IoT label would require testers to first understand how the pieces would fit in the jigsaw. Thereafter, testers should streamline the complexity and communicate the importance of each device and make it work.

Conclusion

The efficient way of driving the performance of an IoT based application is to implement a robust testingplan. It should be followed by determining the peak load factor faced by the device at any point in time. The testers should use appropriate testing tools to validate performance efficiently. By implementing performance testing, businesses can integrate IoT in their processes and achieve success.


This article is already published on medium.com.

Tuesday, 7 January 2020

Building the right Performance Testing strategy



In our digitally-connected world where companies are churning out umpteen number of products or services to be accessed over digital devices, performance becomes a sticky issue. The word ‘sticky’ has been used deliberately as the performance of a product or service depends on a host of factors. And delivering a glitch-proof product is no guarantee of its smooth performance. In fact, factors like responsiveness, network bandwidth, and others can deal a body blow to the performance of an application. Just think of an airlines portal catering to thousands of transactions every second. If the portal does not follow a robust performance testing strategy and selects a threshold for load, it is likely to crash midway or show latency. This can adversely impact the user experience.

What is performance testing?
It is a form of software testing where the application under test needs to be checked for its load handling capacity. The load performance testing process determines the stability, speed, throughput, and responsiveness of an application or system when working under a load. It is a non-functional testing that comprises various tests such as load test, capacity test, scalability test, soak/endurance test, volume test, and spike test.

To build the right performance testing strategy, one must be aware of the associated challenges. These include

·         Testing the software under realistic scenarios
·         Picking the right tool to simulate real users
·         Lack of test data
·         Limited test coverage area
·         Poor scalability not allowing the handling of concurrent tasks
·         Poor network configuration
·         Insufficient hardware resources like low performing CPUs
·         Insufficient capacity to handle the workload

The performance testing methodology should define the scope, load policy, and SLAs surrounding the application. Since everything about the software cannot be tested, a decision should be taken to identify the specific area, feature, or functionality of the application for testing. It has been observed that around 10-15% of test scenarios contain around 75-90% of bugs. So, it is better to focus on those scenarios and mitigate the lion’s share of glitches.

How to build the right Application Performance Testing strategy?
Selecting the right strategy would determine if the performance of the application covers all the right areas and load scenarios.
Test environment: Set up a robust test environment by identifying elements like hardware, network configurations, and test tools. This will help the QA team to identify challenges pertaining to performance testing early on in the SDLC. In fact, QA experts can have a number of options in setting up the test environment. These include:
·         A production system containing a smaller number of servers of lower specification
·         A production system comprising a smaller number of servers of similar specification
·         Using the actual production system or its replica

Baseline for user experience: At the beginning of conducting load performance testing, the QA testers should know the level of user satisfaction. So, it is not merely about the number of load times or responsiveness of the application. Identify a baseline for user experience that the application should be tested for.
Performance metrics: Choosing the right performance metrics is important to plan for testing. These include throughput, response time, and constraints. For example, response metrics deal with measuring the performance of an application from a user’s perspective. While volume metrics is about measuring traffic generated by the load testing tool vis-a-vis the application.
Realistic tests: Allowing umpteen number of virtual users to face a server or cluster of servers may not be the right way of measuring load in a real-world scenario. While setting up such a scenario, the focus should be on choosing the devices or environments that would be used to access the application in real-time. This is important because the traffic is likely to come from a host of mobile devices, operating systems, and browsers. Also, the realistic test scenario should vary the test environment. This is to allow the organization to become resilient to the changing market dynamics.
Performance testing a part of Agile: Performance testing should not be conducted at the end of the development process. This makes it too late and expensive to fix glitches. So, load performance testing should be integrated with the development process a la Agile. In fact, performance engineering should be a part of the scrum and entrusted with measuring the performance of code during development.


Conclusion

In a competitive business environment where the quality of software application determines the latter’s success, building the right strategy for performance testing is critical. It ensures the smooth performance of application against a definitive user load scenario.


Tuesday, 11 December 2018

How can Performance Testing lead to business excellence

Performance Testing

The digital world is driven by myriad software applications that run on both modern and legacy systems and are backed by a plethora of platforms, frameworks, operating systems, and networks. And unless these applications perform to their optimal levels with all features and functionalities working in tandem, the stated business objectives will not be achieved. Each software application can have built-in glitches, which, if not dealt with earnestly during performance testing (and other types of testing,) can render the application to suffer from inadequacies. Since the functioning of the digital environment is underpinned on achieving customer satisfaction, the inadequacies can impact the business negatively. Moreover, the advent of new technologies such as Artificial Intelligence and Machine Learning, Internet of Things (IoT), Big Data, Blockchain, and Cloud Computing has added to the complexities of building and operating software applications. And if the growing incidences of cyber securities issues are taken into account, then the cocktail of complexities becomes even more stark.

To address the technological challenges that software applications have to grapple with, they need to undergo performance testing. It ensures software robustness, operational readiness, and error handling capacity. The test can come in handy during business critical situations when glitches or the lack of error handling capacity of the software can make things to go haywire. For example, airlines reservation systems should account for an extra rush of passengers during holidays. And unless the systems go through the process of application performance testing, they can lead to latency or downtime when subjected to stress. Also, eCommerce sites experience loads during events such as Black Friday, Thanksgiving etc., which can lead to issues such as shopping cart abandonment, poor conversion rates, and a decreased order value. These factors combinedly can bring down the value proposition of the brand in the eyes of customers. However, all such outcomes can be prevented should the software applications and the hardware running them are validated for quality by the performance testing services.

Repercussions of not carrying out performance testing

Software applications can function seamlessly in normal operational conditions. However, the moment they are subjected to stress, they can behave erratically or erroneously. It is only by adopting a proper performance testing methodology that such behaviour can be pre-empted. Let us understand the repercussions of not executing performance testing.

  • The application may fail during peak times leading to customer dissatisfaction.
  • Any rework later can be challenging, time consuming, and costly.
  • Should the software go LIVE without the users getting any prior hands-on experience, there can be problems in handling performance issues that may crop up in the actual operating environment.
  • Check if the features and functionalities of software deliver outcomes that are expected.


Applying performance engineering
In the DevOps scheme of ensuring Continuous Integration and Delivery (CI/CD,) the focus is on identifying and eliminating glitches in the initial stages of software development. This calls for incorporating performance engineering, wherein each segment of the software is designed to achieve operational excellence. This leads to the quick delivery of efficient and responsive systems that enhance productivity, reduce waste, improve efficiency, and boost revenue.

Suitable performance testing strategy for your business

Get information on the type and quantum of load: First and foremost, it is crucial to understand the kind of load the system is going to expect. This will help you to figure out the kind of response time needed to handle the load. Thus, run tests when the load is significantly high to evaluate the response time. To enable the same, use an appropriate test automation tool to create any number of virtual users to mimic the real load across channels, branches, and geographies. While executing the test, record the minimum, maximum, and average response time of the system.

Carry out stress test: By executing a stress test, you can figure out the behaviour of software when subjected to extreme stress conditions. This way, the breaking point of software can be ascertained.

Elasticity and scalability: The testing includes understanding whether the performance of the software is on expected lines and can be scaled up to the desired level should the need arise.

Conclusion
In an increasingly digitized environment where business outcomes hinge on achieving customer satisfaction, the performance of software applications becomes paramount. By chalking out a suitable performance testing strategy, both the customers and business deliverables can be handled effectively.

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