| Posted on | 2 min Read

Technology and innovation are two sides of the same coin. Technology is the power that lets the mankind turn ideas into reality within no time. At pCloudy, the power of innovation has led us to stay aligned and be in pace with the dynamics of the mobile app industry. We cannot afford to let our customers stay deprived of any technological advancements happening in mobile app testing. Once again we are back with another new feature called QR code scanner and we are proud to announce that it is already launched on our platform.
 
Nowadays many mobile applications use QR code scanners for a product or user identification. The QR Code scanning feature in pCloudy enables users to test the QR code feature through mobile applications on multiple devices present in pCloudy. This feature ensures the smooth functioning of the QR code function present in the mobile application. To use this feature, all you need to do is upload the mobile app under test, a QR code image file, and with the help of some simple steps, you can smoothly perform testing of the QR code scanning function of your mobile application.
 
Test QR Code
The app will scan the injected QR code. You can scan multiple QR codes while testing your app on different mobile devices. So from now on you can easily perform QR code testing in pCloudy. This feature is supported on Android 5.0 devices and later versions. Supported QR Code file formats are .png,.jpeg and jpg.

 

Watch our video on QR code scanner feature:
 

| Posted on | 2 min Read

Android uses a centralized system for all logs and application programmers can also write custom log messages. The tooling to develop Android applications allows you to define filters for the log statements you are interested in. Log analysis is a phase of development and developers encounter it from time to time. Bug log helps in identifying the bugs in the Android application while in the development phase. Once the app is released into the market, the support engineers analyze the bug logs to resolve the issue. There are for different types of Logs available in the Android Eco-System – Application Logs, Android System Logs, Event Logs & Radio Logs.
 
The logging system consists of a kernel driver and kernel buffers for storing Android log messages, C, C++ and Java classes for making log entries and for accessing the log messages, a standalone program for viewing log messages (logcat) and the ability to view and filter the log messages from the host machine (via eclipse or ddms).
 
There are four different log buffers in the Linux kernel, which provide logging for different parts of the system. Access to the different buffers is via device nodes in the file system, in /dev/log. The four Android log buffers are main, events, radio and system. The main log is for the application, events is for system event information, radio is for phone related information and system is low level system messages and debugging.
 
flow chart
Each message in the log consists of a tag indicating the part of the system or application that the message came from, a timestamp (at what time this message came), the message log level (or priority of the event represented by the message) and the log message itself (detail description of error or exception or information etc).
 
What Each Android Log Type Contains:
 
1. Application log
use android.util.Log class methods to write messages of different priority into the log
Java classes declare their tag statically as a string, which they pass to the log method
The log method used indicates the message “severity” (or log level)
Messages can be filtered by tag or priority when the logs are processed by retrieval tools (logcat)
 
2. System log
Use the android.util.Slog class to write message with different priority with its associated messages
Many Android framework classes utilize the system log to keep their messages separate from (possibly noisy) application log messages
A formatted message is delivered through the C/C++ library down to the kernel driver, which stores the message in the appropriate buffer(system buffer)
 
3. Event log
Event logs messages are created using android.util.EventLog class, which create binary-formatted log messages.
Log entries consist of binary tag codes, followed by binary parameters.
The message tag codes are stored on the system at: /system/etc/event-log-tags.
Each message has the string for the log message, as well as codes indicating the values associated with (stored with) that entry.
 
4. Radio log
Used for radio and phone (modem) related information
Log entries consist of binary tags code and message for Network info
Logging system automatically routes messages with specific tags into the radio buffer
 
Device Logs on pCloudy Platform.
Device Logo

    Device Logs Filter Options


Device Log Filter Options

Log format on Android
A common log format in android:
 
tv_sectv_nsec priority pidtid tag messageLen Message
 
tag: log tag
tv_sec&tv_nsec: the timestamp of the log messages
pid: the process id of where log messages come from
tid: the thread id
Priority value is one of the following character values, ordered from lowest to highest priority:
 
V — Verbose (lowest priority)*
D — Debug*
I — Info*
W — Warning*
E — Error*
F — Fatal*
S — Silent (highest priority, on which nothing is ever printed)
 
Log-File locations
There are several directories where Android log (including those from crashes) stores and it are not standardized (i.e. some may be ROM-specific). I am putting some of common here.
/data/anr : Dalvik writes stack traces here on ANR, i.e. “Application Not Responding” aka “Force-Close”
/data/dontpanic : contains some crash logs including traces
/data/kernelpanics :- Stores “kernel panic” related logs
/data/tombstones :- may hold several tombstone_nn files (nn is a number from 0 to 10 and after 10 again repeat it)
 
