Monday, 16 October 2017

Application Testing Vs Game Testing – Tug of War!!!

Application testing vs Game testing

What Is Different About Software Testing?

Unlike game testing, software testing greatly utilizes automation scripts, and it is the matter of testing a software application, not games. These scripts can be created before or after producing written test cases, as either can be used to supplement the testing of the other similar application or program. A number of tools and frameworks have been developed to make automation quicker, as setting up automation scripts can initially take a bit of your time.
As software testing makes greater use of test cases and test scripts, this generally means that the job of a software tester is more technical than a games tester.
The field of software testing is usually seen as a more skilled profession than game testing, even though the skills required to be a games tester are exactly the same as those needed as a manual software tester.
Software Testing
“For software testing, you usually need a degree in computer science, software engineering, math, or anything technical, really.” 
“For games testing, a degree may be useful and a love of games, attention to detail, and a strong work ethic can usually get you into the field.”
Software Testing

Differences by Testing Platforms

Game TestingSoftware Testing
PC, Consoles, Web/Cloud (online games likes MMOs, HTML5 and Facebook) MobilePC, Web, Mobile & Cloud
Mobile Resting in Real Devices

What Makes Game Testing Unique?

Below are the few testing types to the list of game testing checklist, which makes game testing unique.
  • Fun Factor Testing
  • Balance Testing
  • Realism Testing
  • Game Level Testing
  • Game Play Testing
  • Multi-player Testing
  • Modification API Testing
  • Game Network Testing
  • Al Testing
A game tester should have the same knowledge as of software tester, but with a special focus on what makes
Game Testing is not an easy task. It requires more dedication and concentration. Now a day’s business requires for gaming consoles and game applications that are perfect from all viewpoints. For creating a good image and better response that are required to deliver games that are free from bugs and capable to run for across devices and platforms.
In games, the app is designed to give the user the least amount of access to the actions of the program as possible.
Game designers give the players with no choice but to take time to explore and discover what the game does. They want to preserve the mystery of the game world, the pursuit, the fantasy. The harder it is, and the more time it takes for the user to obtain the ‘desired results’. “Winning”.
A game is an enormously complex database or series of databases, within a shell that is built to obscure its purpose from the user.
Adding a feature of randomizer, the game design is unpredictable. Events don’t function the same way twice.
As a game tester, the interaction is only with an intentionally limiting interface that is constantly changing the way of its functions, as well as the way it looks.
“It is almost impossible to know if what is in the
screen is what is supposed to be seen”.
A game tester should be able to keep track of enormous amounts of dynamic details.
In a game’s database, it is not necessary that the same series of actions do not cause the same reaction. This makes recreating bugs extremely difficult.
Game TesterGames push the technology innovation envelope. They tend to drive the hardware market, while other software conforms to it.
Gamers are often technology wizards, and are looking for the next level of performance, speed, and visual quality in their game experience. Games are always developed with an eye toward the newest, fastest, latest hardware, so game testers must keep ahead of the trends.
Testers must be educated and certified in all new hardware and have it all available in the testing environment. This technological knowledge is critical in this industry because the game developer will most often take the blame if it the game doesn’t function with the new hardware, and that failure can mean game death.
Games are more system demanding than most other software, so installation, setup, and compatibility testing is critical. Game function will be affected by video, sound, memory, and other issues more than any other type of software.
In contrast to that, the latest versions of today’s business software are released to be compatible with the standard issue in system configuration.

Conclusion

There are many similar and unique aspects between software testing and game testing but all types of testing require experts to perform it well and in a structured way.

Top iOS Testing Frameworks

Top iOS Application Testing Frameworks
Did you know that the total number of iOS devices sold in the
market is 250 Million+?
11% of the iOS users remove the app after crashes
45% of iOS users would remove the paid apps after crashes
69% of iOS users would will stop playing and remove the games after first crash
6-7 iOS devices are sold every second
With the explosion of iOS devices year on year, the verge of iOS success is increasing higher than ever before. More start-ups and SMEs don’t find it financially sustainable to acquire every piece of iOS devices with different OS versions and hardware specs. On the other hand, testing apps or games manually is not anymore an ideal option for QA process due to low efficiency and scalability issue.
Though iOS is still a more closed operating system compared to Android, many open source test automation frameworks and tools can be utilized to create robust automated tests. Along with the help of a cloud-based testing solution, it enables developers/testers to verify app quality more efficient in a scalable way and makes iOS testing tasks easier.
Today we’d like to go through 5 widely used iOS testing frameworks nowadays with simple code samples to give you a basic understanding of getting started with your iOS testing. If you are also interested in Android test automation frameworks, do not forget to check out Top 5 Android Testing Frameworks, where code samples are provided as well.

