Monday, 26 September 2016

Challenges of Testing an IoT Application.







The proliferation of the Internet of Things (IoT) and its related technologies and software applications has confronted the testing teams with a number of challenges. With IoT, where most of the everyday objects communicate with each other, and where technologies upgrade every other day, new challenges have emerged for the software testing industry. 

For any given software project, QA teams need to ensure that a single app functions as designed and performs as per  the user expectations. As the IoT devices  seamlessly connect and communicate with a wide variety of platforms, devices and operating systems, the additional stress on the testing team is enormous. However, such challenges are completely outweighed when it comes to the security challenges posed by the software architecture of the IoT application. With innumerable devices connected to each other in the IoT, there are numerous potential attack vectors that can be exploited by the cyber criminals. If cyber criminals were to tamper with the settings of such devices, the consequences could be highly devastating. 

With the amount of detail that needs to be covered in an IoT testing, having a list of critical QA priorities is very important. Such priorities need to cover the length and breadth of the challenges of IoT testing. 

The different areas of testing an IoT application are as follows:

-      Functionality: Web/UI, embedded and back-end computing.
-      Compatibility: Multiple Configuration, Protocol and product Versions, Backward Compatibility and Mobile OS.
-      Connectivity: Communication between the devices, third party applications and the infrastructure.
-      Performance of the network, communication and internal computation.
-      Exploratory: Rare scenarios and beyond functional requirements and structured testing.
-      Security: Privacy, Autonomy and Control.

The top challenges and solutions that the QA can enlist are as follows:

-      The convergence of Hardware and Software: The ecosystem of IoT is made of devices, sensors and applications. When it comes to millions of sensors and devices in conjunction with intelligent software, only functionality validation is not enough.  

-      Additional factors along with a working system: IoTworks with sensors and devices communicating with multiple software back-ends with complex algorithms.It is not only enough to ensure a working set of device software. It requires a robust validation process with extremely complex real time scenarios. Obtaining such scenarios is an extreme challenge for the QA team.

-      Sensor Interactions: The biggest challenge lies in the creation of an environment in order to test the real-time implementation of the IoT application. Setting up such an environment requires numerous analytics engine and a significant experience in technical simulation. Although the hardware and the protocols are well tested beforehand, understanding the application intelligence and the device complexity is an extremely big challenge for the QA experts. 

-      The device interaction layer: Here the software and hardware components interact in a real-time IoT environment. Their conformance to standards, interoperability, backward compatibility and security are the additional challenges in addition to typical software testing.

-      The user interaction layer: The success of the overall application depends on the user receiving a seamless experience. The main testing challenges include the simulation of network modes along with device level validation, the real time usability along with the back-end IoT environment.

Conclusion

The IoT ecosystem puts forward a plethora of testing challenges. These challenges can be thought of as opportunities to build new solutions. Some of these new solutions are Protocol Simulators, Data Recorders and Service Virtualization. The software industries need to empower their QA team with reliable IoT products and services. It is important for the QA teams to upskill themselves beyond the traditional functional testing and get ready for the integrated testing of such embedded software.

Thursday, 22 September 2016

Cloud Testing – Issues, Challenges, Needs and Practices



The concept of cloud computing is gaining a lot of popularity due to its ease of access, security and disaster recovery process amongst other things.

With cloud computing, companies can store, manage or process all their files and data using internet servers instead of local storage. Due to a lot of benefits offered by cloud computing, companies have also started using this technology to test performance of software and applications. Cloud testing includes testing of applications using cloud based resources (hardware, infrastructure and software) for a cohesive, end-to-end solution. 



Why Use Cloud Testing

Previously, testing of applications was done internally by the testing team of a company. But as more and more services are moving to the cloud, the testing process is becoming a lot better. There are numerous benefits of using cloud software testing compared to regular testing methods.
-  Lesser cost of testing: Due to the flexibility offered by the Cloud, the computing resources can be easily scaled up or down whenever required to provide a cost-effective website and application performance. Companies essentially have to pay for just what they use. Unlike the regular in-house testing process, businesses do not need to invest a lot of money to set up hardware and infrastructure for long term testing. They can go to the cloud provider directly, who takes care of the tools and licenses.

-  Test under different circumstances: Cloud infrastructure is built to handle different testing scenarios for optimum results. Companies can replicate virtual users in various locations across the globe to test how the application responds when used far and wide. Cloud services also support enterprise testing due to its scalability.

- Faster testing: Tests can be run virtually on-demand with scalable Cloud infrastructure. Companies can easily schedule testing times and resources are allocated accordingly. This eliminates long delays as is seen with hardware allocation and deployment procedures of in-house testing.

