Wednesday, June 12, 2013

Android Apps

Android is an open source, Linux based OS, optimized and used for mobile devices. Other Devices include tablets, Cameras, set-top-boxes and laptops etc.

Architecture:
Its a layered architecture. Libraries and drivers as abstraction layer and framework and apps as top layers.
App developer has access to all the APIs.
1. Apps
2. Framework
3. Libraries.
---Android Run-time
4. Linux Kernel.

Android Apps:
Apps are developed in Java. Eclipse ID + ADT (Android Development Toolkit) plugin is for app development. ADT also cares about libraries, packages and emulation of android apps.
Develop the app and archive the code, resources, etc into a .apk (Android Package) file.
Run this file on Android device, or virtual device.

Manifest.xml is a major component of android pp. It allows to declare permissions required by the app.
Other things in this file - components of app, minimum API level, h/w and s/w features used, and API libraries linked, etc.

Android Framework:
Android App have 4 components:
1. Activity
2. Service
3. Content Providers
4. Broadcast Receivers.

Activity is the UI that user interacts with. As if he is performing an activity  E.g in Music Player App, the Player screen and the Songs list screen are two activities. Activities interact with each other in an Application via Intents e.g. to pass on data, info, etc. Good thing about activities is that App1 can invoke Activity residing inside of App2. Now not all part of an application is UI. There are things to be done in background as well e.g. retrieving data over network or updating something. Services does the background stuff. It doesn't bother UI thread. It performs its stuff, and goes away. Notification can be invoked when a service finishes. Next thing an application need to complete itself is the data that it holds. Data could be accessed from some source like database or files. Content Providers does the task of accessing data from a source. Content Providers work as URIs. Now the application seems complete, but if it needs to communicate with the framework or the system OS? E.g. battery is low or screen lock event occurs. Broadcast Receivers allow this to happen. The system broadcasts these events and the Receivers (the app) receive it and perform appropriate action. This completes the Android Framework.

Friday, May 3, 2013

Appium - Automation for Mobile Apps

appium run WebDriver tests on Android and iOS.

appium is an HTTP server that creates and handles WebDriver sessions.

On iOS, appium proxies commands to a UIAutomation script running in Instruments.

On Android, appium proxies commands to a UiAutomator test case running on the device.

appium open doors for cross-platform mobile testing: one test - two mobile platforms.

Thursday, May 2, 2013

Automation Tools for Mobile Platforms (Android and iOS)

Automation Tools For iOS:

  • Calabash
  • Frank
  • UI Automation
  • ios-driver
  • KeepItFunctional
  • appium

Automation Tools For Android:

  • Calabash
  • MonkeyTalk
  • Robotium
  • UiAutomator
  • selendroid
  • appium

Thursday, April 4, 2013

Software Test Estimation - Part 1


What is Estimation?

We do estimation everyday! For example, going from home to office, going for interview tomorrow, or when we build a house we estimate how long it will take to be built etc. We do estimations about time, cost, effort, duration, resources and other things. For Projects, we do project estimations and for testing we do test estimations. Without proper estimations, projects become riskier. They have cost overrun, schedule overrun, low margins, etc

What we do in Estimation?

So when we do estimation, we quantify the outcome. Rather than having a rough idea about some activity, its better to quantify it. Quantify the cost, time, resources.

People involved in estimation:


Project Manager :- takes care of the overall estimation activity.
Seniors :- provide input on assumptions, risks involved, constraints.
Program Management :- verifies and consolidates the estimation data at organizational level.
Senior Management :- approves the project at organizational level.
Customers :- approves the estimates provided by you. They also provide inputs and requirements for which estimates are provided.

Uncertainty in Estimation!

Estimation is very much associative with uncertainty. This uncertainty is high during initial phase of project (when requirements are not clear or freezed). So initially we may estimate that a project will run for 50 weeks OR 10 weeks, whereas the actual time for its execution/completion actually takes 25 weeks.
Next, when requirements get freezed, and we define the scope of project, even then the Re-estimated data has 50% of uncertainty in it.

So, when do we do Estimation?

Estimation spans the entire project life cycle. At the start of a project, we can prepare for estimation. This means to collect historical data for similar projects, requirements breakdown, brainstorming, estimation approach. Next we actually start preparing estimates. Then, once the project kicks off, we do compare the estimated with the actual at different milestones during project execution. And if required, re-estimation is also done. For example, if requirements change, scope changes, project characteristics have changed. Once the project is closed, we gather data from the project to be used as historical data with in the organization and that helps in improving the estimation process.

Estimation Techniques?

Bottom Up Strategy:-
Prepare a Work Breakdown Structure, define the tasks to be performed in an activity, provide effort to do each task at a granular level. That gives you the estimates. You estimate the duration, dependencies and resources. Here team members, seniors, experts collectively give estimates. This strategy is good for New projects, and for projects where you do not have any historical data.

Top Down Strategy :-
Use your experience, or historical data to provide estimates for projects. Here project size and complexity also plays a vital role and we take the information from past experience to draw out estimates. Average effort per test case in the past projects is also taken into account.

In majority, most of the projects take top down approach for test estimation.



To be Continued....

Followers

About Me