APPIUM

Appiumappium logo is popular due to its flexibility and usability on both Android and iOS, and it works on native, hybrid and web applications. For iOS testing, it uses JSONWireProtocol to engage with iOS applications using Selenium WebDriver. Thanks for that, Appium does support mobile web testing very well and its use cases are very similar as if Selenium would be used for web testing.
APPIUM CODE SAMPLE
driver.findElement(By.id(“com.example.app:id/radio0”)).click();
driver.findElement(By.id(“com.example.app:id/radio1”)).click();
driver.findElement(By.id(“com.example.app:id/radio2”)).click();
driver.findElement(By.id(“com.example.app:id/editText1”)).click();
driver.findElement(By.id(“com.example.app:id/editText1”)).sendKeys(“Simple Test”);
driver.findElement(By.name(“Answer”)).click();
// or alternatively with
driver.findElement(By.id(“com.example.app:id/button1”)).click();

XCTEST / KIF

XCTest is tightly coupled with Xcode but is still usable with both real iOS devices and simulators. XCTest allows developers to write tests for components at any level and also provides the framework for UI testing capabilities. XCTest tests are grouped into subclasses of XCTestCase. Writing any tests with XCTest should be trivial to iOS developers as XCTest is fully compatible with both Objective-C and Swift.
KIF (Keep It Functional) is an iOS integration test framework that is closely related to and uses XCTest test targets. KIF tests can be executed directly in XCTestCase or any subclass. KIF allows for easy automation of iOS applications by leveraging the accessibility attributes that the OS system makes available for those with visual disabilities.
CODE SAMPLE WITH OBJECTIVE-C
Mobile Resting in Real Devices
– (void)testClicksOnRadioButtons {
[tester tapViewWithAccessibilityLabel:@”Radio1”];
[tester tapViewWithAccessibilityLabel:@”Radio2”];
[tester tapViewWithAccessibilityLabel:@”Radio3”];
[tester enterText:@”Simple Test”
intoViewWithAccessibilityLabel:@”editText1”];
[tester tapViewWithAccessibilityLabel:@”Answer”];
}
CODE SAMPLE WITH SWIFT
testClicksOnRadioButtons() {
let app = XCUIApplication()
app.radiobutton[0].tap()
app.radiobutton[1].tap()
app.radiobutton[2].tap()
app.staticTexts[“Simple Test”]
app.button[0].tap()
}
Learn and get started with KIF by reading our blog about this: How to get started with KIF?

CALABASH

Calabash logoCalabash is another great cross-platform framework that works perfectly with Android and iOS apps. One of the major differences to other frameworks is that Calabash tests are written in Cucumber. That means the test is written like a specification and is simple and easy to read even for non-tech people, but still executable by the automation system.
CALABASH CODE SAMPLE
Feature: Answer the Question feature
Scenario: As a valid user I want to answer app question
I wait for the text “What is the best way to test application on hundred devices?”
Then I press Radio button 0
Then I press Radio button 1
Then I press Radio button 2
Then I enter text “Simple Test” into field with id “editText1”
Then I press view with id “Button1”

EARLGREY

