Regression Testing for Mobile Applications – Unveiling the ways for Successful Mobile Automation Testing

The term ‘regression’ sounds very tedious, terrifying and too technical, but it’s really not.
Literally, “regression” means “going back” to the previous state of your application just to ensure that any new change, bug fix, patch or version did not disturb the existing code of the application and the app runs as expected.

Browse back to learn our experts have said about Regression Testing

What is different in Mobile Regression Testing?

There is no big difference in regression testing of a mobile application to that of the web application.

This is because no matter what the platform is, the application’s functionality is not going to change.

Example: If the ‘LIKE button in Facebook’ has to work on the web platform, then it should work the same way on the mobile platform.

This means, that the functional aspects of the application don’t make difference in mobile regression to that of web regression testing.

Also, the test cases used for web app regression testing can be used for mobile regression testing.

But, Wait!!!

Then why Mobile Regression Testing services is such a chaos?

Looking for something cost-effective?

Expecting more from less? Check out Indium’s

Regression Testing Services

There are other aspects which should be considered while executing regression test plan for a mobile application.

They are,

  • How does the application perform in mobile interruptions?
  • Is the mobile application properly getting installed on every version of mobile devices?
  • Is the usability aspect of the mobile application up to user satisfaction?
  • How compatible is your application across devices and platforms?
  • Is the layout and navigation of the application user-friendly?
  • How consistent is the application in portrait and landscape view?

These are only few examples. This list will grow bigger based on the number of devices, platforms, OSs, country, currency involved, etc.

But these issues become traumatic when neglected.

Watch Our iSAFE Automation Framework Demo

https://youtu.be/-Il1C_LR8P0

Things to Consider for Adopting a Mobile Regression Testing Plan

In a strange way, mobile application testing is dualistic. There is no middle ground. The growing use of smartphones, tablets, and other mobile devices have accelerated mobile applications and mobile application testing indefinitely.

Looking for a Partner to Handle your Mobile QA Needs?

Like any desktop or web application testing, mobile application testing hones in on the quality and performance of the end product.

Mobile Regression Testing Puzzle can be solved easily when the below aspects are followed.

  1. Select Mobile phones with features that fits best for your customer’s own usage.
  2. Emulation & Simulation helps with fast development of test cases and test automation
  3. Testing mobile app on cloud reduces the delivery time and the cost suffered on purchasing real devices.

Is Your Application Secure? We’re here to help. Talk to our experts Now

Inquire Now

Outsource Mobile Testing Now to Avoid Mobile Testing Overheads

  1. The mobile applications should be validated for Network Connectivity under full network, intermittent network, and no network.
  2. Both Manual and regression test automation are required based on the number of test cases, scenarios, and iterations.
  3. Perform load and stress testing of your application
  4. Perform security testing on the app and check for other vulnerabilities

Candy Crush – The Puzzle Game Phenomenon

This blog aims to divulge key insights on Candy Crush that includes secret ingredients, success factors and demography insights with interesting facts. Later it unveils the role of Software Testing Services/QA in puzzle games.

A Brief Intro

It all started back in 2012 when ‘King Digital Entertainment ‘ a game development company released their freemium match-three puzzle game, a game which to this day is still played by millions around the world. ‘Candy Crush’ was originally launched only on Web Facebook platform but it wasn’t until when it was developed for Mobile platforms that it gained immense popularity by both Core as well as casual gamers.

Why Candy Crush so popular?

