Jenkins Basics

Install Jenkins 
Open Command Prompt and Type"java -jar path of jenkins.war file"
Create account
Use "http://localhost:8080"  to access jenkins

Steps To Demo Jenkins
1)Create Test Project
1a)Right click on java file and TestNG->Convert to TestNG
2)open cmd and go to project folder ex. cd C:\AndroidDemoworkspace\JenkinsAppium
3)Set Classpath ex. set classpath=C:\AndroidDemoworkspace\JenkinsAppium\lib\*;C:\AndroidDemoworkspace\JenkinsAppium\bin;
4)Run Test ex. java org.testng.TestNG testngappium.xml and Check Test Script working or not.
5)Create batch file . Open notepad file -> enter "java -cp bin;lib/* org.testng.TestNG testngappium.xml" and save as 
   "run.bat"

6)Open Jenkins console and login
7)Create new job. Click on Item ->Name of Item, select freestyle project and save it
8)Click on advanced setting and tick custom workspace and enter project path ex. C:\AndroidDemoworkspace\JenkinsAppium, 
   select build with execute Windows batch file , apply and Save it.

9)Build now and click on build history ->console , We will get output

Note:- No UI appears while executing Test case ex browser actions 

Run Test through command Line

    cd C:\AbcAutomation\AbcTestJenkin       // set our Project location
    set classpath=C:\AbcAutomation\AbcTestJenkin\lib\*;C:\AbcAutomation\AbcTestJenkin\bin\example\*;
                    \\ set lib and bin folder path
    java -cp bin;lib/* org.testng.TestNG testng.xml  //execute testng file of project

IPhone and IPad Resolutions (IPhone 8, 8 Plus and IPhone X)


Device            Portrait dimensions             Landscape dimensions
12.9" iPad Pro      2048px × 2732px                2732px × 2048px
10.5" iPad Pro      1668px × 2224px                2224px × 1668px
9.7" iPad           1536px × 2048px                2048px × 1536px
7.9" iPad mini 4    1536px × 2048px                2048px × 1536px
iPhone X            1125px × 2436px                2436px × 1125px
iPhone 8 Plus       1242px × 2208px                2208px × 1242px
iPhone 8            750px × 1334px                 1334px × 750px
iPhone 7 Plus       1242px × 2208px                2208px × 1242px
iPhone 7            750px × 1334px                 1334px × 750px
iPhone 6s Plus      1242px × 2208px                2208px × 1242px
iPhone 6s           750px × 1334px                 1334px × 750px
iPhone SE           640px × 1136px                 1136px × 640px


Android Globalization Best Practices

First, what is Globalization?
Globalization, also referred to as Internationalization or the i18n standard; is the process of designing 
a software application so that it can potentially be adapted to various languages and regions without engineering changes.

It's a process that affects how you engineer the UX, UI and code of your application. It's not an easy 
process to cover all aspects, but once you get your application guidelines right, and build your design 
and engineering processes around it, you should be able to pull it through.

What about Localization?
Localization; also referred to as i10n, is different from Globalization. Localization requires you to 
add appropriate resources to your software to ensure that a given country, locale, language, or culture
 is supported. Or, its the process of adding another language to your app, which is hopefully designed for i18n!

All Text Must be Resource Based
Well, this is a basic thing, but it is important to highlight. Don't hardcode any strings either in your 
screen layouts nor in your application code; strings.xml is a key artifact in your application. If you mistakenly 
hardcode strings, it will be a costly process to fix.

Android Studio will warn you if you leave a string hardcoded, but I prefer to treat these as errors and log an 
issue when one is detected and fix prior to a release.


This is a common pitfall that designers fall in. We usually design our layouts with a single language in mind;
 typically English, and assume that translations will fall into place; Unfortunately, not all languages are 
equal. You should always allow extra space in your layout for text to grow and shrink based on the language 
translation. Perhaps leave a 40-50% space to cater for that. In some cases, you might have to create separate 
layouts to cater for extreme cases.

The IBM Globalization Guidelines page has a good table that compares text size increase when translating from English.

Number of Characters in Text Additional Physical Space Required
Up to 10 100% to 200%
11 to 20 80% to 100%
21 to 30 60% to 80%
31 to 50 40% to 60%
51 to 70 31% to 40%
Over 70 30%
This calculation is based on the number of characters in the text string and includes the spaces and punctuation 
marks within the string. For example, the string "Hello World!" contains twelve characters.

Add Comments to String Resources
There are many cases where strings we use make sense in a one language but can't be translated directly to other
 languages. Especially if we use playful terms. In these cases, ensure your resource file has comments on the context 
of the messages to help your translators better understand the message you need to convey and provide proper translations 
in the target language; whether in a localized playful manner, or a more standard language.

Never, Ever Concatenate
We tend to fall into the temptation of concatenating strings to build dynamic messages, and we forget that word ordering 
is different across languages. Whether we are adding user names, amounts, we should always use string formatting.



Use Proper Plural Strings

Don't try to build your quantity/amount texts in code by assigning plural nouns based on the value you have, as 
different languages will have different ways of representing amounts and quantities. So if you are trying to say: 
I ate 3 cookies, don't use the following resource strings


Handle Dates Properly

Date formats vary across cultures, so make sure that your application uses the correct format for handling dates
 by using the DateUtils and DateFormat classes. Don’t use hardcoded date formats such as MM/dd/yyyy, you’ll just 
confuse everyone.

You can use DateUtils to show a relative timespan string


It’s not only display that needs to be catered for. When you accept date values from users, or try to capture stamps,
 make sure you convert them to a standard culture-neutral format prior to storage. Otherwise, you won’t be able to 
analyze or render properly if a user switches cultures.


Dynamic Formatting

When you need to format or highlight part of the text you are showing (color, weight, etc.) don’t use index to 
manipulate a ForegroundColorSpan. This will get you in trouble with translated strings. Use HTML formatting 
instead within your resource strings.


   
Colors

This is a frequently missed one. Colors have different meanings in different cultures. For example, while Green
 is used to indicate positive increase or trend; like in a stock price, in China, Red is used for that. You should 
also cater for this and support different colors for different cultures.

Mobile Automation using Appium and Java (Page Objects)


********************************Main Test File:-*************************************************************
package com.example;
 import io.appium.java_client.android.AndroidDriver;
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.concurrent.TimeUnit;
 import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.remote.DesiredCapabilities;
 import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.openqa.selenium.support.ui.WebDriverWait;
 import org.testng.Assert;
 import org.testng.annotations.AfterTest;
 import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;

import com.example.pages.HannaPagesTest;
 public class HannaTest 
 {
  AndroidDriver driver;
  @BeforeTest
  public void setUp() throws MalformedURLException 
  {
      
      DesiredCapabilities capabilities = new DesiredCapabilities();
      capabilities.setCapability("deviceName", "ZX1B32FFXF");
      capabilities.setCapability("appPackage", "com.hannainst.hannalab");
      capabilities.setCapability("appActivity","com.hannainst.hannalab.ManagerActivity");
      driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
      driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
      WebDriverWait wait = new WebDriverWait(driver, 300);
      wait.until(ExpectedConditions.elementToBeClickable(By.className("android.widget.RelativeLayout")));
      
}
  @Test(priority = 0)
  public void checkAppElementPresent() 
  {
   HannaPagesTest hanna=new HannaPagesTest(driver); 
   if(hanna.verifyResult1("No Probe Connected"))
    System.out.println("App Launch TC Passed");
   else
    System.out.println("App Launch TC Failed");
      
  }
  
  @Test(priority = 1)
  public void CheckAppVersion() 
  {
   HannaPagesTest hanna=new HannaPagesTest(driver); 
   if(hanna.verifyResult2("Version 2.0.0 Beta"))
    System.out.println("App Version TC Passed");
   else
    System.out.println("App Version TC Failed");
      
  }
  
  
  @AfterTest
  public void End() throws IOException 
  {
   
   //driver.removeApp("com.hannainst.hannalab");
   driver.resetApp();
   driver.quit();  
   //driver.close();
  }
 }


************************Page Object Test File************************************
package com.example.pages;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.PageFactory;

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.pagefactory.AndroidFindBy;
import io.appium.java_client.pagefactory.AppiumFieldDecorator;

public class HannaPagesTest 
{
 
 public HannaPagesTest(AndroidDriver driver)
 {
  PageFactory.initElements( new AppiumFieldDecorator(driver), this);
 }
 @AndroidFindBy(name="No Probe Connected")
 public static WebElement text1;
 
 @AndroidFindBy(xpath="//*[@class='android.widget.ImageButton' and @content-desc='Navigate up']")
 public static WebElement text2;
 
 @AndroidFindBy(id="com.hannainst.hannalab:id/versionName")
 public static WebElement text3;
 
 public boolean verifyResult1(String result)
 {
  if(text1.getText().equals(result))
   return true;
   else
   return false;
 } 
 
 public boolean verifyResult2(String result)
 {
  text2.click();
  if(text3.getText().equals(result))
   return true;
   else
   return false;
 } 
   
 }

***************************************************************************************************************************

Regression Testing Tips for selecting Test Cases

Regression testing is selective retesting of a system or component to verify that modifications have not 
caused unintended effects in previously working modules of software/application. This type of testing is 
typically associated either as a ‘challenge’ or ‘unimportant’ by developers; but a good tester always enjoys
breaking the software to scour out each and every fault from it. Having said that even regression testing
can become a challenge for the testers as well. Here are some of the reasons:-

        1. The Number of test cases in regression suite increases with each new feature.
        2. Sometimes, the execution of entire regression test suite becomes difficult due to time and budget constraints.
        3. Minimizing test suite while achieving maximum test coverage is not a cake walk.
        4. Determination of frequency of Regression Tests after every modification or every build update or after a
           bunch of bug fixes is always a challenge.

The graph below depicts the same
                                     
         Hence selecting test cases for regression testing is quite a tricky task. Today, I am sharing some tips that 
         I found to be most effective while selecting test cases for regression testing

Below are tips:-

1. Include the test cases which have frequent defects:
   Some areas in product are so error prone that they usually fail with a small change in code. We can keep track
   of failing test cases due to such areas throughout the product cycle and cover them in regression test suite.

2. Include the test cases which verify core features of the product:
   Prior to designing of the test cases figure out all core features of application. Ensure that, test case cover
   all functionality mentioned in requirement document. One can make use of traceability matrix to make sure that
   no requirement is left untested.
   Example:- Client would never expect a Home Page/Login Page/Key functionalities of his application  getting failed.

3. Include the test cases for Functionalities which have undergone more and recent changes:-
   SRS keeps on getting updated. Sometimes, the updates are not in full change to the previous SRS. But to some extent
   (may be 15-30 %) changes may happen for every version upgrade. We testers have to agree that, it’s difficult to
   keep writing (modifying) test cases, as the SRS keeps on getting updated often and this leads to some end moment
   internal defects and changes into the code which in turn might break some already existing functionalities,
   So it’s a “Must” (a must with capital M ) to always include such test cases which has recent changes.

4. Include all the Integration test Cases:
   Even if Integration testing is a separate part of software testing cycle, its test cases should be included
   in regression test suite.
   A last moment fix, in already tested application can break the integrity between different modules. For 
   example, data might get lost across an interface, messages might not get passed properly or interfaces might not be
   implemented as specified.

5. Include all Complex Test Cases:-
   Some functionality of the system may only be accomplished by following some complex sequence of GUI events.
   For example, to open a file a user may have to click on the File Menu and then select the Open operation,
   and then use a dialog box to specify the file name, and then focus the application on the newly opened 
   window. Obviously, increasing the number of possible operations increases the sequencing problem exponentially.
   This can become a serious issue even if one of the steps is not working—A whole functionality comes to HALT,
   and End-User feels like a crap . That’s why all such complex test case should be included in regression test suite.

6. Prioritize the test cases for regression testing:
   Prioritize the test cases depending on business impact, critical & frequently used functionalities. It is always
   helpful if some analysis is done to find out what test cases are relevant and what are not. It is a good approach 
   to plan and act for regression testing from the beginning of project before the test cycles. One of the ideas is
   to classify the test cases into various Priorities based on importance and customer usage. Here it is suggested 

the test cases be classified into three categories:-





Priority-0 Priority-1 Priority-2
Sanity test cases which checks basic functionality(as per the SRS of product) and are run for pre-system acceptance and when product goes through major change. These test cases deliver a very high project value to both engineers and to customers. This includes the test cases which tests essential functionalities that deliver high project value to both engineers and customers. These are executed as a part of ST cycle and selected for regression testing on need basis. These test cases deliver moderate project value.
Selection of test cases based on priority will greatly reduce efforts spent on regression testing. 7. Categorize the selected test cases: – Regression testing becomes very difficult when the application scope is very huge and there are continuous increments or patches to the system. In such cases selective tests needs to be executed in order to save testing cost and time. Categorizing test cases makes this work easier. We can categorize them as 1) Reusable Test Cases: It includes test cases which can be repetitively used in succeeding regression cycles. This can be automated so that set of test cases can be easily executed on new build. 2) Obsolete Test Cases: These test cases are defect specific and can’t be used in succeeding cycles. Smart way is to use them is when relative defect occurs. 8. Choose the test cases on “Case to Case” basis: There could be several right approaches to regression testing which needs to be decided on “case to case” basis: •Case 1: If the criticality and impact of the bug fixes are LOW, then it is enough that a test engineer selects few test cases from TCDB (Test case DB) and executes them. These test cases can fall under any Priority (0, 1 or 2). •Case 2: If the criticality and the impact of the bug fixes are Medium, then we need to execute all Priority-0 and Priority-1 test cases. If bug fixes need additional test cases from Priority-2, then those test cases can also be selected and used for regression testing. Selecting Priority-2 test cases in this case is desirable but not a must. •Case 3: If the criticality and impact of the bug fixes are High, then we need to execute all Priority-0, Priority-1 and carefully selected Priority-2 test cases. •Case 4: One can also go through the complete log of changes that happened (can be obtained from Configuration management engineer) because of bug fixes and select the test cases to conduct regression testing. This is an elaborate process but can give very good results. I hope this will help you to find out what test cases should be included in your regression test suite. 9. Change the regression test cases whenever required. RESET of test case is not expected to be done often. Resetting of the test cases needs to be done with following considerations; a. When there is a major change in the product b. When there is a change in the build procedure which affects the product c. Large release cycle, where some test cases were not executed for a long time d. You are in the final regression test cycle with a few selected test cases e. When there is a situation where the expected results of the test cases could be quite different from previous cycles. On similar lines why to execute test cases manually if we can automate them and reuse it? In RT Task, including an automation suite is always painless and feasible as it covers a wide area of testing scenario. Infact Regression test suite should be 99.99% automated (It may require executing the RT task after every new build is fired).Ahaa!! It sounds good, Running a test suite in night hours and getting test report in morning, what a start to your day, when you realize your half of the work is already done.

Difference between xcworkspace and xcodeproj


xcworkspace :- Is generated when project includes external libraries(dependency clasess)and clasess,When 
its generated afterwards use this file to execute our project
xcodeproj :- Is the default executable file of the project

iOS Split View Supported devices

Device

Slide Over

Picture in Picture

Split View

iPad mini 2

Yes

Yes

iPad mini 3

Yes

Yes

iPad mini 4

Yes

Yes

Yes

iPad Air

Yes

Yes

iPad Air 2

Yes

Yes

Yes

iPad Pro

Yes

Yes

Yes

Splitview screen dividation
           Landscape                              Portrait
             66-33                                 66-33
             50-50

      Ipad Air Splitview(2/3) Landcape
      Ipad Air Splitview(1/3) Landcape
      Ipad Air Splitview(1/2) Landscape
      Ipad Air Splitview(2/3) Portrait
      Ipad Air Splitview(1/3) Portrait

Apple Ref document for split view

Challenges of iOS app development

  1. Challenge 1 – Navigation Panel in the Developer Portal The navigation panel could be complicated for those who are fresh into iOS application development. The more the iPhone developers use this portal the more easily they will be able to navigate. Just make sure that you have a prior knowledge about the portal.
  2. Challenge 2 – iOS Application Compatibility There are various Apple products available in the market today including iPhone 4, 4S, 5, 5S, 1st, 2nd, 3rd Generation iPad Mini series and the iPad Air so it is extremely necessary for an excellent iOS platform app to be compatible with all these products. Testing an application becomes highly important so that it can run smoothly thereby using TaaS product like Testelf or TestFlight can aid through this issue.
  3. Challenge 3 – Beta Users Testing The best way for any application to be known and accepted amongst the consumers is allowing tests to be done through Beta users. They will be able to help you identify the possible failure conditions specific to your developed application. One such solution is testflightapp.com which comes handy for beta testing your app on the go.
  4. Challenge 4 – Apple App Store Approval It is very necessary to know about the App Store guidelines before you start developing an iOS based application. One must conform to all the listed rules and regulations so that your app gets approved in the App Store. This will save your time and aid you through various investment challenges.
  5. Challenge 5 – Poor Network Conditions The speed that you are using might not be the speed that your end consumer may be using. So it becomes highly essential that you pass your iOS app through a test done by the Network Link Conditioner which will help you in invigorating not up to the mark networks.

Challenges of Android app development

Some key Android app development challenges are listed below:
  1. Software Fragmentation: There are many Android OS versions which developers find hard to keep up with . when it comes to app development. It is impractical to focus only on the most recent Android version as not all users may have upgraded to the most recent OS.
  2. Hardware Fragmentation: This becomes a big Android app development challenge since there are nearly 170+ devices running the OS. Each device has different features with respect to keyboard forms, screen size, camera buttons, etc., making it a development nightmare.
  3. No Software/Hardware Standardization: The huge number of devices running Android gives rise to another Android app development challenge–lack of software/hardware standardization across the devices. This becomes a nightmare for developers as each device has a different function for a different button.
  4. Several Carriers: Android app development service providers should know that there are many carriers available for the Android OS, each with the freedom to modify the OS for their purposes. This only multiplies the fragmentation problems for developers.
  5. Security:Unlike Apple’s strict guidelines for app development, no such governance exists for Android apps. As a result, many malware problems arise and software/hardware fragmentation only makes fixing the problems more difficult. This gives rise to tremendous amounts of security issues.
  6. Market Research Costs: One of the biggest Android app development challenges for developers is the cost behind market research. Understanding the end user is key to Android app development, but can require a lot of research, making it costly for developers.
  7. Patent Issues: The recent lawsuits indicate that several Android features may be declared as violation of patent issues. This can become a big Android app development challenge for developers.
  8. Android Market Search Engine: One of the major Android app development challenges for developers is the Android marketplace. Android has more than 8 million apps on its marketplace today and getting your app visible amongst them is a challenge. As a result, even with a great android app developed, if you don’t pay attention to its promotion, you may lose out on gaining any traction.

Xcode and MAC OS versions

Latest xcode and MAC OS X verison history
macOS 10.12
           Xcode 8.2.1
           Xcode 8.2
           Xcode 8.1
OS X 10.11
           Xcode 8.2.1
           Xcode 8.2
           Xcode 8.1  
           Xcode 8.0
           Xcode 7.3.1
           Xcode 7.2.1
                
OS X 10.11
           Xcode 7.2.1
           Xcode 7.0 
           Xcode 6.4
           Xcode 6.3.1
           Xcode 6.3
           Xcode 6.2
           Xcode 6.1.1
           Xcode 6.1

OS X 10.9
           Xcode 6.2
           Xcode 5.1.1
           Xcode 5.1
           Xcode 5.0.2
           Xcode 5.0.1
          

Android Versions Comparisn

Version nameKey user features addedKey developer features addedRelease dateAndroid market shareAPI Level
Android 7.1Nougat
  • Daydream Virtual Reality mode
  • Night Light
  • Storage manager improvements
  • Performance improvements for Touch and Display managements
  • Option to enable fingerprint swipe down gesture
  • Seamless system updates
  • Shortcut manager APIs
  • Support Circular app icons
  • Keyboard image insertion
  • VR thread scheduling improvements
  • Enhanced wallpaper metadata
  • Multi-endpoint call support
  • Source type support for Visual Voicemail
  • Carrier config options to manage video telephony
2016-10-040.2 %25
Android 7.0Nougat
  • Unicode 9.0 emoji
  • Better multitasking
  • Multi-window mode (PIP, Freeform window)
  • Seamless system updates (with dual system partition)
  • Better performance and code size thanks to new JIT Compiler
  • Sustained Performance Mode (SPM) API
  • Vulkan 3D rendering API
  • Daydream virtual reality platform
2016-08-220.5 %24
Android 6.0.1MarshmallowNew emojis2015-12-0729.6 % (6 - 6.0.1)23
Android 6Marshmallow
  • USB Type-C support
  • Fingerprint Authentication support
  • Better battery life with "deep sleep"
  • Permissions dashboard
  • Android Pay
  • MIDI support
  • Google Now improvements
  • Custom Chrome Tabs for better in app browser support
  • App Permissions management update
2015-10-0529.6 % (6 - 6.0.1)23
Android 5.1.1Lollipop
  • Speed improvement
  • Bug fixes
2015-04-2123.3 % (5.1 - 5.1.1)22
Android 5.1Lollipop
  • Multiple SIM cards support
  • Quick settings shortcuts to join Wi-Fi networks or control Bluetooth devices
  • Lock protection if lost or stolen
  • High Definition voice call
  • Stability and performance enhancements
2015-03-0923.3 % (5.1 - 5.1.1)22
Android 5.0.2Lollipop
  • Performance improvements and bug fixes
2014-12-1910.1 % (5.0 - 5.0.2)21
Android 5.0.1Lollipop
  • bug fixes, fix issues with video playback and password failures
2014-12-0210.1 % (5.0 - 5.0.2)21
Android 5.0Lollipop
  • New design (Material design)
  • Speed improvement
  • Battery consumption improvement
  • Several new API
  • Tracking battery consumption app
2014-10-1710.1 % (5.0 - 5.0.2)21
Android 4.4.4KitKat
  • Fix Heartbleed / OpenSSL vulnerability
2014-06-2322.6 % (4.4 - 4.4.4)19
Android 4.4.3KitKat
  • Bug fixes
  • Enable Sprint Spark band 26 and band 41
2014-04-1422.6 % (4.4 - 4.4.4)19
Android 4.4.2KitKat
  • Bug fixes
  • Security enhancements
2013-12-0922.6 % (4.4 - 4.4.4)19
Android 4.4.1KitKat
  • Bug fixes
  • Enhance the camera on the Nexus 5
2013-12-0522.6 % (4.4 - 4.4.4)19
Android 4.4KitKat
  • Screen recording
  • New Translucent system UI
  • Enhanced notification access
  • System-wide settings for closed captioning
  • Performance improvements
  • Public API for SMS management.
  • Improved memory usage
  • Security enhancements (SELinux enforcing mode, new cryptographic algorithms, VPN per user...)
  • NFC Host Card Emulation (for wireless payment, loyalty programs...)
  • Printing Framework
  • Storage Access Framework
  • Hardware Sensor Batching
  • Full-screen immersive mode
  • GLES2.0 SurfaceFlinger
  • Chromium WebView
  • Audio tunneling to DSP
  • Audio monitoring
  • Wi-Fi certified Miracast
  • New Bluetooth profile
  • IR Blasters API
  • Wi-Fi Tunneled Direct Link Setup (TDLS) support
  • Tools for analyzing memory use (procstats, on-device memory status and profiling)
2013-10-3122.6 % (4.4 - 4.4.4)19
Android 4.3Jelly Bean
  • Dial pad auto-complete
  • Photo Sphere enhancements
  • Camera app UI updated
  • 4K resolution support
  • Ability to create restricted profiles for tablets
  • Hebrew and Arabic right-to-left (RTL) support
  • Bluetooth Low Energy (BLE) support
  • Bluetooth Audio/Video Remote Control Profile (AVRCP) 1.3 support
  • Security and performance enhancements
  • OpenGL for Embedded Systems 3.0 graphics support
  • Logging and analyzing enhancements
  • Wi-Fi scanning API
  • Improved DRM (digital rights management) API
  • VP8 encoding
2013-07-241.7 % (4.3)18
Android 4.2.2Jelly Bean
  • Allow toggling Wi-Fi and Bluetooth state in Quick Settings using long-press
  • Shows the percentage and estimated time remaining in the active download notifications
  • Wireless charging and low battery sounds changed
  • Gallery app updated for faster loading with new image transition
  • Performance enhancements and bug fixes (Bluetooth A2DP audio streaming fix...)
  • Secure USB debugging (allow debugging to authenticated computers only)
2013-02-115.9 % (4.2 - 4.2.2)17
Android 4.2.1Jelly Bean
  • Fix missing december bug in the People app
  • Add support for Bluetooth gamepads and joysticks HID devices
2012-11-275.9 % (4.2 - 4.2.2)17
Android 4.2Jelly Bean
  • Lockscreen widgets
  • 360 degree images with Photo Sphere
  • Gesture Typing, for faster typing
  • Wireless display with Miracast
  • Daydream to display information when idle or docked
  • Multi-user for tablets
  • vsync timing
  • Triple buffering
  • reduced touch latency
  • CPU input boost
  • Native RTL support - mirrors the display from manifest prop
  • External display support - Display Manager
  • Nested fragments
  • Renderscript Compute - run tasks on the GPU (supported devices)
  • Renderscript ScriptGroups, built-in intrinsics like blur,
  • FilterScript is a subset of Renderscript made for high performance image processing
2012-11-135.9 % (4.2 - 4.2.2)17
Android 4.1.2Jelly Bean
  • Enable Home screen rotation
  • Fix bugs and enhance performances
2012-10-094 % (4.1 - 4.1.2)16
Android 4.1.1Jelly Bean
  • Fix a bug on screen orientation
2012-07-234 % (4.1 - 4.1.2)16
Android 4.1Jelly Bean
  • Google Now ( http://youtu.be/pPqliPzHYyc )
  • Voice Search
  • Speed enhancements
  • Camera app improvements
  • Accessibility: gesture mode, enable braille external keyboards...
  • app stack navigation to define a parent activity in manifest for deep navigation
  • MediaActionSound class to make sounds like when a camera takes a photo
  • NFC supports large payloads over bluetooth
  • WIFI/WIFI-Direct service discovery
  • Large, detailed, multi-action notifications
  • Input manager allows you to query input devices
2012-07-094 % (4.1 - 4.1.2)16
Android 4.0.4Ice Cream Sandwich
  • stability improvements
  • better camera performance
  • smoother screen rotation
2012-03-281.1 % (4.0.3 - 4.0.4)15
Android 3.2.6HoneycombMinor fixes2012-02-150 %13
Android 4.0.3Ice Cream Sandwich
  • Social stream API in Contacts provider to show updates associated to your contacts
  • Video stabilization and QVGA video resolution API access
  • Accessibility API refinements for screen readers
  • Calendar provider updates
2011-12-161.1 % (4.0.3 - 4.0.4)15
Android 3.2.4HoneycombAdded "Pay as you go" for tablets2011-12-150 %13
Android 4.0.2Ice Cream SandwichMinor fixes2011-11-280 %14
Android 4.0.1Ice Cream Sandwich
  • Facial recognition (Face Unlock)
  • UI use Hardware acceleration
  • Better voice recognition (dictating/Voice typing)
  • Web browser, allows up to 16 tabs
  • Updated launcher (customizable)
  • Android Beam app to exchange data through NFC
2011-10-190 %14
Android 4.0Ice Cream Sandwich
  • New lock screen actions
  • Improved text input and spell-checking
  • Control over network data
  • Email app supports EAS v14
  • WI-FI direct
  • BlueTooth Health Device Profile
  • Low-level streaming multimedia (Khronos OpenMAX AL
  • Grid Layout
  • Spell checking service
  • Address Space Layout Randomization
  • VPN client API
  • Remote Device camera enable/disable
  • ZSL exposure, continuous focus, and image zoom
  • Flags to help control system ui elements like system bar from apps
2011-10-180 %14
Android 3.2.2HoneycombMinor fixes2011-09-300 %13
Android 2.3.7Gingerbread
  • Google Wallet support for the Nexus S 4G
2011-09-211 % (2.3.3 - 2.3.7)10
Android 3.2.1Honeycomb
  • Android Market updates including easier automatic updates
  • Google Books updates
  • Wi-Fi improvements
  • Chinese handwriting prediction improved
2011-09-200 %13
Android 2.3.6Gingerbread
  • Voice search issue fixed
2011-09-021 % (2.3.3 - 2.3.7)10
Android 2.3.5Gingerbread
  • Improved network performance for the Nexus S 4G
  • Fixed Bluetooth issues on the Samsung Galaxy S
  • Gmail app. improvements
2011-07-251 % (2.3.3 - 2.3.7)10
Android 3.2Honeycomb
  • Optimizations for a wider range of tablets
  • Compatibility display mode (zoom for fixed-sized apps)
  • Media sync from SD card
  • Extended API for managing screens support
    • New resource qualifiers for screens support
    • New manifest attributes for screen-size compatibility
    • Screen compatibility mode which allows for phone apps to appear as if they were still on a phone
2011-07-150 %13
Android 2.3.4Gingerbread
  • Voice or video chat using Google Talk
  • Open Accessory API
2011-05-101 % (2.3.3 - 2.3.7)10
Android 3.1Honeycomb
  • UI improvements
  • Open Accessory API
  • USB host API
  • Mice, joysticks, gamepads... support
  • Resizable Home screen widgets
  • MTP notifications
  • RTP API for audio
2011-05-100 %12
Android 3.0Honeycomb
  • Multi core support
  • Better tablet support
  • Updated 3D UI
    • customizable homescreens
    • recent applications viewing
    • redone keyboard layout
  • Media/Picture transport protocol
  • Google Talk video chat
  • Google eBooks
  • "Private browsing"
  • System-wide Clipboard
  • HTTP Live streaming
  • contextual action bar
  • Fragments first introduced(support library now supports it as well)
  • Hardware-accelerated 2D graphics
  • Renderscript 3D graphics engine
  • Pluggable DRM framework
  • device administration
  • High performance Animation Framework
  • RTP streaming API
  • Forced rendering of layers
  • High performance WIFI lock
  • Vew network traffic stats
  • ADTS AAC and FLAC audio
  • LRU cache
2011-02-220 %11
Android 2.3.3Gingerbread
  • NFC API improvements (peer to peer communication...)
  • added unsecure bluetooth sockets
2011-02-091 % (2.3.3 - 2.3.7)10
Android 2.3Gingerbread
  • Updated UI
  • Improved keyboard ease of use
  • Improved copy/paste
  • Improved power management
  • Social networking features
  • Near Field Communication support
  • Native VoIP/SIP support
  • Video call support
  • performance - concurrent garbage collection, faster event distribution, updated video drivers
  • NDK - Native Asset Manager, Native Activities + event handling, khronos api
  • audio effects api
  • VP8, WebM, AAC, AMR wideband
  • Multiple camera sensor support
  • strictmode debugging
  • media framework replaces OpenCore
2010-12-060 % (2.3 - 2.3.2)9
Android 2.2Froyo
  • Speed improvements
  • JIT implementation
  • USB Tethering
  • Applications installation to the expandable memory
  • Upload file support in the browser
  • Animated GIFs
2010-05-200 % (2.2)8
Android 2.1Eclair
  • Updated UI
2010-01-120 %7
Android 2.0.1Eclair2009-12-030 %6
Android 2.0Eclair
  • HTML
  • Digital zoom
  • Microsoft Exchange support
  • Bluetooth 2.1
  • Live Wallpapers
  • Updated UI
2009-10-260 %5
Android 1.6Donut
  • Gesture framework
  • Turn-by-turn navigation
2009-09-150 %4
Android 1.5Cupcake
  • Bluetooth A2DP, AVRCP support
  • Soft-keyboard with text-prediction
  • Record/watch videos
2009-04-300 %3
Android 1.1Banana bread
  • "Show" & "Hide" numeric keyboard, in caller application
  • Ability to save MMS attachments
2009-02-090 %2
Android 1.0Apple pie
  • Download and updates via Android Market
  • Web Browser
  • Camera support
  • Gmail, Contacts and Google Agenda synchronization
  • Google Maps
  • YouTube application
2008-09-230 %1
Android 0.92008-08-220 %

How to create .apk file

How to create .ipa file

  1. How to create .ipa file
  2. .ipa file creation process
  3. How to create iOS provisioning certificate
  4. STEP-1
    1. Generating a Certificate Signing Request
    2. Submitting a Certificate Signing Request for Approval
    3. Approving Certificate Signing Requests
    4. Downloading and Installing Development Certificates
    5. Saving your Private Key and Transferring to other Systems
    I think if you read all this steps on the apple documentation at the given link then you don't need to refer to any other guide.
    
    STEP-2:
    Then just you need to download your certificates and provisioning profile.
    
    STEP-3:
    Just set the profile into your Project and Target Settings and then put proper Entitlements using "Entitlements.plist".
    
    STEP-4:
    Once you have done that, just set up your project in AdHoc Scheme.
    
    STEP-5:
    Clean your Project.
    
    STEP-6:
    Go to Product -> Click on Build For -> "Build For Archiving"
    
    STEP-7:
    Product -> Archive
    Now your Archive can be obtained in your Organizer where in you can save it to disk with an IPA extension and send it your client.
    

Agile Tester Principles

The principles we think are important for an agile tester are

    1)Provide continuous feedback.
    2)Deliver value to the customer.
    3)Enable face-to-face communication.
    4)Have courage.
    5)Keep it simple.
    6)Practice continuous improvement.
    7)Respond to change.
    8)Self-organize.
    9)Focus on people.
    10)Enjoy.