Challenges in Cloud Testing

Cloud testing can be an effective way to test applications and websites for businesses. But just like every other testing process, it has its own set of challenges.

-  One of the major cloud testing challenges faced by companies is the level of service provided by the vendor. Often after a company has moved a major part of its operations to the Cloud, it cannot be accessed when required. The Cloud service provider can thus cause delays in the testing process.

-   With cloud testing it can be difficult to isolate root causes for multiple problems encountered in load testing. Also, when trying to precisely measure effects of minor changes made to application code or its settings, cloud testing can make it difficult due to differences in internet traffic and bandwidth availability.

-   Sometimes during load testing, one particular IP address can generate a lot of traffic. Apparently, security teams identify the pattern to resemble a DoS attack and shut down the tests. In such cases, the traffic might even be real and lack of a proper testing strategy or schedule can cause undue delays.

Best Practices in Cloud Testing

1. Preparing for a two-stage process: The initial stage should be for internal testing, where minor performance issues can be sorted out under medium load. Companies should proceed to the second cloud testing stage only after preliminary internal tests, by increasing the load gradually for large-scale application testing.
2. Using multiple cloud providers: Using different cloud providers enable companies to test in more geographical locations and get more realistic results. Also, the testing can be more scalable. Network issues can also be sorted at the provider level in this case.

3. Keep your data secure: It is wise to encrypt data transferred between controllers and load generators. This secures both the data sent and received. Also, securing the load generators with their own firewalls prevents external threats.

In a world of Cloud Computing, it can be extremely beneficial for large companies to move their application testing to the cloud.

 With cloud testing best practices, a lot of bottlenecks can be avoided effeeffectively ma results

Monday, 19 September 2016

Cloud Testing – The Future of Software Testing



As Cloud based applications are going mainstream, the quality assurance and the testing teams need to revise and innovate their testing skills and processes in order to ensure a timely and effective application deployment and return on investment. The Cloud technology has already caused disruptive effects on the technical aspect of the business landscape. The most critical change exhibited by the Cloud is the amount of power and flexibility given to the  designers, content creators and the end users. Here, the traditional role of the developers, testers and end users have pushed their limits and are eventually becoming interchangeable in many respects. The multi-tenant architecture helps experience  the full potential of the Cloud. Here, each client shares computing resources provided by the service provider, but with separate data and code bases. The following can be considered as the main steps in the Life Cycle of Cloud Application Testing



-      Requirement Specifications: Specifications, workflow description and security grid reference created by the business analyst

-      Development: Significant Testing is done in this phase before the actual testing cycle starts. Testing performed – Field validations, Formula Validations, Workflow validation, Security validation and web service validation

-      Testing: System testing requires lesser time than usual. Testing performed: Integration Testing, Functional testing, Regression Testing and user acceptance testing.

The Cloud Testing approach: An effective cloud testing approach can be planned through the following steps:

  1. Verification of Field Properties
  2. Verification of formulas associated with fields
  3. Verification of triggers and workflows
  4. Verification of data security
  5. Verification of web services
Many companies are willing to be more adventurous regarding Cloud application testing. Factors which account for such an approach are:

-      Almost half the technology infrastructure for testing remains underutilized, consuming capital, power and space. Testing is a period activity and requires new environments to be set up for each project.

-      Cloud Software Testing can be seen as safe, as it does not involve sensitive corporate data and has minimal impact on the day to day business activities of an organization.

-      Applications are becoming more and more dynamic, complex, distributed and component based, creating multiple challenges for  the testing team. 

-      Cost reduction is one of the main factors that is encouraging the companies to move to the Cloud. Cloud Software Testing leverages the Cloud computing infrastructure, which reduces the unit cost of computing and increases effectiveness in testing.

Challenges of Cloud Testing

-      Security is one of the primary concerns in Cloud testing. User privacy protection, security standards on the Cloud, security of applications currently running in the Cloud and the security testing techniques are some of the main issues of Cloud testing.

-      The performance of a shared application is another big challenge. As the application is shared across many users it could lead to delays.
-      Certain configurations may not be supported by the Cloud service provider. This makes it difficult to emulate the customer environment settings.

-      Integration testing is another challenge in the testing process on the Cloud. Interactions between the network, database and servers pose testing challenges under potential risks such as crashes, network breakdown, etc.

Conclusion

Cloud Testing helps to resolve the challenges associated with traditional testing. It eliminates up-front investments in hardware infrastructure, their management and maintenance, software licensing and support costs. Cloud Testing is continually evolving with new concepts, challenges and opportunities. It is more cost effective with little impact on an organization's regular business activities.