The game is so popular it had reached the No.1 spot on Apple’s Appstore, Google’s Play store and Facebook at the same time. (Source: https://www.feedough.com)

  1. The Gameplay – At its core is a very simple game wherein a player has match 3 or more color candies by swapping them around to earn points and progress. It can also be played with one hand which would appeal to most casual gamers.
  2. Graphics – The game has colorful and neatly designed graphics which are pleasing to the eye. Various different animations and voice overs are present for high combo scores.
  3. Variety – If the game just was just about matching 3 puzzles, users would have gotten bored of it pretty soon but each and every level of the game is unique and has different goals to achieve to keep the player interested.
  4. Freemium Model – This has to be one of the main reasons why users play this game to this day even when it was launched back in 2012. ‘Freemium’ basically means the game is free to play but if required in-app purchases can be made. The game is also completely ad-free which is what usually a casual gamer wants.
  5. Social Aspect – The game was first launched for Facebook and later was branched out to mobile platforms. These days social networking in games is very important to players and the game has nicely implemented ways to send gifts, lives etc. through Facebook and most importantly friend’s scores and progress.

Interesting Facts

  • The game rakes in a whopping $850,000 per day and currently one of the highest grossing games.
  • Active monthly Facebook users are 132.9 Million and ‘King’s Digital’ the game’s developer is now Facebook’s top game maker.
  • The game is played on all 7 continents even in Antarctica.
  • According to AppData, the game is played more than 600 million times per day.
  • It has been downloaded to over 500 million mobile devices.

Read more about Software Testing Services

Demographics and Statistics

As the above study suggests, a majority of ‘Candy Crush’ players are women aged between 21-35 and mostly fall into the casual gamer category. It’s important to note that the game is played by the wide range of demographic simply for the reason that Candy Crush as a game is easy to pick up and all you need is a mobile phone and some spare time.

What are the common Misconceptions of Mobile Game Compatibility Testing

Download free Whitepaper

Here are few interesting statistics about ‘Candy Crush’ and its developer ‘Kings Digital’ (Source: www.theguardian.com).

  • A recent study suggests that people who play on mobile phones spend more than the PC gamers as of 2016. The majority of the money is coming from mobile gamers who play games such as Candy Crush and Clash of Clans. “Spending on mobile games, mostly for in-game purchases, will account for 27% of the $99.6 billion global video gaming market in 2016, market tracker Newzoo reported”.
  • Core players of the game are mostly women aged 25+, they spend around $25/month which is not a lot but the revenue is made by the sheer amount of players.
  • Candy Crush is now responsible for nearly three-quarters of King’s revenue and analysts estimate that the company’s annual turnover is around £300m. Gaming giant ‘Activision Blizzard’ acquired ‘King’s Digital’ for $5.9 billion after it went public.

Will a Hardcore gamer still play this game?

This is an interesting topic and I consider myself to be a core gamer. I would probably launch this game daily more than I would launch COD or CS-GO. Here are few reasons why I think even a core gamer would still enjoy playing Candy Crush.

  • It’s a freemium game, which also means I can play the entire game without having to spend any money. Most mobile games have certain levels that are so tough that eventually, you have to pay to clear it. But in Candy Crush, if you keep playing that level long enough you will end up finishing it.
  • The game is easy to learn but not a walk in the park gameplay wise, some levels require a lot of concentration to come up with combos to achieve certain requirements of that level.
  • The graphics, music, and animations have somewhat of a calming effect on your mind and is a great stress reliever.
  • I mostly find myself playing this game during a commute or during my free time. There are no time constraints since I can play the game for 2 minutes or 2 hours and can stop at any time.
  • The game as of now is completely ad-free which is one of the reasons why I still play it. A constant bombardment of ads which is present in most freemium games will deter many players.
  • The game never really gets repetitive since there are lots of add-on and mini-games within a game to keep ourselves occupied in case we get bored with the main game.
  • As of now, Candy Crush shows no signs of slowing down even though its players have reduced compared to a couple of years ago and also not many new players are coming in. But its core players such as myself and millions around the will keep playing it whether it is to kill time or beat a friend’s score or just to level up as long the game exists.

What are the things that are figured out during the game testing?

When you have a game that’s great — which is not broken, and yet trying to fix it — it’s never an easy job to keep what’s great and still bring something fresh. Trying to find a new gameplay that is different enough that it feels like a sister game, to be played side by side, and yet know where it is started from.

If you’ve played Candy Crush it should be easy to get into. At the same time, it shouldn’t be for Candy Crush experts. Even a new player should be able to understand this new game.

Testing Candy Crush belongs to the group of complex mathematics.

  • Candy Crush Saga includes exchange candies to make rows of three
  • Study required to test whether this game was what’s called NP-hard
  • NP is a problem that is difficult to check, or can only be solved with a PC
  • To test this theory, a researcher constructed a theoretical board of candies
  • They then tried to establish a generic formula for solving each puzzle
  • This involved trying to prove whether a certain score could be achieved with a set number of swaps
  • It wasn’t easy to solve, meaning the game was classified as NP-complete

Is Your Application Secure? We’re here to help. Talk to our experts Now

Inquire Now

Roles and Responsibilities of the QA Team while testing games like Candy Crush

  • Perform Exploratory Testing (E.T.) on user stories and report
  • Carry out session based testing
  • Provide Agile Testing plan
  • Simulate time and game engine to replay each game state
  • Provide quality assistance in performing crash testing, performance and regression testing
  • Perform fun level and game balancing act

Happy Gaming !!!!

Elasticsearch for Dummies

Elasticsearch

Have you heard about the popular open source tool used for searching and indexing that is used by giants like Wikipedia and Linkedin?

No, I’m pretty sure you may have heard it in passing.

Yes, I’m talking about Elasticsearch. In this blog, you’ll get to know the basics of Elasticsearch, its advantages, how to install it and indexing the documents using Elasticsearch.

Cutting edge Big Data Engineering Services at your Finger Tips

Read More

What is Elasticsearch?

Elasticsearch is an open-source, enterprise-grade search engine which can power extremely fast searches that support all data discovery applications.

With Elasticsearch we can store, search, and analyze big volumes of data quickly and in near real time. It is generally used as the underlying search engine that powers applications that have simple/complex search features and requirements.

Advantages of Elasticsearch

BUILT ON TOP OF LUCENE – Being built on top of Lucene, it offers the most powerful full-text search capabilities.

DOCUMENT-ORIENTED – It stores complex entities as structured JSON documents and indexes all fields by default, providing a higher performance.

SCHEMA FREE – It stores a large quantity of semi-structured (JSON) data in a distributed fashion. It also attempts to detect the data structure, index the data present and makes it search-friendly.

FULL TEXT SEARCH – Elasticsearch performs linguistic searches against documents and returns the documents that matches the search condition. Result relevancy for the given query is calculated using TF/IDF algorithm.

RESTFUL API – Elasticsearch supports REST API which is light-weight protocol. We can query Elasticsearch using the REST API with Chrome plug-in Sense. Sense provides a simple user interface. Sense plugin has features like autocomplete Elasticsearch query syntax, copying the query as cURL command.

Terminologies :

Cluster: A cluster is a collection of nodes that shares data.

Node: A node is a single server that is part of the cluster, stores the data, and participates in the cluster’s indexing and search capabilities.

Index: An index is a collection of documents with similar characteristics. An index is more equivalent to a schema in RDBMS.

Type: There can be multiple types within an index. For example, an ecommerce application can have used products in one type and new products in another type of the same index. One index can have multiple types as multiple tables in one database.

Document: A document is a basic unit of information that can be indexed. It is like a row in a table.

Shards and Replicas: Elastic Search indexes are divided into multiple pieces called shards, which allows the index to scale horizontally. Elastic Search also allows us to make copies of index shards, which are called replicas.

Usecases :

Ecommerce websites use elasticsearch to index their entire product catalog and inventory with all the product attributes with which the end user can search against.

So whenever a user search for a product in the website, the corresponding query will hit an index which has millions of products and it will retrieve the product in near real time.

You want to collect log or transaction data and want to analyze and mine this data to look for statistics, summarizations, or anomalies.

In this case, you can index this data into Elasticsearch. Once the data is in Elasticsearch, we can visualize the data in timelion/d3.js to better understand the collected logs.

Let’s assume that you are in a Linux based environment. Assuming that you also have JDK 6 or above installed, let’s get on with downloading Elasticsearch using the command below:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.0.tar.gz

Then extract it.

tar -zxvf elasticsearch-5.4.0.tar.gz

Go to the folder where Elasticsearch has been installed.

cd elasticsearch-5.4.0

To start the Elasticsearch server,

bin/elasticsearch

You can access it at https://localhost:9200 on your web browser. Here, localhost denotes the host (server) and the default port of Elasticsearch is 9200.

To confirm everything is working fine, type https://localhost:9200 in your browser and you should see something like this.

{

“name” : “90AzDAw”,

“cluster_name” : “elasticsearch”,

“cluster_uuid” : “e6t_hv6eQCi280elcktrUQ”,

“version” : {

“number” : “5.4.0”,

“build_hash” : “780f8c4”,

“build_date” : “2017-04-28T17:43:27.229Z”,

“build_snapshot” : false,

“lucene_version” : “6.5.0”

},

“tagline” : “You Know, for Search”

}

Indexing Documents :

Elasticsearch tends to use Lucene indexes to store & retrieve data. Adding ‘data’ to Elasticsearch is known as “indexing.” While performing an indexing operation, Elasticsearch converts raw data into its internal documents.

Each document is nothing but a mere set of correlating keys and values: Here, the keys are strings and the values would be one of the numerous data types such as strings, numbers, lists, and dates, etc.

We can query Elasticsearch using the methods mentioned below :

-cURL command

-Using an HTTP client

-Querying with the JSON DSL

ElasticSearch provides a REST API that we can interact with in a variety of ways through common HTTP methods like GET, POST, PUT, DELETE. Which does the same thing as the CRUD operations does.

Now, let’s try indexing some data in our Elasticsearch instance.

curl -XPUT https://localhost:9200/patient/outpatient/1?pretty -d’

“name” : “John”,
“City” : “California”
}’