To some degree, EarlGrey is the ‘Espresso for iOS’. It’s also developed and open sourced by Google. Google uses this test framework to test many iOS native apps including Google Calendar, YouTube, etc. As the codename goes, lots of similarities can be found between Espresso and EarlGrey. For example, EarlGrey tests will automatically wait for events (animations, network requests etc.) before trying to interact with the UI.
EARLGREY CODE SAMPLE
– (void)testBasicSelectionAndAction {
[[EarlGrey selectElementWithMatcher::grey_accessibilityID(@”ClickHere”)]
performAction:grey_tap()];
// Example of long press with EarlGrey matchers
– (void)testLongPress {
[[EarlGrey selectElementWithMatcher::grey_accessibilityLabel(@”Box”
)]
performAction:grey_longPressWithDuration(0.5f)];
[[EarlGrey selectElementWithMatcher::grey_accessibilityLabel(@”One Long Press”)]
assertWithMatcher:grey_sufficientlyVisible()];
// Example of multi-select, visible click on items
– (void)testCollectionMatchers {
id visibleSendButtonMatcher =
grey_allOf(grey_accessibilityID(@”Box”), grey_sufficientlyVisible(), nil);
[[EarlGrey selectElementWithMatcher:visibleSendButtonMatcher]
performAction:grey_tap()];
}

JEST / JASMINE

Jasmine-LogoJest uses Jasmine behavior-driven framework as the basis for testing JavaScript code. Every test case starts from describe() function call, similar to how JUnit uses TestCase class. The describe() function takes 2 parameters – the description/title of the test case and the function to be executed. The it() function includes all the test steps and provides (similar to JUnit) series of expect() functions.
JASMINE CODE SAMPLE
describe(“Player”, function() {
var player;
var song;
beforeEach(function() {
player = new Player();
song = new Song();
});
it(“should be able to play a Song”, function() {
player.play(song);
expect(player.currentlyPlayingSong).toEqual(song);
//demonstrates use of custom matcher
expect(player).toBePlaying(song);
});
describe(“when song has been paused”, function() {
beforeEach(function() {
player.play(song);
player.pause();
});
it(“should indicate the song is paused”, function() {
expect(player.isPlaying).toBeFalsy();
// demonstrates use of ‘not’ with a custom matcher
expect(player).not.toBePlaying(song);
});
it(“should be possible to resume”, function() {
player.resume();
expect(player.isPlaying).toBeTruthy();
expect(player.currentlyPlayingSong).toEqual(song);
});
});
// demonstrates use of spies to intercept and test method calls
it(“tells the current song if the user has made it a favorite”, function() {
spyOn(song, ‘persistFavoriteStatus’);
player.play(song);
player.makeFavorite();
expect(song.persistFavoriteStatus).toHaveBeenCalledWith(true);
});
//demonstrates use of expected exceptions
describe(“#resume”, function() {
it(“should throw an exception if song is already playing”, function() {
player.play(song);
expect(function() {
player.resume();
}).toThrow(“song is already playing”);
});
});
});

BONUS: UI AUTOMATION

UI Automation is a tool developed by Apple that automates the testing of iOS applications. Put in another way, UI Automation to iOS is similar with UI Automator to Android. UI Automation tests are written in JavaScript, adhering to an API defined by Apple. Below is the code written on Apple’s Developer portal.
NOTE! UI Automation still works fine if you are some using older version of Xcode, but with the latest Xcode, the entire UI Automation framework is deprecated by Apple.
UI AUTOMATION CODE SAMPLE
UIATarget.localTarget().frontMostApp().mainWindow().buttons()[0]
If Edit button is the first button in your code, you can also have the code as below:
UIATarget.localTarget().frontMostApp().mainWindow().buttons()[“Edit”]
Then you can use any of these three ways to call an action to tap that button:
UIATarget.localTarget().frontMostApp().mainWindow().buttons()[0].tap();
UIATarget.localTarget().frontMostApp().mainWindow().buttons()[“Edit”].tap();
var editButton=UIATarget.localTarget().frontMostApp().mainWindow().buttons()[0];
editButton.tap();
The Automation instrument has a complete element hierarchy that represents your app’s user interface. To view that hierarchy, use the logElementTree method to write an outline of it to the log:
UIATarget.localTarget().frontMostApp().logElementTree()

CONCLUSION

Though iOS app testing is totally different from Android app testing, you can use either Appium or Calabash to create test scripts that can be used to do cross-platform testing. That being said, every framework has its advantages and requirements are unique for each project. It’s recommended to do some further research, learn more about each framework and choose the one you are comfortable with. Happy iOS testing.

Top 5 Android Application Testing Framework

Top Android Application Testing Frameworks
Did you know?
There are 300+ Million Android devices across the globe
850,000 daily Android activations
Google play has over 450,000 Android Apps available
Take a look few key App Highlights to discuss further
Android App Highlights
Google’s Android ecosystem is continuing to expand rapidly. It is evident that new mobile OEMs are emerging in every corner of the world adds in different screen sizes, ROM/firmware, chipsets, etc. For Android developers/testers, it becomes relatively difficult to cope up with the fragmentation.
Luckily, Android developers/Testers have unlimited access to some advanced cloud-based mobile testing solution, like Testdroid Cloud, for the Large-Scale Automation of real devices for quality assurance.
Also, the emergence of different Android testing frameworks has substantially relieved Android developers’/Tester lives.
In this blog, we are going to discuss five most used Android testing frameworks and break down the basics and code examples of each.

ROBOTIUM

robotium logoDefinitely, Robotium was once the most widely used Android testing framework in the early days of the Android world. It is similar to Selenium in Android and makes testing API simpler.
Robotium is an open source library extending JUnit with abundant useful testing methods for Android UI testing. It offers powerful and robust automatic black-box test cases for Android apps (native and hybrid) and web testing. With Robotium we can write function, system and acceptance test scenarios, and test applications where the source code is available.
ROBOTIUM CODE EXAMPLE
// Public void for the operation
public void testRecorded() throws Exception {
// Wait for the text ‘Hello!’ to be shown for newbie
if (solo.waitForText(“Hello!”)) {
// R class ID identifier for ‘Sign in’ – and click it
solo.clickOnView(solo.findViewById(“com.twitter.android.R.id.sign_in”));
// R class ID identifier for entering username
solo.enterText((EditText) solo.findViewById(“com.twitter.android.R.id.login_username”),”username”);
// R class ID identifier for entering password
solo.enterText((EditText) solo.findViewById(“com.twitter.android.R.id.login_password”),”password”);
// R class ID identifier for clicking log in
solo.clickOnView(solo.findViewById(“com.twitter.android.R.id.login_login”));
// Wait until log in is done
solo.waitForActivity(“HomeTabActivity”);
}
// Activate the text field to compose a tweet
solo.clickOnView(solo.findViewById(“com.twitter.android.R.id.menu_compose_tweet”));
// Type the tweet
solo.enterText((EditText) solo.findViewById(“com.twitter.android.R.id.edit”), “Testdroid”);
// Tweeting!
solo.clickOnView(solo.findViewById(“com.twitter.android.R.id.composer_post”));
}
Mobile Resting in Real Devices
For convenience, Testdroid Recorder is used. It is an amazing recording tool built with Robotium for test script creation. By performing actual actions on the real device, the tool records every step or action taken and converts it to Javascript for further modification.
In addition to that, it is also entitled to download and utilize the extension Library – ExtSolo.
It includes useful methods that have not been merged into Robotium, for instance:
  • Automatic scaling of clicks for any resolution
  • Multi-path drags
  • Automatic test failure screenshots
  • Mock locations
  • Change device language
  • WiFi control

UIAUTOMATOR

UIautomator logoAlthough Robotium is a good yet basic framework, UIAutomator offers Android apps and games testing. Google’s test framework allows user interface (UI) testing of native Android apps on one or more devices. Another advantage of UIAutomator is that it runs JUnit test cases with special privileges. This means that the test cases can span across different processes. It also provides five different classes to use, including
UiCollection | UiDevice | UiObject | Uiscrollable | UiSelector
But, it only works on Android devices with API level 16 or higher. Another downside of UIAutomator is that the tool doesn’t support web view, with no way for direct access to Android objects.
UIAUTOMATOR’S CODE EXAMPLE
// Public void for the operation
public void testSignInAndTweet() throws Exception {
// Starting application:
getUiDevice().wakeUp(); // Press Home button to ensure we’re on homescreen
getUiDevice().pressHome(); // Select ‘Apps’ and click button
new UiObject(new UiSelector().description(“Apps”)).click(); // Select ‘Twitter’ and click
new UiObject(new UiSelector().text(“Twitter”)).click(); // Locate and select ‘Sign in’
UiSelector signIn = new UiSelector().text(“Sign In”); // If button is available, click
UiObject signInButton = new UiObject(signIn);
if (signInButton.exists()) {
signInButton.click(); // Set the username
new UiObject(new
UiSelector().className(“android.widget.EditText”).instance(0)).setText(“username”);
new UiObject(new
UiSelector().className(“android.widget.EditText”).instance(1)).setText(“password”);
new UiObject(new UiSelector().className(“android.widget.Button”).
text(“Sign In”).instance(0)).click(); // Wait Sign in progress window
getUiDevice().waitForWindowUpdate(null, 2000); // Wait for main window
getUiDevice().waitForWindowUpdate(null, 30000);
}
new UiObject(new UiSelector().description(“New tweet”)).click(); // Typing text for a tweet
new UiObject(new UiSelector().className(“android.widget.LinearLayout”).instance(8)).
setText(“Awesome #Testdroid!”); // Tweeting!
new UiObject(new UiSelector().text(“Tweet”)).click();

ESPRESSO

espresso logoEspresso is the latest Android test automation framework that got open-sourced by Google. It is now available for developers and testers to beat out the UIs. Espresso has an API which is small, predictable, easy to learn and built on top of the Android instrumentation framework. Also, Android UI tests can be quickly written with it. It supports API level from 8 (Froyo), 10 (Gingerbread), and 15 (Ice Cream Sandwich) and afterwards.
It’s quite reliable, synchronizing with the UI thread is fast, because, there is no need for any sleeps (test run on same millisecond when an app becomes idle).
But it does not support web views.
ESPRESSO CODE EXAMPLE
public void testEspresso() {
// Check if view with the text ‘Hello.’ is shown
onView(withText(“Hello.”)).check(matches(isDisplayed()));
// R class ID identifier for ‘Sign in’ – and click it
onView(withId(getInstrumentation().getTargetContext().getResources()
.getIdentifier(“com.twitter.android:id/sign_in”, null, null))).perform(click());
// R class ID identifier for entering username
onView(withId(getInstrumentation().getTargetContext().getResources()
.getIdentifier(“com.twitter.android:id/login_username”, null, null))).perform((typeText(“username”)));
// R class ID identifier for entering password
onView(withId(getInstrumentation().getTargetContext().getResources()
.getIdentifier(“com.twitter.android:id/login_password”, null, null))).perform((typeText(“password”)));
// R class ID identifier for clicking log in
onView(withId(getInstrumentation().getTargetContext().getResources()
.getIdentifier(“com.twitter.android:id/login_login”, null, null))).perform(click());
// Activate the text field to compose a tweet
onView(withId(getInstrumentation().getTargetContext().getResources()
.getIdentifier(“com.twitter.android:id/menu_compose_tweet”, null, null))).perform(click());
// Type the tweet
onView(withId(getInstrumentation().getTargetContext().getResources()
.getIdentifier(“com.twitter.android:id/edit”, null, null))).perform((typeText(”#Testdroid”)));
// Tweeting!
onView(withId(getInstrumentation().getTargetContext().getResources()
.getIdentifier(“com.twitter.android:id/composer_post”, null, null))).perform(click());
}

CALABASH

Calabash logoCalabash is a cross-platform test automation framework for Android and iOS native and hybrid applications. Calabash has easy-to-understand syntax, which enables even non-technical persons to create and execute automated acceptance tests for apps on both of these mobile platforms. Calabash’s tests are first described in Cucumber and then it is converted to Robotium or Frank in run time. It supports almost 80 different natural language commands (controllers), and new controllers can be implemented to it in Ruby or Java.
CALABASH CODE EXAMPLE
Feature: Login feature
Scenario: As a valid user I can log into my app
I wait for text “Hello”
Then I press view with id “Sign in”
Then I enter text “username” into “login_username”
Then I enter text “password” into “login_password”
Then I wait for activity “HomeTabActivity”
Then I press view with id “menu_compose_tweet”
Then I enter text “Testdroid” into field with id “edit”
Then I press view with id “composer_post”

APPIUM

appium logoAppium is a mobile test automation framework (and tool) for native, hybrid and mobile-web apps for iOS and Android. It uses JSONWireProtocol to interact with iOS and Android apps using Selenium’s WebDriver. It supports Android via UIAutomator (API level 16 or higher) and Seledroid (API level lower than 16), iOS via UI Automation, and mobile web as Selenium driver for Android and iOS. Looking for a complete
One of the biggest advantages of Appium is that you can write Appium scripts can be written in almost any programming language (e.g. Java, Objective-C, JavaScript, PHP, Ruby, Python or C#, etc), freedom to select tools, compatibility across the most important platforms (Android and iOS), freedom to install and configure devices to test. Also, familiarity with Selenium makes it easy to use Appium in mobile app testing. They use the same WebDriver and the desired capabilities are also used in the same way. Configuring an application to run on Appium has a lot of similarities to Selenium.
APPIUM CODE EXAMPLE
# wait for hello
sleep(3)
textFields = driver.find_elements_by_tag_name(‘textField’)
assertEqual(textFields[0].get_attribute(“value”), “Hello”)
# click sign-in button
driver.find_elements_by_name(‘Sign in’)[0].click()
# find the text fields again, and enter username and password
textFields = driver.find_elements_by_tag_name(‘textField’)
textFields[0].send_keys(“twitter_username”)
textFields[1].send_keys(“passw0rd”)
# click the Login button (the first button in the view)
driver.find_elements_by_tag_name(‘button’)[0].click()
# sleep
sleep(3)
# click the first button with name “Compose”
driver.find_elements_by_name(‘Compose’)[0].click()
# type in the tweet message
driver.find_elements_by_tag_name(‘textField’)[0].send_keys(”#Testdroid is awesome!”)
# press the Send button
driver.find_elements_by_name(‘Send’)[0].click()
# exit
driver.quit()

WRAPPING UP

Here are top 5 android testing frameworks for daily Android builds, creation, and correction. Certainly, each of them has its own pros and cons.
Appium is good in testing both your Android and iOS versions at the same time. If it is for a loyal Android developer with only Android-version app, for instance, then using Robotium is a good idea too.
Also, Testdroid Recorder will definitely save lots of time and money and It’s free. Therefore, think about testing need – functional testing, compatibility testing, UI testing, etc. – and select the right and best Android testing framework(s).
Thanks for Reading!

Monday, 25 September 2017

Mobile Testing with Simulators/Emulators vs Real Devices

Simulators Emulators Real Devices

Save QA Cost
Mobile testing has become a nightmare due to increasing number of devices and configurations that mobile apps and websites need to be cross-checked against. These tests should confirm the seamless running of applications. Thankfully, today we have a wide range of testing tools for thorough testing.
Mobile EmulatorsThese tools can be categorized into three broad categories: emulators, simulators, or real devices.
Well, few may say that emulators and simulators can be clubbed in a single group. But, real device testing does what the name implies – it tests the application as they run on the users’ smartphones.
Let’s take a deeper look at the categories.
Mobile Resting in Real Devices
Real device mobile testing requires the use of the actual smartphone. But emulators and simulators are based on the concept of virtual testing. Virtual testing involves testing the software that provides the same functionality as provided by the real phone.
For testing mobile apps, an emulator is a desktop application that mimics the hardware and OS of the applications that should be tested. A simulator does not mimic the hardware/OS, but rather it mimics the basic behavior of a device. While simulators are usually simpler in function than emulators, they are not as useful as emulators. Real device testing checks the functionality of mobile apps thoroughly and ensures the appropriate working of the apps.
Emulators provide better results compared to simulators as they can be used to test specific situations or cases, and also can mimic multiple devices. Emulators are often used more as they are relatively cheaper – specifically if compared to real devices.
Emulator/Simulators VS Real Devices
Let us try to compare what provides better benefits in the following scenarios:
  • Situation-based scenarios: In situation-based scenarios, buying required mobile devices may be tough – while using the emulator/simulator may take care of the need. This means, not all the scenarios can be tested in simulators/emulators – this is possible only if testing is done on the mobile.
  • Ease-of-use scenarios: Emulators or Simulators make testing the plethora of apps on the multiple mobile devices available today much easier, but they miss out the UI and UX aspects of an app, including the color and brightness display.
  • Ease-of-access scenarios: Testing on mobile devices is reliable – however, testing on Emulators and Simulators makes it easier as it requires only the URL for the app.
  • Validating battery scenarios: Mobile devices can perform this test as required whereas emulators and simulators usually are not able to mimic the issues related to the battery.
  • Validating Performance: This is a very crucial part of testing a mobile application. Testing the performance of an app on a mobile device usually gives a more accurate result as compared when tested on emulators or simulators.

Which is the better option?

Real DeviceWhile both Emulators and Simulators look like great alternatives for testing apps, since having a wide range of real devices also accounts for the cost involved. But, they have issues that may generate both false positive and negative results, which will surely have a negative impact on the business ROI. Another disadvantage of emulator/simulator is that howsoever much close their feature may be to the real app, emulator/simulator may still not cover all features/scenarios and the results obtained may not be as accurate as we would want them to be.
Real device testing wins the challenge over either of the two. With an efficient testing process, real devices can validate for every possible scenario with almost 100% accuracy.
However, having all three options have their own benefits, and can be used according to the need, helping the organizations meet their goals.
Performance Testing
Subscribe to read more on Mobile Test concepts, tools, and strategies.

Regression Testing for a Game Software

Regression Testing for a Game Software
Save QA Cost
We have discussed a lot about the video game market. It is forecasted that the global games market will reach up to $ 108 Billion with a mobile gaming percentage of 42%.
The software with the largest number of tweaks, releases, updates, and version are games. Video games have to be updated in line with the customer sentiments and satisfaction. Thus, Gaming Testing is a segment where regression plays a very crucial role.

Major challenges faced while testing a game software are:

  1. Test RegressionAlmost all games are based on mathematics, hence a focus should be taken to solve them for testing. It involves a huge amount of time when regression testing proves to be an ice breaking solution.
  2. Maintaining deliverables for all the possible game versions, releases and updated is a very difficult task.
  3. Thinking like an end user of different age category and finding bugs thinking from the user’s perspective is a very difficult task.
  4. Time to market is an essence to a game’s success. Testing multiple game version at the same time becomes a very difficult task for the game testing team.
Steps for Regression Testing of a Game Software
Step 1: Smoke and Sanity  Sounds familiar?? But smoke and sanity testing are essential to make sure the system or the platform under test is under desirable conditions. The main purpose is to ensure if the system is stable even before the game testing process is initiated.
Mobile Resting in Real Devices
Step 2: Requirements Analysis Testing requirements of the modifications or updates to the code must be meticulously analyzed. Often users encounter bugs that are found to be a result of last-minute alterations which can be found in requirement analysis. Mandatory requirements for game testing must be carefully assessed, and test cases for regression should be prepared such that the core features of the game software remain firmly intact.
Step 3: Identifying Test Cases for Critical Game Functions Of the various test cases designed for game regression testing, the most critical for gamers and development teams alike are the Sanity test cases that check the basic functionality of the gaming system. In this, ordinary setup related test cases are then tested on priority. Then, the test cases that are designed for regression testing are executed, as per the bandwidth and the requirement. Integration testing and its test cases are highly important and there needs to be a series of regression test cases especially while performing integration testing. A sudden last moment bug fix, for example, can break the integration between multiple modules, even in the tested game applications.
Step 4: Test Case Selection After prioritizing the test cases, they are selected for regression test execution. The selection of these test cases is basically done in the area of frequent changes and based on the features and their criticality. Tests are run aggressively for those units of code that have undergone multiple changes repeatedly.
We will discuss more Regression Testing in our upcoming blogs.
Performance Testing
comment-below

Monday, 11 September 2017

Test Automation in Large Scale



Digital businesses must adapt to new functionalities into production on daily basis to take full advantage of the flexibility offered by the virtual world.
Test Automation in Large Scale

Automation for digital business is not science fiction. It’s real and happening today. For one of the largest U.S. Federal programs, more than half a million business process were automated every day in 2 hours on more than 100 virtual machines.
In another example, a global manufacturer of luxury brands validates their core business processes worldwide with 600 hours of automation on more than 30 virtual machines every day!
We can see every day that today’s digital technology projects take place on a swift timeline than ever before, where typical projects last days-to-weeks rather than months-to-years. Large-scale automation makes it possible to deploy this new business functionality early and often – while significantly mitigating risks of business disruption or major glitches during the process.
The real world scenario explained in three words
FAST                FREQUENT                  FLAWLESS
Test Automation Large ScaleThe quality of application is determined by its swiftness, frequency of updates and defects
Automation is the key. Test Automation for process validation and functional testing allows you to run through literally millions of business process steps just like the end users, to validate that no code is broken.
Though test automation does not look a very rewarding or a feasible option due to the costs involved in setting up the environment or the tools – but definitely, in the long run, its benefits surely surpass the initial glitches.
It is said, that “there’s a method for every madness”.
To maximize the ROI using Test Automation, a specific plan of action is required.
What actually might set up the best way of implementing large scale test automation so as to maximize ROI?
  1. Robust Product Road Map: When organizations begin to automate anything, they should ensure that they have a clear goal set. There should be absolute clarity on the product road map and on the automation check list. Else, there will be confusion and chaos around the whole process and the efforts prove to be a big scale failure. Hence, defining the product roadmap is a must.
  2. Optimized Test Process: To meet a defined roadmap, a clear demarcation of the test process is a must. The test process must be defined keeping in mind the risks, costs, and training involved while implementing test automation.
  3. The Framework: Whether it is a data-driven or a keyword-driven framework, or a hybrid one, defining and selecting a framework will have a definite positive impact on the ROI as it will implement the road map you defined earlier.
  4. Tools to be used: Though testers have a wide variety of choice for testing solutions, wrong decisions regarding the test automation tools can lead to effects that may not be reversible. Therefore, selecting the right tools is a business-critical requirement for ensuring successful test runs. All variables such as integration, installation, cost, maintenance, and compatibility with the testing environment must be considered while selecting a tool. 
  5. Script Management: The scope of script management usually floats around the areas of the standard process that are well documented, logging the errors that are generated, and most importantly testing if the script was written is able to withstand unexpected behaviors.
  6. Manual Effort: Automation is an end result of a lot of manual activities such as script and test case writing, setting up the machines and selecting the tests, and once the test is run – analyze the results. These cannot be done in a jiffy, and need to be planned for both costs and efforts.
  7. Testing Team: If an organization realizes the significance of the manual effort required, it must give a due diligence while planning the work and effort estimation with regards to the team and the skills required for the implementation of test automation.
  8. True Measure of Success: A few good examples of this definition may include measuring benefits such as faster time to market, improved ROI, or, on the other hand, the number of bugs have decreased. 

Scaling up with virtual machines

Test Automation ServicesThe automation framework can be run on masses of virtual machines in the cloud to get scale. During automated business process validation, each of these machines interacts with the applications, running through all complex business scenarios with real time data. This verifies that things are working as expected. The machines will only be turned up on demand and can be decommissioned when the scenarios finish executing.
Please share your thoughts on test automation. Subscribe to get notifications on our upcoming test automation blogs.

Sunday, 3 September 2017

Software Testing Services

Indium Software Testing Services
‘Making a Right Choice’
“Global Pure Play Software Testing Services Market 2017-2021”
Technavio’s analysts forecast the global pure play software testing services market to grow at a CAGR of 19.41% during the period 2017-2021 and is expected to reach  USD 9.08 billion by 2021.
In today’s technology-driven business environment, software apps and products are expected to satisfy critical checkpoints, such as ease of installation, performance, compatibility, recovery after a failure, resource consumption, portability, security, and reliability.
The global customer acceptance and deeper implementations of Cloud, Big Data, Mobile, and Gaming demand immediate attention and a redefined application development. When there is a new upgrade or deployment for the existing business needs, the IT enterprises should make sure that the implementation is accurate and secure. Nevertheless, it is very difficult to establish an equal level of intensive care when it comes to the everyday functioning of the business application.
This has set a higher standard for software testing services companies. They are catering to these problems with their holistic testing strategy and framework to test and certify the quality of the application and make sure that it is defect free.
The Cost of Software Testing is primarily affected by the reasons mentioned in the image below
World Quality Report
Cost is almost always the predominant problem that IT decision-makers are worried about. Skyrocketing costs are usually the result of many fundamental difficulties that can be defined by many braces, including:
  • Inefficient processes
  • Underproductive people
  • Inadequate tools and technologies
  • Dynamic and unstable business and technological landscape
  • Poor decision-making or implementation errors
This inability of an organization is resulting in catastrophic application failures where not only is money being misspent, but reputations of otherwise smart professionals are being smudged.
Adding to these challenges, another big challenge for the senior executives is gaining access to the right testing tool.
The Right Testing Tool
Along with good testing processes and people, testing tools are an integral part of the trio that boosts the speed and quality of software testing programs. Testing tools allow you to leverage the testing servers to create, maintain and run testing scripts, both manual and automated. A Good software testing tool provides a turn-key solution that allows to focus on creating robust and efficient tests, as quickly as possible. Such tools provide the extra vigour that is required to execute successfully. This is when software testing services company comes into the picture.
These are independent technology company who take up outsourced software testing projects.
There primary objective to service the global technology customers in terms of Software Testing. These services are applicable across industry sectors such as retail, e-commerce, banking, gaming, technology, education, manufacturing, life sciences, healthcare and travel/transportation/hospitality.
Software testing services include
  • Test Automation
  • Installation/Configuration Testing
  • Regression Testing
  • Mainframe Testing
  • Continuous Integration Testing
  • Managed Crowd Testing
  • ETL Testing
  • Accessibility Testing
  • Exploratory Testing
  • Internationalization/Localization Testing
  • Automated Test Script Development
  • User Acceptance Testing (UAT)

Benefits of Partnering with Software Testing Services Company

  • Streamlined software testing process
  • QA Testers can optimize the QA system
  • Generates high-quality software projects, mobile-ready apps, and market-ready service deployments with lesser time to market.
  • Cost-benefit realities of QA effort to enhance the economic efficiency of the business
  • Improve the current QA thrust and improve it through automation and workflows
  • QA services ensures High RoI on QA investments
  • Provides 100% test coverage
  • Provides faster test cycle at reduced cost
We will discuss more about software testing services in our upcoming blogs.
Till then, stay tuned !!!!