Wednesday, July 22, 2015

iTools an alternative to iPhone Config Utility Tool






  • iTools is basically used to capture console logs as Apple is not updating iPhone Config Utility Tool any more
  • This tool can be downloaded from - iTools Download
  • This tool is available for Windows.



  • Below are the steps to use iTools to capture console log of an iOS Application:

    1. Download and install the latest iTools application
    2. Open the iTools, it will appear like below screen

    3. Now connect your iOS device with the laptop/computer
    4 Below will be the screen with all the info of your device

    5. Click on Toolbox(Icon link on top right side of iTools)


    6. Click on Real-time logs and you will see the device console logs
    7. Click on save button to see the logs and attach them in bug/defect

    Note: Do no use console log for long duration as iTools hangs when used for more than 1 hour


    Sunday, December 7, 2014

    Selenium Interview Questions 1

    1. How can we select the value of Dropdown in Selenium Webdriver

    You should use Select Class and create object of Select class.

    Select dropdown = new Select(driver.findElement(By.id("abcdefg")));

    Below is Sample HTML

    <html>
    <body>
    <select id = "Name">
    <option value = "GK">Gaurav</option>
    <option value = "JD"> Jaideep </option>
    <option value = "AN"> Arjya </option>
    </option>
    </select>
    <body>
    </html>

    To select its option say 'Gaurav' you can do

    dropdown.selectByVisibleText("Gaurav");
    or
    dropdown.selectByIndex(1);
    or
    dropdown.selectByValue("GK");

    2. Types of Wait in Selenium Webdriver

    There are three types of wait in Selenium: a) Implicit Wait b) Explicit Wait c) Fluent Wait

    a) Implicit Wait: 

    The purpose of Implicit wait is to wait for a set period of time before moving to next line of code 

    The syntax for Implicit Wait is:

    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

    3. Why We do not require the to Set System Property to Use Firefox Driver in Selenium WebDriver

    Because Firefox driver is included in the selenium-server-stanalone.jar . The driver comes in the form of an xpi (firefox extension) which is added to the firefox profile when you start a new instance of FirefoxDriver.

    4. How can we accept Untrusted SSL certificate in WebDriver for Chrome , IE and Firefox Browser

    Firefox:

                    FirefoxProfile profile = new FirefoxProfile();  
    profile.setPreference("setAcceptUntrustedCertificates","true");  
    driver = new FirefoxDriver(profile);  

    Chrome:
    System.setProperty("webdriver.chrome.driver",
    "Path to ChromeDriver//chromedriver.exe");
    DesiredCapabilities capability = DesiredCapabilities.chrome();
    capability.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
    driver = new ChromeDriver(capability);

    IE:

    System.setProperty("webdriver.ie.driver",
    "Path to IEDriver//IEDriverServer.exe");
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);      

    WebDriver driver = new InternetExplorerDriver(capabilities);

    Tuesday, July 29, 2014

    Need for Emulators

    Mobile apps and mobile internet usage is growing exponentially. As more and more companies roll out mobile business-critical applications, such as mobile banking, commerce or health apps. Accordingly, companies require mature mobile testing solutions that allow them to deploy and support their mobile application development in a timely and cost-effective manner, while reducing their risk exposure.
    Emulators are virtual mobile device that runs on your computer and it helps you develop and test applications without using a physical device.
    Emulators are available and are widely used for both manual and automated mobile application testing. They are powerful tools for developing mobile applications; they have 
    unique features which enable them to provide a rich set of development tools as well as an integrated debugging environment and in most cases are available for free from the vendors.
    Emulators are broadly divided into OS Emulators like Android sdk , Device Emulators and Browser emulators.

    • OS Emulators: These are emulators which are provided by the operating system providers like Windows Mobile emulators by Microsoft and emulator for Android by Google. These can help you in testing your mobile applications and mobile.
    • Browser Emulators: These are the emulators (user agents) which comes in chrome and safari browser by default & as a plugin for Firefox and IE cab simulate mobile browser environments. They are useful verifying the functionality available in a particular mobile browser on that particular device, helpful in mobile website testing and you cannot test mobile applications (native & Hybrid) on it.
    • Device emulators: These are generally provided by device manufacturers and simulate the actual device. They are really helpful for testing on that particular device. 

    Benefits of Emulators:
    • The most obvious advantage is price. In most cases, mobile emulators are completely free. All you need to do is download the software, install on your PC, and you're ready to go.
    • There are specific situations where the deadline to produce text execution results are short and purchasing the required mobile devices may be not possible. Thereby it might be necessary to use the emulator/simulator in these circumstances for testing the relevant mobile applications which need to be tested
    • The emulator is usually part of the SDK provided to developers. Due to their integration with the development environment, mobile emulators provide the developer or tester with access to detailed information such as debugging information which is very important for the development phase. This allows for convenient step-by-step debugging of your application on the emulator.
    Limitations of Emulators:
    • Emulators are slow in comparison to real devices.
    • Emulators are not reliable as it cannot emulate the actual device behaviour of real devices as it uses the memory and processors of the computer on which they are installed which are generally powerful in comparison of real devices.
    • You cannot test low battery, battery removal scenarios on emulators.
    • Real time interruptions from call and SMS cannot be tested on emulators.
    • You cannot test network specific behaviours like how application behaves on 2G, 3G, Wifi networks.
    • You cannot test the emulators on the move.
    • You cannot test the camera features on emulators
    • The emulator cannot properly emulate the exact colour display of the devices when the real device is in sunlight or in black
    In order to ensure high quality with respect to network issues, location-based services and true user experience, it is recommended to test application on both emulators and real devices. 

    How to enable developer options on Android 4.2 and Above

    Android OS developers at the time of release of OS 4.2 made a change in settings section due to which developers options are hidden in new phones running on OS 4.2 & above, this option is very useful for developers and testers for capturing logs etc.
    Steps for enabling developers option:
    • Go to Settings section on device.
    • Tap on About phone
    • Look for “Build number” row under About phone
    • Tap on Build number for 7 times then you will see “You are now a developer” toast appear on screen 
    • Now tap on back and you will see Developers options above About phone 
    • Tap on Developers options.
    • Look for USB debugging option and tap on check box, you will see a popup, tap on ok
    • Now you can use this device for testing and log capturing using monitor tool or adb command of android sdk.


    Monday, July 21, 2014

    Types of Testing for Mobile Application Testing

    a) Functional Testing: The functional testing of any app consist of the implementation of the required functionality for the implementation of a mobile app. It consist of three sub-characteristics which lead to different types of tests like Completeness of all required functionality, Accuracy of data processed by application and Suitability of application for the intended use.
    It also take cares of synchronization and resource sharing to avoid conflicts and deadlocks when we work with client server architecture applications.
    b) Security Testing: In security testing the encryption/decryption technique of application is taken into account with the facility that sensitive should store on device should always appear in encrypted form and if application require that data for verification only then it should not store data like passwords/PIN codes.
    We also verify that when working with multi user support application that in simultaneous transactions or requests that data should not interfere with each other.
    The app has to be resistant against threats like listed in Microsoft’s “STRIDE” model (Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege)
    If application supports payment transitions than it must confer with Payment Card Industry Data Security Standard (PCI DSS) and Payment Application Data Security Standard (PA DSS) guidelines.
    c) Performance Testing: User expectations in the speed of a mobile app is often higher than that in a comparable desktop application, the hardware is less powerful than a desktop PC, this leads to a high demand for performance optimization. The performance of application can vary because of bandwidth and latency of the data network affect the speed of data transfer and delays in the app sending and receiving data, for client-server or cloud apps, the performance of the server also influences the performance of the app and performance of the device itself limits the execution speed of the app code.
    d) Usability Testing: This includes text visibility in the selected language, navigation between screens, and verification of functionality, Clear UI design, memorable navigation paths and transparency of the app state are fundamentals for good usability.
    e) Compatibility Testing: This entails validating the application for different mobile devices, OS versions, screen sizes, and resolutions as per the requirements, checking if integration server changes, checking the app isolation with other apps on the device.
    f) Marketplace guidelines compliance Testing: Depending on the App Store Provider, an app has to pass certain release checks before being published. Minimal review procedures cover malware checks and identity verification of the developer. Other stores, like e.g. the Apple AppStore, provide extensive rule sets of checkpoints to be adhered to.
    It must be integral part of a mobile development and test strategy to early test for these checkpoints in order to minimize the risk of rejection by the store review team.
    g) Robustness Testing: The application should have ability to handle wrong input, low memory, interrupt by incoming calls or messages, sending the app to the background and then launching app, using application in low memory scenarios & should give proper message as and when required, power off/battery drainage which leads to turning off  the device while using app etc.

    h) Localization Testing: The application should have ability to work with different language settings and application should work fine in different date formats, different phone number formatting etc

    Friday, July 18, 2014

    Device Selection for Testing

    Emulators and Simulators: Use of emulators & Simulators for testing is a cost effective solution but these have their own limitations as all features of app like camera etc cannot be tested on these.
    They are also very useful in terms of usability, and especially design, including data input, screen size, button use, etc. 

    Cloud Testing Solutions (Remote Real Devices):  The QA team can use the mobile cloud computing environment to deploy and test an application. In the cloud approach, the task and data are kept on the Internet rather than on an individual device, providing on-demand access. By reducing the complexity of the implementation, companies that take advantage of cloud services can significantly reduce project costs and boost the return on investment of a mobile computing solution. 

    The big players in cloud testing solution are:
    1. DeviceAnyWhere(http://www.deviceanywhere.com)
    2. Perfecto Mobile (http://www.perfectomobile.com)
    3. Appthwack (https://appthwack.com)

    Real Devices:  The QA team should use real device for testing app before release as this is most important since the Mobile application will always be used on mobile devices by end users who may access the application from a remote area with fluctuating network signal strength.
    One of the biggest challenge in mobile application testing is selection of mobile devices for testing, the selection of mobile device involves various criteria like OS Version, Display Density, CPU type, memory etc.

    When testing enterprise applications, a user survey or device model data from internal systems can be a good source of information to determine the mix of target devices for testing.

    Criteria in which we can select whether we should go for manual or automation testing

    1. If we have to only testing once: We should Use manual testing –if only one function of one mobile app is being tested, it doesn’t make sense to spend the time and energy to create an automated testing script. Although manual testing may take longer than running an automated test, script creation takes time. If there isn’t a case for re-use, there is really no need to tie up automation experts with script creation for a single test case.
    2. Regression tests: We should Use automation testing – Each time a developer releases new code, a regression test is needed. Because regression tests are repeated, automated testing is a perfect fit. While there is some time needed on the front end to develop test scripts, testers will save time because they won’t have to start from scratch with the test each time. We should try to create our script in such a way that most common functionality test scripts should be created in such a way that we can reuse them in other projects also whenever we encounter same problem.
    3. Complex tests scenarios: We should Use automation testing – Complex tests have multiple components that need to be tested at once. After testers familiarize themselves with the app’s functionality, an automated test script can help them run through a variety of tests quickly to speed the testing process. 
    4. New functionality: We should Use manual testing – because If an app contains new functionality, it should be tested manually. With new functionality, testers won’t know what type of automated test script to write prior to performing a manual test.

    Tuesday, May 6, 2014

    Key Challenges in Mobile Application Testing

    1. Variety of Mobile Devices- Mobile devices differ in screen sizes, input methods (QWERTY, touch, normal) with different hardware capabilities.
    2. Diversity in Mobile Platforms/OS- There are different Mobile Operating Systems in the market. The major ones are Android, iOS, SymbianWindows Phone, and BlackBerry (RIM). Each operating system has its own limitations. Testing a single application across multiple devices running on the same platform and every platform poses a unique challenge for testers.
    3. Mobile network operators- There are over 400 mobile network operators in the world out of which some are CDMA, some GSM. Each network operator uses a different kind network infrastructure and this limits the flow of information.The performance of a carrier’s network can have a huge impact on the user’s experience with an app.
    4. ScriptingThe variety of devices makes executing the test script (Scripting) a key challenge. As devices differ in keystrokes, input methods, menu structure and display properties single script does not function on every device. For longer duration projects we can leverage automation. Smoke testing or regression testing can be automated up to a certain limit.
    List of available automation tools for mobile application testing:
    -  Robotium (specifically for Android)
    -  See Test (both for iOS and Android)
    -  Monkey Talk (both for iOS and Android)
    -  Calabash (both for iOS and Android)
    -  Eggplant (both for iOS and Android)
    -  Appium (both for iOS and Android)
    -  Silk Test (both for iOS and Android)
    -  Frank (specifically for iOS)
    -  KIF- Keep It Functional (specifically for iOS)
    5. Evolution of different mobile OS versions: Like Android versions 1.0 to 4.4(Kit Kat Latest,at the time of writing) etc and iOS versions from iPhone OS 1.0 to iOS 7.1 (latest, at the time of writing) etc.


    6. Tight Deadlines: Teams are being asked to produce value in weeks instead of months or years, which creates pressure on both developers and testers. It’s sometimes not possible to buy more time for testing or bug fixing activities, then you have to report the issues while testing the application and getting them fixed parallel, side by side to testing from development team. It saves time remarkably and hence productivity increases. While developing mobile applications developer and tester need to work very closely to meet such tight deadline. 

    Wednesday, February 19, 2014

    What is the use of Strict Mode in Android developer mode

    Strict Mode is a mode which is used by developer as a preventive tool which helps them in finding flaw in there code by detecting the part of code which was is using unwanted resources of the device and due to which your application is going to crash, this tools is used to setup thread and virtual machine policies for any application and getting alert when any violation of these policy happen. It helps in avoiding (application not responding) ANR message of your live application or production builds.

    This tool is used in development phases.

    For detailed description you can goto android developer site: http://developer.android.com/reference/android/os/StrictMode.html 

    Friday, October 11, 2013

    Mobile Application Testing Interview Questions

    Note: These questions were asked to me by someone to answer,so it might be these questions might appear on some other blogs but answers are purely mine.

    1. How to sign the Android Build (APK)? 
    Using IDE like eclipse when you create a debug build the build is by default signed using the key generated by the keytool utility present in JDK.

    In release build you sign by your private key using these steps (presuming that you already have a private key to sign your application if not you can go through this URl for more info http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html):
    a)open your project in eclipse
    b)Press right click on mouse and then click on export  then click on Android
    c)Then click on Export Android Application then click on next button
    d)Select the name of Project (What is of your application) then click on next
    e)Select Use existing Keystore and browse the path of your private keystore
    f)Enter Password of keystore in required field and click on next
    g)Select Use existing Key and provide password and click on next
    h)Now click on finish 

    2. Which are the different Internet protocols? 
    TCP - Transmission Control Protocol : TCP is used for transmission of data from an application to the network. TCP is responsible for breaking data down into IP packets before they are sent, and for assembling the packets when they arrive.
    IP - Internet Protocol:  IP supports unique addressing for computers on a network. Data on an Internet Protocol network is organized into packets. Each IP packet includes both a header (that specifies source, destination, and other information about the data) and the message data itself.

    3.Have you ever done Security Testing on Mobile Devices/Apps? What kind of Security have you performed for Android & iOS
    You have to check and test unlock  patterns, passwords, by creating multiple profiles if you phone supports it.
    For App you have to check App permissions, Need to test the data encryption if supported in OS or not. You should verify is data leaking to log files, or out through notifications& also server side control.
    For mobile websites use tools like SQL Inject Me, XXS Me, WebScarab. A web proxy can also be used to intercept all mobile device traffic to monitor data and test for security issues.


    4. How do you Find the UDID of the iOS devices ? 
    • Connect the Device to iTunes 
    • Click on Device name present on left side of Panel 
    • Click on Summary (It shows device summary) 
    • Click on Serial number  
    • It shows you the 40 digit hexadecimal number

    Use of UDID: It is basically used for Device Provisioning.

    For QA you have to just copy and paste it using Edit button of iTunes and provide this number to developer so that they can add it to provisioning file which came along with testing builds.


    5. What are the different types of IP’s ? 
    1) Static IP address : It is that IP which is unique for one customer and he will always get same  IP address
    2) Dynamic IP address: Its is that IP that whenever you connect to internet you get a new IP for your machine.
    Also we can classify IP’s into:  
    Global IP addresses : These are unique and cannot be shared by two or more computers. 
    Private LAN IP addresses: As name suggest they are for private LAN network and they cannot be directly connected accessed from global Internet.

    6. How do you assign IP’s to android Devices? 
    I am providing steps for assigning static IP for as you need not to assign any IP which Dynamically they are assigned.
    Steps are:
    1. Click "Settings.
    2. Click "WIFI."
    3. Connect any WIFI
    4. Tap and hold on your WIFI network
    5. Tap on Modify Network
    6. Select or check the Show Advance Options
    7. Dismiss the keyboard using back button
    8. Tap on IP settings(DHCP) and select static 
    9. Enter new IP settings as you want

    7. What is the latest version of iOS ? iOS 7.0.2(At the time of writing this blog)

    8. What is the latest version of Android OS? 4.3(Jelly Bean)(At the time of writing this blog)

    9. List down the Mobile Test Automation Tools? 

    Popular Open Source Tools:
    a)  MonkeyTalk  for Android, iphone 
    b)  Robotium  for Android
    c)  Selenium for iOS & Android
    d) Appium for iOS & Android
    e) Frank for iOS
    f) Calabash for iOS & Android

    Paid Tools :
    a) Device Anywhere
    b) SeeTest
    c) PerfectoMobile
    d) ZapFix 

    10.What is your approach while Testing ?
    Following Test Strategy can be followed while testing Mobile Application:
    • First and foremost point is application installation on device , the application installation testing that application should be easily and completely installed on device.
    • Then comes the smoke or sanity testing, do basic verification of application whether it is testable or not, if no then file a bug or suspend the testing effort.
    • Then do the functionality testing of Application, whether it is meeting the functional requirement or not.
    • Then verify the GUI of application.
    • After this much is done you have to take care of the
    • Performance of application, i.e. how much time application screens are taking in responding to user action for static applications.
    • Network testing i.e., using application on EDGE, WIFI, 3G or 4G networks, Airplane modes and observe the behavior of application as some applications crashes on low networks.
    • Testing call feature from application (if application has that feature) with and without SIM card installed in it.
    • As now a day’s most of the devices are coming with touch screens so you have to take care to multi touch using more than one finger, tap & hold on screen and just a small touch etc.
    • Open all the native application if device is multi tasking then observe the response/behavior of application under test.
    • Do orientation multiple times if application support orientations. 
    • Then check the uninstallation Testing of application i.e., all the components of application should get removed from device when user uninstall it   

    After these things are done you have to take care of various other scenarios like 
    • Interruption in the process of installation and at various other place of request/receiving from server etc by receiving call/SMS etc ,low battery indicator, Alarm/Calendar event indicators .
    • Application specific testing scenarios depend on which type of application you are testing.
    • Check the compatibility of application on different hardware’s which includes different screen size/resolution on real devices like iPhone platform check on iPhone/iPod touch and on iPad which are running on different or same iOS or on different manufacturer devices of same /other device OS like Android or Windows phones or on different emulators as emulators always do not provide complete support to all kind of application.
    • Do some destructive testing like passing large input at different places or by doing something which is not expected.
    • Security Testing which also depends upon application to application, basic application like password encryption etc
    • Retesting and regression testing are continuous part of any kind of testing


    11. Which is the prominent feature introduced in iOS 7 which are very important?  
    Control Center, AirDrop for iOS, and smarter multitasking

    12. Which are the prominent feature introduced in iOS 6? 
    New privacy settings, Google Maps & YouTube removed, New Maps introduced, Intelligent Siri, Facebook comes integrated , Passbook app.

    13. Which is the prominent feature introduced in iOS 8 which are very important? 
    AirDrop between mac, iPhone & iPad, Health and HealthKit, Interactive notifications, iCloud Drive, Customized Keyboard and HomeKit

    14. Which is the prominent feature introduced in Android L a.k.a 5.0 or Lollipop which are very important? 
    Material Design






    Interview Questions on Mobile application Testing

    Interview Questions on Mobile application Testing.

    These are some of the basic questions asked in interview of Mobile application Testing.I am writing my point of view please add or delete content in the answers as per your knowledge.

    Question 1:  What is mobile application testing and how is it different from Mobile Testing?

    Answer: Mobile Application Testing (MAT) is the testing of application on mobile devices and it is different from Mobile Testing (MT) in the term that in MT we focus on the native application features of the Mobile devices like Call, SMS, Media Player etc while in MAT we focus only on the functionality & features of the application under Test. i.e, MT is generally done in handset makers like Samsung, HTC, Nokia, Sony, Apple etc while MAT is done in various product based companies and through there vendors like service based companies which  do testing of various mobile applications products on different devices like Gmail on mobile, Skype on mobile etc. 

    Question 2: What kind of application you have tested and on which platform of mobile ?

    Answer: The kind of application depends upon project on which you have worked on like from multimedia application, banking applications, healthcare applications, social networking application so this part is specific to your particular application and any one can explain about his/her work easily.

    Regarding Second part of question:

    Platform is also specific to your project/product on which you worked but now a day’s generally all applications are generally developed for iOS (Apple), Android, Blackberry & Windows platforms mainly and on Symbian & Bada platforms also.
    While explaining these platforms the interviewers generally want to know about your knowledge of devices or OS that what are specific features on these devices/OS and how does these impact any kind of application.

    For example-
    • What is the extension of application developed on different platforms OS : Answer is *.ipa for iOS,*.apk for Android, Blackberry *.jad, for windows  phone *.exe and for palm *.prc file.
    • How can a testable build installed on device: For iOS platform iTunes is required, for Android you need android SDK &; adb install command is used to install build on device.
    • What is latest OS version: 8.0 beta for iOS , Blackberry has OS 10.2.1, Android has 4.4.3 (Kit Kat){at the time of writing blog} 
    Question 3: What are the names of various Android OS (Generally asked about latest and just previous) ?

    Answer: 

    Android 1. 0  (Name not applicable):
    ·  Was released on 23 September 2008. The first Android device, the HTC Dream (G1),
    ·  Download and upgrade support from Market.
    ·  WiFi and Bluetooth support.
    ·  Google Sync support.
    ·  Maps with street view  support
    ·  Voice dialer without typing Name.
    ·  Static Wallpaper Support      

    Android 1. 1  (Name not applicable):
    ·   Was released on 9 February 2009. 
    ·    Support Map view with business details
    ·    Support Saving the attachment from MMS.

    Android 1. 5  (Cupcake):
    ·   Was released on 30 April 2009 based on Linux Kernel 2.6.27.
    ·   Support third party virtual keyboard with text prediction.
    ·   Support widget
    ·   Supports video Recording
    ·   Copy Paste feature
    ·   Shows user picture & thumbs for Favorites
    ·   Animated screen transitions. 

    Android 1. 6  (Donut):
    ·   Was released on 15 September 2009 based on Linux Kernel 2.6.29.
    ·    Voice and text entry search
    ·    Multi-lingual speech synthesis engine
    ·    Updated technology support for CDMA/EVDO802.1xVPNs, and a text-to-speech engine

    Android 2.0/2.1 (Eclair):
    ·    Was released on 26 October 2009 based on Linux Kernel 2.6.29.
    ·    Can add multiple account and performed sync.
    ·    Exchange Email supports
    ·    Ability to search saved SMS or MMS
    ·    Improve Google Maps
    ·    Addition of Live wallpaper
    ·    2.1 SDK was released on 12 January 2010

    Android 2.2 (Froyo):
    ·    Was released on 20 May 2010based on Linux Kernel 2.6.32.
    ·    Speed, memory and performance optimization
    ·    Support for the Android Cloud to Device Messaging (C2DM) service, enabling push notifications
    ·    USB tethering and Wi-Fi hotspot functionality
    ·    Support for installing applications to the expandable memory

    Android 2.3 (Gingerbread):
    ·     Was released on 6 December 2010 based on Linux Kernel 2.6.35.
    ·     Updated user interface design with increased simplicity and speed
    ·     Native support for SIP VoIP internet telephony
    ·     Support for Near Field Communication (NFC)
    ·     Supports for multiple Camera , Front Camera Support,
    ·     OS 2.3.4 supports voice & Video chat using Gtalk.
    ·     OS 2.3.7 introduced Google Wallet support for the Nexus S 4G

    Android 3.0 (Honeycomb):
    ·     Was released on 22 February 2011 based on Linux Kernel 2.6.36.
    ·     First android OS Tablet support for Motorola Xoom .
    ·     Multi-tasking Supports
    ·     Multiple browser tap
    ·     Supports Video Chat by Gtalk.
    ·     Supports for Multi-Core processors.
    ·     New two-pane Email UI
    ·     Resizable home screen widget
    ·     Supports Joysticks and gamepads.
    ·     Improved Adobe Flash supports in browser.
    ·     Added System Bar, featuring quick access to notifications, status, and soft navigation buttons, available at the bottom of the screen.
    ·     Ability to view albums and other collections in full-screen mode in Gallery, with easy access to thumbnails for other photos

    Android 4.0 (Ice Cream Sandwich):
    ·    Was released 19 October 2011
    ·    Speed, memory and performance optimization
    ·    Support for the Android Cloud to Device Messaging (C2DM) service, enabling push notifications
    ·    Separation of widgets in a new tab, listed in a similar manner to apps
    ·    Ability to access apps directly from lock screen
    ·    Unlock, a feature that allows users to unlock handsets using facial recognition software. 
    ·    Supports Google+ , hangout feature.


    Android 4.1 (Jelly Bean):
    ·    Was released 27 June 2012
    ·     Google Voice Search and Google Now
    ·      Smart App Updates
    ·      High Resolution Contact Photos
    ·      Expandable Notifications
    ·      Resizeable App Widgets

    Android 4.2 (Jelly Bean):
    ·    Was released 13 November 2012
    ·     Ability to swipe to open camera from locked screen
    ·     New redesigned camera app
    ·     New redesigned clock app
    ·     New Gesture Keyboard

    ·     Always-on VPN


    Android 4.3 (Jelly Bean):
    ·    Was released 24 July 2013
    ·     Autocomplete in dial pad 
    ·     Support to high performance graphics
    ·     Location detection through Wi-Fi
    ·     Restricted profiles - put your tablet into a mode with limited access to apps and content

    ·     Bluetooth Smart support


    Android 4.4 (Kit Kat):
    ·    Was released 31 October 2013
    ·     Dialer Search which help in searching nearby thing by phone number
    ·     Hangouts SMS Integration
    ·     Wireless printing capability
    ·     Music and movie-seeking from lock screen
    ·     Location in Quick Settings
    ·     Downloads app redesign


    Few more question n answers

    1. What are some tools used to capture app logs on Android: 

    We can use monitor.bat file located under tools folder of android sdk to see log and we can select and save the log from it.other than this alogcat is a free log getting tool which is present in Google Play

    2. Screenshot capabilities for Android, and Android phones: 

    Same with Android Debug Monitor (Monitor.bat) if device is connected use screen capture  feature and also for Samsung device like note2: Power and Home buttons at the same time & wait for capture sound

    3. How do you perform end to end testing in respect to mobiles:

    It totally depend upon the project to project,can you please elaborate on the question because this is project specific as starting from installation and version upgrade ,uninstallation etc we do apart from functional testing. Security and Performance of application also need to be tested.

    4. Some issues you faced during testing in regards to the platforms you used: 

    Some time some issue appear on particular version device and OS of device also do matter.

    5. Issues faced with cross platform testing: 

    Generally the issue depends upon the different OS/device version, it might be same thing is working on one OS while it might not work on another version.Example we faced issue that our application was working fine on iOS 6.x version devices but on tapping few modules on iOS 5.x devices application crashes and same happened with 2.3.5 Vs 

    6. What kind of testing did you perform (functional, interruption, connectivity, etc) : 
    Very first test we have to perform installation , after that we check the basic functionality and after that we check the connectivity related stuff of the application, Then we uninstall the build and verify how application respond when we interrupt during installation and also we check interruption scenarios when our application request network call .

    We also do low network/poor connectivity testing during network call. Upgrade from older version to newer version. navigation in the application without network if it supports this feature.Compatibility of  app on different kind of phones like having external buttons & devices do not have external buttons or other than this flip phone etc

    1) When performing end to end Mobile Testing what major criteria are taken into consideration

    Major areas are Installation,first time launching application without having network , uninstallation of app, orientation of app if it support it , testing application performance on different kind of devices and network scenarios , testing the application response how it is responding when invalid user credentials are provided and try to change them after installation n so on.

    Also if your application is accessing network then you must see the logs generated during that period so that sensitive information should always go in encrypted form, like if it is payment related CC number etc . 

    2) Examples of Defects found during Mobile Testing

    Issue is saving contact on phone memory or deleting it or some time conference call issue while an active call is there n like that.

    3) Testing on Different Networks (WiFi/Cellular Data Plan)

    We have to test the application on 2G/EDGE, 3G and Wifi network because some times application faces issues on slower networks 

    4) How do you test patches/defect fixes intended for an app already in production 

    We generally do regression of relative module and mainly focus on the area which are related to the bug fixes as per  the developer as we can not do entire regression in very short span of time, so just do sanity of rest of the application modules on high priority devices(on which you have major customer base if you have crunch of time members & if team size is not an issue do sanity on all major devices)

    5) what major criteria are taken into consideration when testing sms/mms/call logs

    6) Defect Tracking Mechanism

    This is of same nature like any other software testing project using any tool like Jira, Bugzilla etc

    7) What are the tools used in debugging ?

    We generally use logs to see the cause of issue where the failure is occurring , so for iOS iPhone configuration utility  for Android Monitor.bat etc can be used and if you provided logs from these tools developer can easily under stand the cause of issue.

    8) Testing performed/modules handled by testers based on their project

    We generally divide the modules among the team members and then shuffle the modules among team member with different devices.

    9) Data Generation Tools

    This is generally done by the Use cases, SRS and FRS document as you application specific test data can be only created using these things.

    10) what tools you use for performance testing and automation ?

    @ Performance testing of the Web service which your application uses you can use jMeter, it is an open source tool which can be used to test the api's performances.

    @Automation: It is very subjective term & totally depends on the project need and type of application , there are several paid tools available in the market like SeeTest, Ranorex, Silk Mobile etc while good free automation tools are  Calabash, Appium , Robotium for Android, KIF for iOS and using free tools you require some coding skills like ruby or Java.
    If you can send me you specific requirement, i can help you more on this.

    11) tell about filter what you can create while checking logs.. ?

    Filters helps you in finding relevant information about your application and you can create filter based on the application package name like com.abc.com and save this filter by name as My application ,when you click on this filter then you will see only logs which are from your application.

    You can create filter based on Log tag which is related to the thing that line is doing example if you have placed system.out to print the output put then you can create a filter by tag System.out, then it will short list all the print output.
    And you can create filter by Choreographer which helps in finding the skipped frames if you want to see it.

    You can create filter corresponding to your PID and log message which is coming as text also.

    12) How to check CPU usage and memory utilization of an app ?

    You can use various tools like Usemon,CPU Usage Monitor, CPU Usage& Process List Viewer etc available in Google Play store and if you want to use sdk, then you can use systrace feature of Android Monitor

    13) one thing which you cannot do with Emulator but can do with real device? 

    You can test the interrupts like phone call, messages, battery drain out completely while you were using the application under test, low battery scenarios etc  on real devices , memory card mount/unmount scenarios , actual performance of you application can be test on real devices only, Bluetooth related testing can be only done on real devices.


    14) Types of mobile applications? 

    Mobile applications can be broadly categorized into three categories i.e, Native app, Web app and Hybrid App.

    Native App: Native app are developed specifically for one platform, which is coded with a specific programming language (like Objective C for iOS, Java for Android) and installed directly onto the device and can take full advantage of all the device features — they can use the camera, the GPS, the accelerometer, the compass, the phone book etc. Native apps can use the device’s notification system and can work offline. Native apps are installed through an application store (such as Google Play or Apple’s App Store).Native mobile apps provide fast performance and a high degree of reliability. Example of native app: Temple Run, Candy Crush etc. 
     
    Web App:Web applications are mobile web portals that are designed, customized and hosted specifically for mobiles. They are accessed through the mobile device’s web browser using a URL. Web apps became really popular when HTML5 came around and people realized that they can obtain native-like functionality in the browser. Mobile web applications cannot use device functionality. Example of web app: google.com, m.snapdeal.com, m.yahoo.com etc.

    Hybrid App:Hybrid Apps are Web apps embedded in a native app, run on the device, and are written with web technologies (HTML5, CSS and JavaScript). Hybrid apps run inside a native container, and leverage the device’s browser engine (but not the browser) to render the HTML and process the JavaScript locally. A web-to-native abstraction layer enables access to device capabilities that are not accessible in Mobile Web applications, such as the accelerometer, camera and local storage. An hybrid app is NOT tied to any platform or any particular mobile device. So, it can run on any device once built. Write Once Run Anywhere (WORA) type of app. Example of hybrid app: Flipkart, Facebook, Twitter etc.


    Full Form of various application extensions:

    1. iPA: iOS APP Store Package
    2. APK: Android Application Package file
    3. exe: Executable File
    4. jad: Java Application Descriptor 
    5. prc: Palm Resource Compiler