This command will insert the JSON document into an index named ‘patient‘ with the type named ‘outpatient‘. 1 is the ID here. If we didn’t provide any ID here, it will simply create one for you. 

Pretty is used to pretty print the JSON response. To replace an existing document with an updated data, we just PUT it again.

By using the above method, we can insert one document at a time.

In order to bulk load the data, we can use Bulk API of Elasticsearch.

curl -XPOST ‘localhost:9200/patient/outpatient/_bulk?pretty&refresh’ –data-binary “@/home/ubuntu/Ex.json”

The above command loads the Ex.json file into the patient index.

Retrieving a Document :

Retrieving a Document in a index can be done using  GET request.

curl -XGET ‘localhost:9200/patient/outpatient/1?pretty’

The response of this command contains the resulting JSON document under the _source field.

{
“_index” : “patient”,
“_type” : “outpatient”,
“_id” : “1”,
“_version” : 1,
“found” : true,
“_source” : {
“name” : “John”,
“City” : “California”
}
}

It returns the document with the id 1 and some metadata about the document.

Leverge your Biggest Asset Data

Inquire Now

Deleting a Document:

This API allows us to delete a JSON document from an index.

curl -XDELETE ‘localhost:9200/patient/outpatient/1?pretty’

This command deletes the JSON document with the id 1.