‘Log’ command line tool
To capture Android log from the devices/emulator Below is the some command line tool. In real life project there are log capture application/tool used to capture the logs on user device and shared it back to Developer/maintainer for analysis .
adb logcat (shows all type logs for current android system
adb logcat -v threadtime (it will include date and time)
adb logcat -v threadtime> logfile.txt (Store logs in logfile.txt)
 
Useful filter patterns
You can use below filter in your adb command to filter logs. You can also use this filter to search your logs file(Android logs provided by user device).
adb logcat -f Save all logs into a file
adb logcat “*:E” Get all errors and fatals
adb logcat | grep -i “foo.example.” #get all logs related to “foo.example.*” tagname
adb logcat “application_or_tag_name:*” “*:S” Get all logs by application name
adb logcat -b events “gsm_service_state_change” “*:S” Get all GSM state changes
adb logcat -b radio Get all Radio events
 
Log Analysis
In this blog we got the basic understanding of the Android Log System. While analyzing the Android logs from your app you can divide it in two parts, debug Logs – file coming during development and testing phase and production Log – file coming directly from end user. The best way to do it is by using useful Filter Patterns and by using Some Tool like GoogleLogTool and SonyLogTool.

| Posted on | 2 min Read

We all understand the importance of software testing and how it transforms the goodwill of the business by enabling delivery of quality product to its clients in shorter delivery cycles. It becomes challenging to run the test cases manually by evaluating the quality of each line of code at every step of the continuous Delivery process. This is where Continuous testing in DevOps comes into picture.

Continuous testing in DevOps Pipeline

 
In traditional ways of testing the software used to pass through different development and QA phases which took more time until the final delivery of the product. According to a research by Gartner, Continuous testing in DevOps is aimed at providing early and quick detection of signs of risks related to the product release. DevOps Continuous Testing is an inevitable activity of the delivery process rather than just a mere stage in the delivery process. The main purpose is to inculcate quality into the CI/CD pipeline by utilizing the key benefits of continuous testing in DevOps.
 
Continuous Testing in DevOps
DevOps Continuous testing is a critical aspect responsible for seamless Continuous Delivery. It involves the usage of agile development methods and processes into the QA process further providing a productive testing process.
 
Here are a few points to understand the benefits of Continuous testing in DevOps at the deeper levels:
 
a. Provides Sustained Risk Analysis:
 
There has never been any code build that is error free and in a ready-to-release form. Even if the final release candidate has come without any glitches, passes all the tests, it has to be ‘prepared well’ for the final release and approved by the business leaders. Continuous Testing evaluates the code at a deeper level to estimate all the possible risks connected to it so that a corrective action could be taken at the right time without breaking the ‘continuous delivery’ chain.
 
b. Cuts down the feedback cycle:
 
The key benefit of continuous testing is that it evaluates the code layer by layer at each stage of delivery pipeline, allowing testers to understand the source of the problem. The actionable insights helps the QA team to act on time and avoid longer queues
 
c. Broader Test Coverage:
 
A broad range of tests can be applied throughout the testing process with the help of continuous testing tools for DevOps such as Selenium, etc. It covers both functional and non-functional testing types to increase test coverage by emulating testing like cross-browser testing, API testing, regression testing, integrated testing, unit testing and non-functional testing like security, reliability, scalability, usability and many more.
 
d. Delivering High Quality Product:
 
‘Test-early-test-often’ is the key mantra of continuous testing which is self explicable. In order to ensure delivery of high-quality product to the end user, there needs to be a process to continuously monitor the progress along the entire delivery pipeline. Achieving high product quality is the result of continuous testing that strives to finding and addressing risks effectively and by gaining feedback at the early phases of software development lifecycle.
 
e. Faster Software Delivery:
 
The whole point of introducing Continuous Testing in DevOps is to speed up the product delivery cycle. Following a multi-point testing at different stages allows the QA team to detect the glitches early and take quick corrective actions so that the final delivery is not impacted.
 
f. Easy Integration with the DevOps Process:
 
Continuous testing seamlessly integrated with the DevOps process right from the early stages of the development process rather than functioning just before the release. Continuous integration into the software pipeline enables quick fixes so that the development process can be aligned with the business requirements on time.

Tools for continuous testing in DevOps

 
For a seamless experience in the entire CI CD process, Continuous testing has to be supported by the best tools for continuous testing in DevOps. For performing smooth Continuous Testing, the Automation Framework has to be integrated with the CI tool, version control and various automated continuous testing DevOps tools to execute different types of testing at various stages of the process. For example, :
 

  • Using Selenium for performing functional testing
  • Load runner for performing load testing at its best,
  • Secure code analysis using Fortify and static code analysis using Sonar, etc.

 
Apart from these there are many other trusted DevOps Continuous testing tools available in the market for an efficient continuous testing, like JIRA, Jenkins, Bamboo, Docker, Appium, SoapUI, PagerDuty, CodeCluster etc. The concern is that not all the tools support comprehensive automation solution. Some organizations prefer to create self-made automation frameworks depending upon the version control used to enable complete automation of the CD pipeline.
 
Since Continuous testing is the most critical aspect to be covered by the business in order to achieve quality product release, it has to be backed by the choice of right, suitable tools and frameworks to achieve speedy and quality delivery.

Challenges in DevOps Continuous Testing and how to overcome them

 
Even after understanding the advantages of adopting continuous testing in the DevOps process, many organizations face the challenges of successful implementation of it. Establishment of an efficient automation framework is a daunting deal as it involves a huge investment, expertise and effort. Moreover, the organizations are not equipped with the scalable infrastructure to run tests continuously. Also, without a strong coordination among the product, development and testing team, this seems even tougher. Although there are challenges in successful adoption of Continuous testing, with a little sensibility one can overcome it. Here are a few of the key points to comply in order to overcome the challenges :
 

  • By proper team engagement, the cultural and communication barriers can be dealt with enabling the SDLC team to have better coordination, collaboration and understanding of the scenarios.
  • Reducing unnecessary and extensive testing plans, the focus should be on keeping it simple and logical. Instead, the energy could be diverted to more important test objects in order to create much better measurable results.
  • Automation would ease the successful implementation of continuous testing in DevOps. Well, complete automation isn’t achievable but more the process automation, easier it becomes to carry on the continuous testing.
  • Carry out testing at all stages of production and QA environment would continuously providing feedback to developers to improvise on the product quality.
  • Last but not the least, implementing artificial intelligence and other intelligence programs for problem solving and to think beyond automation at every stage of delivery would boost up the SDLC.

 
By now we all know how significant continuous testing in DevOps for any business. It essentially brings together all the stages of designing, developing and deploying the software. Merely providing a software product does not help but providing best products faster than the competitors would be the key differentiator of your business. If practiced earnestly, it provides consistent insights about the software development to ensure speedy delivery.
 

Want to test your Mobile App?

Join pCloudy Platform!

| Posted on | 2 min Read

In this competitive digital era, there has always been a constant demand for continuous digital improvement. Even if automation is a prominent keyword nowadays, a recent report says that only 30% of the organizations have adopted automation testing. Although the organizations invest a considerable amount of time and money in transforming their development processes, they fail to reap the benefits of the shift in the right direction by choosing only a few aspects of testing.
 
Change is inevitable in the software development lifecycle and in order to go hand in hand with the ever-changing dynamics and produce high-quality software, it is important to rely on implementing an effective Continuous testing Strategy. The development teams have to be focused on optimizing the delivery cycles and provide uninterrupted business experience.

What is continuous testing?

 
Continuous testing is a type of testing in which involves evaluating the quality of software often at multiple stages of the continuous delivery process for early detection of errors ultimately providing quality software and business continuity. It involves testing in multiple developments and QA phases to achieve continuous quality and improvement. Continuous testing plays a key role in DevOps using automation tools that help developers in getting quick feedback on the defects and make changes accordingly.
 
Continuous Testing Strategy

Challenges to an effective continuous testing

 
Organizations want to frequent deployments but the majority are unable to even reduce their software development cycles because of a lack of effective continuous testing delivery strategy. The success comes when there happens to be a mix of both manual and automated testing consistently throughout the delivery process. It becomes really important to automate every step to move fast in aspects like test design, test orchestration, execution, etc.
 
Test automation strategy is the backbone of the final product that a business delivers. It should be strong and flexible enough to bear the impact of any change and every variable of the testing process. Let’s discuss how optimizing continuous delivery testing strategy helps improving the testing process and to increase the software quality:

1. Thorough Test Automation Plan

 
Research says that the majority of the organizations mostly focus on specific forms of testing. For example, few businesses focus on API integration testing and UI testing and a few focus on both individually. But what they lack is a detail oriented automated continuous integration testing strategy that involves all of the above types of testing. Choosing a specific type of testing is right in some business scenarios but a business should always be equipped with a plan that can accommodate any type of testing which can be used whenever the need arises. The real comparison of continuous testing vs test automation will always persist considering the scale and requirements of the business.

2. Initial Trial and Testing

 
Introducing unreliable and lengthy test cases in the process leads to a huge wastage of time and effort putting the QA teams to get indulged in an ineffectual analysis of each code commit. Instead, the QA teams can do a bit of testing by adding nominal test suites in order to avoid big risks and check its impact along the way. Gradually adding stable test cases. It is important to have more stable test cases than counting how many were executed especially in DevOps.

3. Choosing the best test automation tool

 
Building a comprehensive continuous testing strategy is a mandate but choosing the right test automation tool is of critical importance for achieving complete stability. It is insignificant to even think of a failure caused merely because the test automation tool couldn’t perform on the assigned UI control on the application being tested. The acceptable reason for a failed test could be either bug or design change but not because of an automation tool. A good automation tool would always add value to the organization by activating continuous release and deployment, by reducing time and maintenance costs, by increasing the reusability of the code and by providing a higher return on investment.

4. Modularizing tests

 
In order to handle complex integrated applications, introducing modular testing is the best way to breakdown application functionality. Breaking down the app functionality into modules provides a road map and makes it easier to rearrange the functionality into testing representing different workflows. Amorphous tests can be easily redressed by introducing modular testing and decoupling test data, test flow and element locator mappings.

5. Automated Screenshots

 
When analyzing the test results to find out the causes of test failure, screenshots of the test execution is the best reference in order to dig deeper into the cause of the problem. A reliable automation tool automatically generates screenshots of all important interactions happening during the test run. Screenshot recording is not supported by all the automation tools; In that case, one should reconsider selecting another test automation solution to reap the maximum benefit of this feature.

6. Measuring Test Automation ROI

 
Major trends like Continuous testing, automation and DevOps and demand for faster continuous delivery have raised the standards for quality software so high that everyone is trying hard to stay competitive by optimizing their continuous testing and development strategy, that too while maintaining low costs. In this situation, balancing the test execution costs cannot be ignored. At some point in time, test coverage needs to be scaled up, teams have to opt for cloud usage which is expensive and acts as a major cost burden. The best idea would be to separate high and low level test requirements i.e performing more advanced integration and compatibility tests on cloud and executing the low level tests on-premise to maintain cost balance and getting the best automation ROI.

7. Track and Monitor

 
When the development and operations teams work together, they face many operational challenges. Developers are focused on pushing a new update and testers- on maintaining the reliability of the service delivery. Connecting these two points is challenging and these challenges are overcome by introducing continuous testing and DevOps. In the long run, a business should always invest in a system monitoring tool that will help to detect the causes of the gap and back outs more efficiently.

8. Outsource

 
Outsourcing the QA process extends an additional support system, giving an extra edge in delivering quality service. The veto in the world of continuous testing is that it gives and extra nudge by providing an exposure to the more specialized areas of testing like impact analysis, performance and security testing etc. It acts as a source of energy given to a focused area of the development life cycle. As a result, it becomes a win-win situation for both developers and testers.
 
Continuous Testing and Delivery is not a luxury but a necessity in today’s era. A well designed continuous testing strategy is the foundation of continuous testing and quality service delivery. Although the journey is full of challenges if planned meticulously, the businesses would be able to streamline and reap the maximum benefits of test automation and continuous testing.
 

Want to test your Mobile App?

Join pCloudy Platform!

| Posted on | 2 min Read

Some testing teams set up their own staging environment to test internal servers but as there is no public access which makes it difficult to perform local testing on remote devices. So how would you test your app which can be accessed through your internal network? We launched a feature called Wildnet, that enables you to test private or internal servers using pCloudy. You can test your privately hosted apps on any Android or iOS devices and implement continuous testing to ensure reduced release cycle.
 
Some times testers want to test their internal servers to protecting unsecured data and credentials, hide new features, and general security. But if an app hasn’t been made public, it should not delay testing across environments. When the Wildnet feature is enabled, a secure connection is created between your machine and pCloudy remote devices so you can perform testing even if the devices are connected remotely.

Let’s see how you can test local or private servers using Wildnet.

Prerequisite:
 
User should be registered on pCloudy platform
Executables can be downloaded from below links
 
Linux :
https://content.pcloudy.com/executables/utilities/WildNet_Executables/pCloudyWildNetLinux_v1
 
Windows :
https://content.pcloudy.com/executables/utilities/WildNet_Executables/pCloudyWildNetWindows_v1.exe
 
OSX :
https://content.pcloudy.com/executables/utilities/WildNet_Executables/pCloudyWildNetMac_v1
 
Manual Process to enable Wildnet
 
1. Run the below mentioned executable command on the terminal:
 
For Windows:
.\pCloudyWildNetWindows -i Emailadress –k accesskey -u URL
 
For Mac:
./pCloudyWildNetOSX -i Emailadress –k accesskey -u URL
 
For Linux
./pCloudyWildNetLinux -i Emailadress –k accesskey -u URL
 
Example:
./Win-Wildnet -i sample@test.com -k pass123 -u https://app.pcloudy.com
 
Note: Please use below mentioned URL for-
 
Public cloud(India): https://device.pcloudy.com
 
Public cloud(US) : https://us.pcloudy.com
 
Private cloud: https://private-cloud.pcloudy.com
 
Wildnet Example

Note:

  • This feature will work on all platforms.
  • Once “Wildnet” is enabled, the user can connect more than one device.
  • User will get authenticated as shown in the below screenshot
     
    Test Local Wildnet enabled

    This is how users can initiate Wildnet.
    2. Go to the Device page in pCloudy platform, connect the device and click on Enable Wildnet as shown in the screenshot:
     
    Device page

    Open any local URL that you wish to test and enjoy local testing on pCloudy platform.
     
    Local testing

    3. To disable the service simply run ctrl+c to exit
     
    Wildnet disable

    Activating Wildnet for Appium Automation
     
    1. Run the below mentioned executable command on the terminal:
    For Windows:
    .\pCloudyWildNetWindows -i Emailadress –k accesskey -u URL
     
    For Mac:
    ./pCloudyWildNetOSX -i Emailadress –k accesskey -u URL
     
    For Linux
    ./pCloudyWildNetLinux -i Emailadress –k accesskey -u URL
     
    Example:
    ./Win-Wildnet -i sample@test.com -k pass123 -u https://app.pcloudy.com
     
    Note: Please use below mentioned URL for
     
    Public cloud(India): https://device.pcloudy.com
     
    Public cloud(US): https://us.pcloudy.com
     
    Private cloud: https://private-cloud.pcloudy.com
     
    Wildnet Example

    Note:

  • This feature will work on all platforms.
  • Once “Wildnet” is enabled ,you can connect more than one device.
  • User will get authenticated as shown in the below screenshot
     

    Test Local Wildnet enabled

    2. Once the user is successfully authenticated, they need to add the capability mentioned below, in the Appium automation script.
     
    capabilities.setCapability( “pCloudy_WildNet”, true);
     
    3. Once the capability is added, users can perform local testing on pCloudy devices and verify the execution in live view page.
     
    The most important advantage of Wildnet is that you can be confident about the application as you can rectify all the defects prior to delivery. Try it yourself. Use Wildnet to find more bugs and defects in your internal server before deploying it to production.

    | Posted on | 2 min Read

    As the world battles with turbulent, uncertain times, most of the workforce across the globe is working remotely. Organizations have acknowledged the importance of remote working as it helps in maintaining business continuity. But in some scenarios, it is difficult to maintain business continuity or distribute resources within the teams while the team is working remotely.
     
    For instance, if you have some physical device infrastructure to test your app on multiple mobile devices, how would you do it? How would you share the devices with other testers and developers in your team working from different locations? Most importantly, how will you make sure that the app works smoothly on all the popular devices? We will address these issues in this blog, so buckle up for some interesting insights into the remote testing advantages that can ensure a better app experience for your users.

    1. Abate device fragmentation and ensure better app compatibility with remote testing

     
    Device fragmentation is any testers Achilles heel as it limits their potential of extensive testing. Testing from a physical device lab at this global lockdown situation is not feasible, and testing on a few devices won’t yield good results. But this issue can be rectified by testing on a device cloud. In pCloudy, users can test on multiple devices based on the popularity of devices in a particular region and its penetration to get the optimum device coverage.
     
    Both manual and automation testing can be performed with unlimited parallel test runs remotely on hundreds of real devices. This is also convenient for globally distributed teams, as the users won’t have to wait for the devices to be available for testing.

    2. Deliver Better Quality App with Rapid Automation

     
    Enterprises can ensure better quality apps without missing out on any deliveries by leveraging remote devices for automation testing. pCloudy helps in speeding up automation testing with codeless scripting and test orchestration using integrated tools like Jenkins. Capability configurator is a feature in pCloudy that generates the desired capability based on a set of filters, which saves time and effort while performing test automation. Integration with popular automation and collaboration tools like Appium, Espresso, Jira, etc., makes it convenient for users to perform automated testing on remote devices.
     
    Mobile device lab

    3. Better collaboration and continuous feedback

     
    In pCloudy, users can manage teams and distribute credits among themselves. The user management feature allows managers to become the system administrator and create teams to allocate the credits to the members according to the task assigned. This helps in user and task as the hierarchy is maintained to distribute workload systematically.
     
    Once the tests are complete, detailed test reports are generated automatically, which can be easily shared across the team. The progressive reports also show the tests failed, passed, and those with errors. This helps in focusing only on the tests that failed and doing a root cause analysis to rectify the issues. Continuous access to a range of devices available for remote testing will provide stability to your CI/CD pipeline.

    4. Assured data privacy and security

     
    Enterprise-grade security gives assurance to our users that their data is safe on the cloud platform. Our data centers comply with internationally recognized security standards like ISO27001, SOC2, and SSAE-16. Keeping your security issues in concern, we have another useful feature called Wildnet. This feature enables you to test your internal sites or apps on your local network, keeping all your data and information secure.

    5. Advanced features to improve manual testing

     
    Take advantage of next-gen features like Certifaya, an AI-powered autonomous testing bot to save time and effort. FollowMe is another feature that enables the user to run a test on multiple devices in parallel. This will save your resources while reducing the testing time by multifold. Apart from this, there are many features in pCloudy, like taking screenshots, recording the test video, cross-browser testing, etc. that will make manual app testing a piece of cake.

    In a Nutshell

     
    Remote testing is convenient, and it will help you save big bucks while you deliver a better quality app in less time. Continuous access to numerous devices helps in accelerating automation testing, as the app can be tested on multiple devices in parallel. All these advantages of remote testing make it the optimum choice for enterprises.

    | Posted on | 2 min Read

    Remote working is going to be a new normal and remote access tools and platforms will play a key role in maintaining productivity. Working from home has many advantages both for enterprises and teams. There are many tools that help teams to collaborate and share all the information conveniently over the net. pCloudy is one such tool that gives you remote access to hundreds of real devices to test your app.
     
    So let’s look at the 10 ways how pCloudy could help in maintaining business continuity while working remotely.
     
    1. Remote access to devices: Test your apps from home by accessing remote devices on pCloudy. You don’t have to worry about touching or managing the devices.
     
    Remote access to devices
     
    2. Device access to geographically distributed teams: Since testing professionals are working remotely, the problem is sharing the limited number of devices for app testing among the team members. With pCloudy offering a range of devices over cloud, members across different locations can access hundreds of real devices on the cloud for their app testing needs.
     
    Device access to geographically distributed teams
    3. All in one: Manual and automation testing can be performed remotely on real devices. The platform is well suited for continuous testing and optimizes your DevOps process.
     
    4. Autonomous testing bot: use our AI power autonomous testing bot to minimize the effort and time spent on testing.
     
    Autonomous testing bot
    5. Team management: Manage platform access to the team members and share detailed app test reports.
     
    Team management
    6. Parallel testing: Run automation tests in parallel on multiple devices to increase the testing efficiency.
     


    7. Latest devices: No need to wait for the delayed shipments of the new devices as all the latest devices are available on pCloudy.
     
    8. Fully integrated: pCloudy is integrated with most of the popular tools and frameworks used for task management, version control, test automation, etc.
     
    Fully integrated
    9. Device tunnel: Developers can use features like Device tunnel to access devices in their Dev environments like Android Studio or Xcode
     
    Device tunnel
    10. Quality support: Achieve quality@speed in mobile app testing while working from home. Our technical support team will be available to help you 24/7.
     
    11. Device management: Hassle-free app testing for our users and our cloud infra team will take care of the continuous availability and maintenance of the devices.
     
    It has been speculated that around 30% of the service sector workforce across the globe will be working from home by 2030. You can stay ahead of others in this initiative and adopt flexible work preferences. Contact us if you need more information on how pCloudy could help in enhancing productivity while working from home.
     

    | Posted on | 2 min Read

    Industry leaders consider CI/CD to be an essential part of the app development cycle as enterprises are keen to reduce the time to market. Continuous integration and continuous delivery help in improving and enhancing the quality of the product while reducing the cost of the project. This blog will help you understand the of a functioning CI/CD pipeline, its challenges, and its benefits. Before we get into the details, let’s have a look at the basic terminology.
     

  • Continuous Integration
  • Continuous integration (CI) is a software development practice where developers frequently make changes in the code and add it to the central repository after which automated tests are run. CI is the integration stage of the software release process which depends on automation and constant integration. The main goal is to find the bugs and resolve the issue quickly to improve the software quality and reduce the time to market.
     
    In continuous integration, developers focus on smaller commits several times a day. Developers pull the code from the repository before pushing it to the build server where the build server runs various tests to verify the code commit.
     

  • Continuous Delivery
  • Continuous delivery is a software development practice that ensures a faster and stable release of the changes in the code. In this, the changes are automatically built, tested, and prepared for production release. The code changes are deployed to a testing environment or a production environment after the build stage is completed. When continuous delivery is implemented, developers always have a deployment-ready build artifact that has passed through a standard test process. In continuous development, the code revisions to a production environment automatically which allows for a continuous feedback loop early in the development cycle.
     

  • Continuous Deployment
  • Continuous deployment is a bit similar to continuous delivery but is a step further towards process automation. The change that passes through all the production stages is released to the client directly without the need for any human intervention. Continuous deployment accelerates the feedback loop as only a failed test will stop the change from getting deployed to production.
    Continuous Deployment

  • Continuous Testing
  • It is the practice of executing automated tests throughout the software development life cycle. Instead of the old testing method where testing occurs at the end of the software development cycle, CT occurs at multiple stages, including development, integration, pre-release, and in production. It is done to ensures that bugs are caught and fixed at the earlier stages in the development process, saving a significant amount of time and money.

    continuous testing

    While building an application that will be deployed on the live servers there will be a team of developers responsible to write the code. The developers commit the code into a version control system like Git, from where it goes to the build phase. The built is then sent to the next phase with a proper version tag.

    For instance, you have a code that needs to be compiled before execution. When the code enters the built phase, all the features of the code are merged from various repositories and compiled using a compiler.
     
    The next phase is the testing phase where various types of testing are performed. Sanity testing and unit testing are the most crucial part of this process as individual units of the built are tested to check if they meet the requirements.
     
    The builds are moved to the deployment phase after passing the test and then pushed into a test server. Here developers simulate the product in a production-like environment to examine the features.
    What is a CI/CD Pipeline?
     
    Before the build features are deployed to production, the automation test phase will perform the final tests to qualify the features. continuous testing is implemented in this phase to ensure there are no bugs remaining.
     
    In case there is an error at any stage of the CI/CD pipeline, feedback will be sent to the development team so that issues are addressed immediately. Thereafter, code changes will go through the production pipeline once again.
     
    In the final phase, the code is moved to the production server after code passes all the tests. The constant feedback loop helps make the CI/CD pipeline a closed process where builds are continuously committed, tested, and deployed to production.

    Challenges in CI/CD Pipeline

    Limited environments

    During the CI/CD pipeline implementation, a limited number of shared test environments increases the risks of a bottleneck. You would need to reserve an environment to avoid multiple CI/CD pipelines running side by side from attempting to deploy and test in the same environment. One of the leading causes of deployment failures is misconfigured environments modified by previous teams or test runs.
     
    Security and Ownership

    Sometimes it’s difficult to know who needs to fix the pipeline when the stages fail as delivery pipelines span multiple teams in an organization. An owner has to be assigned at every stage of the CI/CD pipeline who will be responsible to fix the issues and ensuring that the delivery runs smoothly. The owner will also contribute to the feedback-driven improvement of the pipeline.
     
    The orchestration tool used by the team should have an effective security model that could provide better visibility into the state of the entire CI/CD pipeline. For instance, to identify the causes of test failure, the team would have to examine the result of the test phase. But they should not be given permission to modify or disable the configuration of that test step.
     
    Managing multiple custom CI/CD pipelines

    There will be multiple CI/CD pipelines in large organizations as they have diverse portfolios spanning different departments, technology platforms, and customers. It would be difficult to analyze metrics like throughput, successful execution, and cycle time if every pipeline ends at different stages in the delivery process. It’s easier to manage a large set of CI/CD pipelines if each one is based on a standard template. This will help in meaningful comparative reporting and it will provide useful feedback to improve other pipelines.
     
    Massive applications

    Large apps with several components that need to be compiled, tested and deployed are tough to update incrementally which leads to long testing and deployment cycles. It’s harder to perform quality control and root cause analysis as multiple teams commit several changes at the same time. It’s difficult to create a standardized delivery pipeline as the release process needs to differ slightly. Teams often initiate a workstream to incrementally break out components of the app into different modules so that they can be built and deployed separately, allowing for faster feedback cycles with smaller sets of code change.

    Why CI/CD matters

    CI/CD provides several benefits for your software development team including improving developer productivity, automating the process, improving code quality, and delivering updates to your customers faster. Let’s have a look at some more benefits of implementing a CI/CD pipeline.
     
    Improve Developer Productivity

    CI/CD practices enhance your team’s productivity by freeing developers from manual tasks, working on complex dependencies, and returning focus to delivering new features. Instead of integrating their code with other parts of the business and spending time on how to deploy this code to a platform, developers can focus on coding logic that delivers the features you need.
     
    Automated Software Release Process

    Continuous delivery provides a method for your team to check-in code that is automatically built, tested, and prepared for release to production so that your software delivery is efficient, resilient, rapid, and secure.
     
    Improve Code Quality

    CD can help you discover and address bugs early in the delivery process before they grow into larger problems later. Your team can easily perform additional types of code tests because the entire process has been automated. With the discipline of more testing more frequently, teams can iterate faster with immediate feedback on the impact of changes. This enables teams to drive quality code with a high assurance of stability and security. Developers will know through immediate feedback whether the new code works and whether any breaking changes or bugs were introduced. Mistakes caught early on in the development process are the easiest to fix.
     
    Deliver Updates Faster

    CD helps your team deliver updates to customers quickly and frequently. When CI/CD is implemented, the velocity of the entire team, including the release of features and bug fixes, is increased. Enterprises can respond faster to market changes, security challenges, customer needs, and cost pressures. For example, if a new security feature is required, your team can implement CI/CD with automated testing to introduce the fix quickly and reliably to production systems with high confidence. What used to take weeks and months can now be done in days or even hours.

    In a Nutshell

    Continuous integration and continuous delivery is an ideal solution for an organization’s app development teams. Developers just need to push the code to a repository. The code will be integrated, tested, deployed, tested again, merged with infrastructure, go through security and quality reviews, and be ready to deploy with extremely high confidence. A CI/CD pipeline helps improve code quality and software updates are delivered quickly.

    Want to test your Mobile App?

    Join pCloudy Platform!

    | Posted on | 2 min Read

    Automation testing forms the core of any CI/CD pipeline and enterprises are keen to practice test automation to enhance the efficiency of the development process. Test automation saves resources and reduces the cost of any project in the long run. But there are some important points to keep in mind while testing to avoid automation failure. Let’s have a look at these salient points.

    Leverage Parallel Execution

    Once you are done automating the test cases, the challenge will be the complex test suites taking a long time to get executed. It affects the quality of the test queue in the test automation framework or IDE. This leads to queue timeout issues and test cases being halted abruptly due to the sequential execution of the test cases.
     
    Parallel execution in different test environments is preferred over sequential execution as it saves a lot of time. Although in automated testing, unintended code interactions could happen. This is why you need a thorough reporting mechanism to debug the causes of test failure.
     
    Leverage Parallel Execution

    Pick The Right Tools

    Choosing the right tool for test automation is critical to the success of automation testing. There has to be a set of clear requirements/parameters on the basis of which the tools have to be selected. Some important points that are to be kept in mind while selecting the tool are:
     

  • The team should be clear about the test tool requirements.
  • The testing requirements of the application under test (AUT) should be analyzed thoroughly.
  • The team’s skill set should be accessed accurately.
  • The cost-benefit analysis should be performed to calculate the return on investment.
  • Tool vendor and capability should be evaluated as technical support might be required while using the tools.
  •  
    One tool might not be enough to meet any organization’s automation needs. Also, test automation engineers have to be a part of the tool evaluation process so that they can help in selecting the right set of tools. For example, you can use Appium for test automation but you need pCloudy to perform automation testing on multiple real devices in parallel.

    Analyze The Test Reports

    Test reports provide insights into the underlying issues that are to be resolved. A detailed test report gives an idea of the efficiency of the test automation and the automation team can analyze the report to look for the scope of improvement. While selecting an automation tool you need to make sure that the tool generates test reports to be analyzed by the test automation engineer. There will always be some tests that will fail to execute and it is necessary to analyze the test report to get an understanding of the scenario.

    Test Automation Metrics

    Test automation metrics will help you gauge the quality of the tests performed based on some essential parameters like test duration, unit test coverage, path coverage, number of defects found, percentage of broken builds, etc. The test metrics will give you a clear picture of how well the code is tested. In an agile process, there are frequent iterations to the builds and it becomes important to track the quality of each build. With test automation metrics you can figure out what is the percentage of your tests that passed and what was the reason behind the failed tests.

    Optimum Device Coverage

    Test automation is effective when the tests are executed on multiple devices in parallel. Device coverage is the most prevalent challenge as we have witnessed growing device fragmentation across the world. To ensure the smooth functioning of mobile apps on all the devices, you need to perform automation testing on hundreds of device-OS combinations.
     
    Test automation should be designed to make the app compatible with most of the popular devices. The frequent release of new versions of OS from both Android and iOS is a major factor that drives device fragmentation. The only way to overcome this challenge is by testing the app on a cloud-based testing platform. In pCloudy, you will get the benefit of testing the app on more than 5000 device browser combinations in parallel ensuring optimum device coverage.

    Summing It Up

    Test automation has many benefits like better test coverage, faster feedback, and accelerated results which reduces the time to market of any application. Using the practices mentioned above you can ensure coherent test automation and increased productivity. Apart from these points, there are many other things you can do like writing original code and not copying it as the code taken from other sources might not work in your test environment. But you will always find new roadblocks which you will have to deal with spontaneously.

    Intelligent Digital Mesh is the entwining of people, devices, content, and services enabled by digital models, business platforms and a rich, intelligent set of services to support digital business. We have witnessed the implementation of AI in every technology to leverage the benefits of autonomous systems. Enterprises are now focusing on using AI with technologies like blockchain and immersive technology which will create new categories of apps. In this type of environment, attaining optimum device coverage will be essential to ensure quality services. Now let’s understand the fundamentals of the intelligent digital mesh.

    Intelligent

    In the near future, most of the mobile applications and services will use artificial intelligence or machine learning at some level. AI will be the inconspicuous force of most of the popular app categories while creating some new ones. Intelligent apps also create a new intelligent layer between people and systems as seen in enterprise advisors and virtual user assistants. Augmented analytics is also gaining ground and helping enterprises in enhancing business intelligence and data analytics using ML and NLP. Another use of AI and ML is in intelligent things like smart vacuums, drones, autonomous farming vehicles. Intelligent devices are getting smarter to serve better and reduce human dependency to a minimum.
     
    Top 10 Strategic Technology Trends for 2019

    Source: Gartner.com

    Digital

    When we talk about digital, we mean digital twins, cloud to the edge, conversational platforms, and Immersive Experience. A digital twin is a digital representation of real-world objects. It offers information on the state of the counterparts, improves operations and adds value to the operations by responding to the changes. In the near future, all the aspects of human life and the real world will be interconnected with their digital representation capable of advance simulation, analysis, and operation. This combined with immersive technologies like AR, VR, and MR will take extended reality to a new level.

    Mesh

    Mesh is the connection between devices, people, businesses, services, and content to build a digital ecosystem that yields high-quality results. Here mesh refers to technologies like Blockchain, Event-driven, and continuous adaptive risk and trust (CARTA). Enterprises are keen to find new ways to sense the new business events to get the most out of it. A business event can be a change in the status of the deal like finalizing a deal. Using new technologies like AI, it will be easier to detect a business event and analyze it in greater detail.
     
    Security is one of the most important and ever-evolving processes in digital businesses. There is a need to think beyond infrastructure and parameter protection. Continuous adaptive risk and trust assessment is a people-centric security approach that allows for real-time risk and trust-based decision making. New methodologies like DevSecOps and adaptive honeypots should be implemented to strengthen the security of digital businesses.

    Automation Testing For Intelligent Apps

    Intelligent apps are at the core of the intelligent digital mesh. Nowadays most of the apps use artificial intelligence, machine learning or predictive analysis to make suggestions to the customers. The apps use real-time and historical data from user interactions and other sources to predict the needs of their users.
     
    To ensure the quality of apps it is important to test the apps using futuristic tools. Manual testing is just enough and even automation needs to be scalable to get better results. Testing the app on a cloud-based app testing platform is the best choice as you can use as many devices as you want to test your app. Also, parallel testing increases app testing efficiency by multifold.
     
    pCloudy’s AI-powered autonomous testing bot steals the show when it comes to testing intelligent apps. The bot tests the app on real devices with just a single click and generates a detailed report based on the test result.

    Conclusion

    Mobile devices, by and large, are the focal point of most of the innovations that are happening around the intelligent digital mesh. Whether it is Ai driven development, autonomous things or immersive experience, mobile apps still used as a foundation to provide the technology to the masses. But the growing complexities of intelligent apps makes it crucial to implement new methods of app testing. A cloud-based app testing platform like pCloudy is suitable to ensure quality at speed in mobile app testing. The freedom of accessing hundreds of real devices from anywhere at any time and perform manual or automation testing using futuristic features is the correct way to test intelligent apps.

    Accelerate your app development with pCloudy today!