In order to delete a document that matches a specific condition we can use  _delete_by_query API.

curl -XPOST ‘localhost:9200/patient/_delete_by_query?pretty’ -H ‘Content-Type: application/json’ -d’

{

“query”: {

“match”: { “city”: “California”  }

}

}’

That’s how we index a document using Elasticsearch.

Be it in terms of configuration and usage, elasticsearch is quite elastic in comparison to it’s peers.

Systems working with big data may encounter I/O bottlenecks due to data analysis and search operations. For systems like these, elasticsearch would be the ideal choice.

That marks the end of it. Hope you found this blog at least a tad bit useful!

6 Metrics to Measure DevOps Test Automation

Can speed and quality go together?

As we know, the DevOps approach strives to achieve this through parallel efforts at software development and operations readiness.

Keeping these 2 competing processes in lock-step is achieved by enforcing Quality Gates at the end of every step of the SDLC process, with clearly defined and calculable entry and exit criteria, as well as the clear responsibility of who is handing over and who is taking over the application.

These Quality Gates help to ensure that defects are logged and fixed within each step, and not allowed to flow further downstream.

To enforce the quality gates rigorously and comprehensively, software testing starts early as well. So the role of testing experiences a left shift, entering the picture right at the beginning of the SDLC rather than later, as is the won’t in the traditional method of linear (aka “Waterfall”) development.

This also achieves the purpose of speeding up the entire development and implementation process.

Test Driven Development, Continuous Integration, and Continuous Deployment all help achieve this speed, as well as assure quality.

Monitoring these processes in ensuring speed and quality is the DevOps dashboard that tracks the entire process, spot bugs at an early stage, and helps experienced user spot trends early.

Therefore, one of the critical steps in integrating the testing with the other two processes would be building metrics on the DevOps dashboard based on the project objectives.

The metrics should aim to assess the following

  • Deployment success rate – the customer-facing quality metric
  • App error rates for each Phase
  • Incident severity surfaced at each Quality Gate
  • Outstanding bugs (aka Technical Debt)

The metrics can help improve the understanding of the impact of a specific release as well as the response rates of the different teams to fix the bugs in the release and handle them better in the next.

At Indium Software, while the automated testing framework for the DevOps environment, iSAFE, speeds up the testing process, six metrics that help further improve the process to make it more efficient and effective include:

  1. Lead time for the start of test automation how quickly test automation can start is an area for constant improvement. In a typical engagement, the functional team writes the manual test cases and hands over to the automation team. With a 2% shift in Requirements for each calendar month of the project life, all delays will create a misalignment between the application and the automated test suite.
  2. FTR (First Time Right) percentage and Reverse Flow Metrics How many times can we get it right the first time (FTR) is another measure, calculated as a percentage of the overall automation effort and tracking the number of times FTR was achieved. The reverse is also kept track of – that is, how many times did we have to go back for clarifications to the Dev or Product management team, or even to a previous stage in the development lifecycle. This can, of course, be improved by better involvement at the time of design.
  3. Automation Code Coverage How relevant was the automation in a continuous delivery situation, how much of the application code was covered by the automation is another measure that helps evaluate the efficiency of the test automation effort.
  4. Percentage of In-sprint automation how much of the automation was completed within the sprint, and how much was picked up later by the automation team. Improving this metric forces quality in a large number of root causes:
    1. Quality of backlog grooming and stability of use cases within the sprint
    2. Level of detail of the user stories, which allows the automation team to start automation in parallel to the coding
    3. Level of involvement of the automation team in the sprint meetings
    4. Quality of the automation framework design and modularity allowing speed of automation
    5. Amount of API testing (faster, more robust) vs. UI based testing (susceptible to changes in the UI and P4 defects).As a best practice, the Indium functional tester details the manual test cases such that it can be automated directly into iSAFE.
  5. Maintainability and responsiveness measuring how modular and reusable was the automation and how many times did it need to be rewritten can help improve the test case scripting to cover more variations.
  6. Use of VM/ Containers for Testing In Production (TIPping) DevOps requires the testing team to make use of the integration between the Development and the Operations, to the extent of being able to spin up a machine for testing the Pre-Production code by restricting access, and to then switch it to full production mode, OR quickly roll back by reverting to the old status – measuring the efficiency with which this is achieved also is an important metric for DevOps test automation.

These metrics help keep the process efficient and achieve DevOps goals. They help reduce the time taken for QA test automation servicesand also identify new areas that can be automated. 

Is Your Application Secure? We’re here to help. Talk to our experts Now

Inquire Now

ROI of automation comes from the ability to execute the automation suite early, fast, and frequently so that issues can be fixed before being found by the end customer. The metrics given above help you find the bottlenecks to help achieve that end goal.

7 Techniques for Automated Testing

As we know, automated testing, especially framework-based, offers several benefits. There is a reduction in testing effort, testing schedule, better regression-testing, greater test coverage and improved productivity.

However, as the demands of customers for better products increases, the need for constant improvement and innovative ways to speed up the testing process, as well as make it more efficient increases.

A survey across three years from 2014-2016 shows that while in 2014, the releases were not even monthly, in 2015, 57 per cent were reported to have released code into production either weekly, several times a week, or even several times in a day.

About a quarter were said to release code monthly, while only 10 per cent releasing it quarterly. By 2016, 66 per cent were deploying code weekly or more frequently.

To match this pace, the automation element in software testing services need to go up as well as advanced techniques need to be introduced to make it more efficient.

Seven techniques to further improve automated testing

1) Implement generic tests for all the layouts

Typically, manual triggers are needed to test apps across different devices, platforms, browsers and the screen sizes, though the testing within an environment can be automated.

Are you Test Automation Ready? Find out

Test Automation

For automated triggering of testing, low-level keywords fork as per the device it interacts with.

2) API Testing

API components, given the proliferation of cloud, are becoming very popular amongst developers. Programmable Web, a source of news and information about Internet-based application programming interfaces (APIs), lists 16,590 APIs in its database.

They lack a graphic interface and API testing requires testing for functionality, reliability, performance, and security at the message layer and is manual. A script with a global variable can be written to automate such API calls.

The first request issues the token, which will be stored in the global variable and be used for the subsequent API calls.

3) Web Service Testing

For testing the web services, input data needs to be changed to test for variations. It requires modifying the XML/JSON input structure every time to accommodate the data change.

Automated testing frameworks such as Indium’s iSafe allow even non-technical users by maintaining the required data in Excel, allowing the tester to change the variables there and call it when needed without touching the XML.

It also reduces the burden of having to remember variables already used to avoid duplication, which can give rise to new errors.

4) Testing for Updates

When testing for updated features in web services, a new user ID needs to be created each time so that cache does not influence the outcome.

However, this can be challenging for the tester. To overcome that, a script can be written to restore the database by removing the new changes or clean it up to enable reusing the same information.

5) Parallel Testing

While some tools such as BrowserStack and NCrunch allow parallel execution of test on different devices, a few don’t.

An automated script can enable this on different real and virtual machines, triggering the testing one after the other, with just a short lag between each, giving an illusion that the tests are running in parallel.

This parallel testing increases the number of executions at any given time, thus proving time effective.

6) Socket Programming Testing

Some programs, such as in the case of socket programming, require testing on the local machine, on the server and then back to the local machine.

The tester needs to pause the testing on the local machine, access the server to test some components there, and then resume testing on the local machine.

Instead, a handshake code can triggers the testing on the server from the local system and back as needed without the need for manual intervention in distributed testing environment. Apart from making the process more efficient, it can also save all the manual efforts. (screen 5)

7) Keyword Testing

For web services, one of the critical ways to generate traffic that can translate into revenues is through relevant advertising that will ensure good footfall.

Keywords are important and only if appropriately selected will they have the required impact. For instance, advertisements for sports-related wares should pop up if the content is about sports.

Is Your Application Secure? We’re here to help. Talk to our experts Now

Inquire Now

Pushing it into content related to politics or movies will not have the desired impact. Currently, the relevance is checked manually, but this can be automated too.

Through advanced techniques for automated testing, the quality and efficiency of testing improves and also frees up resources to focus on areas that need manual intervention and human intelligence.

It also helps the testing team to anticipate and be ready to test builds without much time lags, thus compressing the design to production time lag further.