Saturday, 15 February 2014

How to Install Android apk in Emulator

Installing App in Emulators required the .apk file which we available on the same folder path.

.apk file: workspace > project > bin\

There are multiple ways of installing Android or any App (.apk file) in emulators as some of them are mentioned below:

Way 1: If you are using Eclipse version 3.7.1, then on running the Android project in Eclipse (without showing any exception) will automatically install the App (.apk file) in emulator (Make confirm the Emulator should be open when running the Eclipse Android application).

Way 2: You can also configure the Android App or any other apps (.apk file) through ‘adb’ (Android Debug Bridge).

adb is a adaptable command line tool that lets you converse with an emulator object or linked Android - powered tool.

Physical Path of adb: Drive \ android – sdk - windows\ platform -tools

‘adb’ is also used to configuring any App in Android. As per described command in the Screen below, is using for installing any app.

Installation Command will be:

adb install Testdemo.apk

[adb (command) install (command) testdemo.apk (path of .apk file of  testing demo android project)]

Android app testing Questions and answers

Introduction Android:

Android is an operating system for mobile devices that includes middleware and key applications, and uses a modified version of the Linux kernel. It was initially developed by Android Inc..It allows developers to write managed code in the Java language, controlling the device via Google-developed Java libraries…..
The Android SDK includes a comprehensive set of development tools . These include a debugger, libraries, a handset emulator (based on QEMU), documentation, sample code, and tutorials. Currently supported development platforms include x86-architecture computers running Linux (any modern desktop Linux distribution), Mac OS X 10.4.8 or later, Windows XP or Vista.

Android does not use established Java standards, i.e. Java SE and ME. This prevents compatibility among Java applications written for those platforms and those for the Android platform. Android only reuses the Java language syntax, but does not provide the full-class libraries and APIs bundled with Java SE or ME

What is android?
Android is a stack of software for mobile devices which has Operating System, middleware and some key applications. The application executes within its own process and its own instance of Dalvik Virtual Machine. Many Virtual Machines run efficiently by a DVM device. DVM executes Java language?s byte code which later transforms into .dex format files.

What are the advantages of Android?
The following are the advantages of Android:

* The customer will be benefited from wide range of mobile applications to choose, since the monopoly of wireless carriers like AT&T and Orange will be broken by Google Android.
* Features like weather details, live RSS feeds, opening screen, icon on the opening screen can be customized
* Innovative products like the location-aware services, location of a nearby convenience store etc., are some of the additive facilities in Android.
Components can be reused and replaced by the application framework.
*Optimized DVM for mobile devices
*SQLite enables to store the data in a structured manner.
*Supports GSM telephone and Bluetooth, WiFi, 3G and EDGE technologies
*The development is a combination of a device emulator, debugging tools, memory profiling and plug-in for Eclipse IDE.

Features of Android
Application framework enabling reuse and replacement of components§
Dalvik virtual machine optimized for mobile devices§
Integrated browser based on the§ open source WebKit engine
§ Optimized graphics powered by a custom 2D graphics library; 3D graphics based on the OpenGL ES 1.0 specification (hardware acceleration optional)
SQLite for structured data storage§
Media support for common audio, video, and still image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)§
GSM Telephony (hardware dependent)§
Bluetooth, EDGE, 3G, and WiFi (hardware dependent)§
Camera, GPS, compass, and accelerometer (hardware dependent)§
§ Rich development environment including a device emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE.

Describe the APK format.
The APK file is compressed the AndroidManifest.xml file, application code (.dex files), resource files, and other files. A project is compiled into a single .apk file.

What is .apk extension?
The extension for an Android package file, which typically contains all of the files related to a single Android application. The file itself is a compressed collection of an AndroidManifest.xml file, application code (.dex files), resource files, and other files. A project is compiled into a single .apk file.

What is .dex extension
Android programs are compiled into .dex (Dalvik Executable) files, which are in turn zipped into a single .apk file on the device. .dex files can be created by automatically translating compiled applications written in the Java programming language

What is an adb ?
Android Debug Bridge, a command-line debugging application shipped with the SDK. It provides tools to browse the device, copy tools on the device, and forward ports for debugging.

What is an Application ?
A collection of one or more activities, services, listeners, and intent receivers. An application has a single manifest, and is compiled into a single .apk file on the device.

What is a Content Provider ?
A class built on ContentProvider that handles content query strings of a specific format to return data in a specific format. See Reading and writing data to a content provider for information on using content providers.

What is a Dalvik ?
The name of Android’s virtual machine. The Dalvik VM is an interpreter-only virtual machine that executes files in the Dalvik Executable (.dex) format, a format that is optimized for efficient storage and memory-mappable execution. The virtual machine is register-based, and it can run classes compiled by a Java language compiler that have been transformed into its native format using the included “dx” tool. The VM runs on top of Posix-compliant operating systems, which it relies on for underlying functionality (such as threading and low level memory management). The Dalvik core class library is intended to provide a familiar development base for those used to programming with Java Standard Edition, but it is geared specifically to the needs of a small mobile device.

What is an DDMS
Dalvik Debug Monitor Service, a GUI debugging application shipped with the SDK. It provides screen capture, log dump, and process examination capabilities.

What is Drawable?
A compiled visual resource that can be used as a background, title, or other part of the screen. It is compiled into an android.graphics.drawable subclass.

What is an Intent?
A class (Intent) that contains several fields describing what a caller would like to do. The caller sends this intent to Android’s intent resolver, which looks through the intent filters of all applications to find the activity most suited to handle this intent. Intent fields include the desired action, a category, a data string, the MIME type of the data, a handling class, and other restrictions.

What is an Intent Filter ?
Activities and intent receivers include one or more filters in their manifest to describe what kinds of intents or messages they can handle or want to receive. An intent filter lists a set of requirements, such as data type, action requested, and URI format, that the Intent or message must fulfill. For Activities, Android searches for the Activity with the most closely matching valid match between the Intent and the activity filter. For messages, Android will forward a message to all receivers with matching intent filters.

What is an Intent Receiver?
An application class that listens for messages broadcast by calling Context.broadcastIntent

What is a Layout resource?
An XML file that describes the layout of an Activity screen.

What is a Manifest ?
An XML file associated with each Application that describes the various activies, intent filters, services, and other items that it exposes.

What is a Resource
A user-supplied XML, bitmap, or other file, entered into an application build process, which can later be loaded from code. Android can accept resources of many types; see Resources for a full description. Application-defined resources should be stored in the res/ subfolders.

What is a Service ?
A class that runs in the background to perform various persistent actions, such as playing music or monitoring network activity.

What is a Theme ?
A set of properties (text size, background color, and so on) bundled together to define various default display settings. Android provides a few standard themes, listed in R.style (starting with “Theme_”).

What is an URIs?
Android uses URI strings both for requesting data (e.g., a list of contacts) and for requesting actions (e.g., opening a Web page in a browser). Both are valid URI strings, but have different values. All requests for data must start with the string “content://”. Action strings are valid URIs that can be handled appropriately by applications on the device; for example, a URI starting with “http://” will be handled by the browser.

Can I write code for Android using C/C++?
Yes, but need to use NDK
Android applications are written using the Java programming language. Android includes a set of core libraries that provides most of the functionality available in the core libraries of the Java programming language.
Every Android application runs in its own process, with its own instance of the Dalvik virtual machine. Dalvik has been written so that a device can run multiple VMs efficiently. The Dalvik VM executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint. The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included “dx” tool.
Android only supports applications written using the Java programming language at this time.

What is an action?
A description of something that an Intent sender desires.

What is activity?
A single screen in an application, with supporting Java code.

What is intent?
A class (Intent) describes what a caller desires to do. The caller sends this intent to Android’s intent resolver, which finds the most suitable activity for the intent. E.g. opening a PDF file is an intent, and the Adobe Reader is the suitable activity for this intent.

How is nine-patch image different from a regular bitmap?
It is a resizable bitmap resource that can be used for backgrounds or other images on the device. The NinePatch class permits drawing a bitmap in nine sections. The four corners are unscaled; the four edges are scaled in one axis, and the middle is scaled in both axes.

What languages does Android support for application development?
Android applications are written using the Java programming language.

What is a resource?
A user-supplied XML, bitmap, or other file, injected into the application build process, which can later be loaded from code.

How will you record a phone call in Android? How to get a handle on Audio Stream for a call in Android?
Permissions.PROCESS_OUTGOING_CALLS: Allows an application to monitor, modify, or abort outgoing calls.

What’s the difference between file, class and activity in android?
File – It is a block of arbitrary information, or resource for storing information. It can be of any type.
Class – Its a compiled form of .Java file . Android finally used this .class files to produce an executable apk
Activity – An activity is the equivalent of a Frame/Window in GUI toolkits. It is not a file or a file type it is just a class that can be extended in Android for loading UI elements on view.

What is a Sticky Intent?
sendStickyBroadcast() performs a sendBroadcast (Intent) that is “sticky,” i.e. the Intent you are sending stays around after the broadcast is complete, so that others can quickly retrieve that data through the return value of registerReceiver (BroadcastReceiver, IntentFilter). In all other ways, this behaves the same as sendBroadcast(Intent).

One example of a sticky broadcast sent via the operating system is ACTION_BATTERY_CHANGED. When you call registerReceiver() for that action — even with a null BroadcastReceiver — you get the Intent that was last broadcast for that action. Hence, you can use this to find the state of the battery without necessarily registering for all future state changes in the battery.

Does Android support the Bluetooth serial port profile?
Yes.

Can an application be started on powerup?
Yes.

How to Remove Desktop icons and Widgets
A. Press and Hold the icon or widget. The phone will vibrate and on the bottom of the phone you will see anoption to remove. While still holding the icon or widget drag it to the remove button. Once remove turns red drop the item and it is gone

Describe a real time scenario where android can be used?
Imagine a situation that you are in a country where no one understands the language you speak and you can not read or write. However, you have mobile phone with you.

With a mobile phone with android, the Google translator translates the data of one language into another language by using XMPP to transmit data. You can type the message in English and select the language which is understood by the citizens of the country in order to reach the message to the citizens.

How to select more than one option from list in android xml file?
Give an example.
Specify android id, layout height and width as depicted in the following example.

What languages does Android support for application development?
Android applications are written using the Java programming language.

Describe Android Application Architecture.
Android Application Architecture has the following components:
• Services – like Network Operation
• Intent – To perform inter-communication between activities or services
• Resource Externalization – such as strings and graphics
• Notification signaling users – light, sound, icon, notification, dialog etc.
• Content Providers – They share data between applications

Common Tricky questions
Remember that the GUI layer doesn’t request data directly from the web; data is always loaded from a local database.§
The service layer periodically updates the local database.§
§ What is the risk in blocking the Main thread when performing a lengthy operation such as web access or heavy computation? Application_Not_Responding exception will be thrown which will crash and restart the application.
Why is§ List View not recommended to have active components? Clicking on the active text box will pop up the software keyboard but this will resize the list, removing focus from the clicked element.


Why did we open the Android source code?
Google started the Android project in response to our own experiences launching mobile apps. We wanted to make sure that there would always be an open platform available for carriers, OEMs, and developers to use to make their innovative ideas a reality. We also wanted to make sure that there was no central point of failure, so that no single industry player could restrict or control the innovations of any other. The single most important goal of the Android Open-Source Project (AOSP) is to make sure that the open-source Android software is implemented as widely and compatibly as possible, to everyone’s benefit.


Compatibility
What does “compatibility” mean?
We define an “Android compatible” device as one that can run any application written by third-party developers using the Android SDK and NDK. We use this as a filter to separate devices that can participate in the Android app ecosystem, and those that cannot. Devices that are properly compatible can seek approval to use the Android trademark. Devices that are not compatible are merely derived from the Android source code and may not use the Android trademark.

In other words, compatibility is a prerequisite to participate in the Android apps ecosystem. Anyone is welcome to use the Android source code, but if the device isn’t compatible, it’s not considered part of the Android ecosystem.

Basic Software Testing Interview Questions for Freshers - Part 1

Software Testing is the process of executing a program with the intent of finding bugs. (or)  Testing is a process of exercising or evaluating a system component; by manual or automated means to verify that it satisfies a specified requirement.
The basic goal of the software development process is to produce software that has no errors. In an effort to detect errors, each phase ends with V & V activity such as Technical review. But most of the V & V  (review) is based on human evaluation and can't detect all errors.
    
As testing is the last phase in the SDLC (Software Development Life Cycle) before the final software is delivered, it has the enormous responsibility of detecting any type of errors
Two basic approaches for software testing:
1.White Box Testing or Structural testing or Glass Box testing.
2. Black Box Testing or Functional testing
      
Combination of white box and block box testing is called as 'Gray box testing'

What is Acceptance Testing?
Testing conducted to enable a user/customer to determine whether to accept a software product.Normally performed to validate the software meets a set of agreed acceptance criteria.


What is Accessibility Testing?
Verifying a product is accessible to the people having disabilities (deaf, blind, mentally disabled etc.).


What is Adhoc Testing?
A testing phase where the tester tries to ‘break’ the system by randomly trying the system’s functionality. Can include negative testing as well. See also Monkey Testing.


What is Agile Testing?
Testing practice for projects using agile methodologies, treating development as the customer of testing and emphasizing a test-first design paradigm. See also Test Driven Development.


What is Application Programming Interface (API)?
A formalized set of software calls and routines that can be referenced by an application program in order to access supporting system or network services.


What is Automated Testing?
Testing employing software tools which execute tests without manual intervention. Can be applied in GUI, performance, API, etc. testing. The use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions.


What is Beta Testing?
Testing of a release of a software product conducted by customers.


What is Black Box Testing?
Testing based on an analysis of the specification of a piece of software without reference to its internal workings. The goal is to test how well the component conforms to the published requirements for the component.


What is Bottom Up Testing?
An approach to integration testing where the lowest level components are tested first, then used to facilitate the testing of higher level components. The process is repeated until the component at the top of the hierarchy is tested.

What is component Testing?
Testing whether software is compatible with other elements of the system with which it should operate. eg: Browsers ; OS .

 What is Regression testing ?
When a bug is fixed by the development team than testing the other features of the applications which might be affected due to the bug fix is known as regression testing.

Regression testing is always done to verify that modified code does not break the existing functionality of the application and works within the requirements of the system.

 Regression Testing Example - Real and Practical

Example of regression testing with its process is explained below:

For Example there are three Modules in the Project named Admin Module, Personal Information, and Employment Module and suppose bug occurs in the Admin Module like on Admin Module existing User is not able to login with valid login credentials so this is the bug.

Now Testing team sends the above - mentioned Bug to the Development team to fix it and when development team fixes the Bug and hand over to Testing team than testing team checks that fixed bug does not affect the remaining functionality of the other modules (Admin, PI, Employment) and also the functionality of the same module (Admin) so this is known as the process of regression testing.

 What Is Sanity Testing Explain It with Example?
Sanity Testing is the subset of Regression Testing and it is performed when we do not have enough time for doing testing.

Sanity testing is the surface level testing where QA engineer verifies that all the menus, functions, commands available in the product and project are working fine.

Sanity Testing Example
For Example in a project there are five modules like login page, home page, user detail page, new user creation, and task creation etc. So we have the bug in login page like on login page username field accepts the less than six alpha-numeric characters which are against the requirements as in requirements it is specified that username should not be below than six characters but as username accepts the less than six characters it is the bug.

So now the bug is reported by the testing team to the developer team to fix it. When the developing team fixes the bug and passed it to testing team than the testing team checks the other modules of the application means checks that fix bug does not affect the functionality of the other modules but keep one point always in mind that testing team only checks the extreme functionality of the modules, do not go deep to test the details because of the short time so this is the sanity testing. 

Sanity testing is performed after the build has clear the Smoke test and has been accepted by QA team for further testing, sanity testing checks the major functionality with finer details.

When we Perform Sanity Testing?

Sanity testing is performed when development team needs to know quick state of the product after they have done changes in the code or there is some controlled code change in a feature to fix any critical issue, and stringent release time-frame does not allow complete regression testing.

 Explain Smoke Testing Example in Easy and Simple Way?
Smoke Testing Example is always confused with Sanity Testing Example but in reality both the testing examples are different with each other. Here I am writing Smoke Testing Example in such a way that your confusion can definitely be removed by seen the example.
Now before us proceeding towards Smoke Testing Example it is very important for us to first take a warm look at Smoke Testing.

Smoke Testing – Brief Look
Smoke Testing is considered as the surface level testing which is always used to validate that build provided by development to QA team is ready to accept for further testing. In Smoke Testing we test the major point’s means major functionality of the application and it is also known by the name Build Acceptance Testing (BAT).

Smoke Testing Example – Real One

Smoke Testing Example is given below which is totally based on Real Practical Scenario means which totally reflect your software testing process in a company environment.

For example we are working in a small project named Employee Management System and in this project there are four modules like New Employee Module, Existing Employee Module, Admin Module, User Module etc. So firstly in this four modules development team performs the Smoke Testing by executing all the major functionality of modules like New Employee is able to login or not and after login new employee can seen the record of the existing employee or not, and employee that is created can also be edited, deleted or not.

So in this way Smoke Testing is done by development team before releasing means submitting the build to the Software Testing team.

Now when the build is hand over means releasing to the testing team than the software testing team has to check whether to accept or reject the build by checking the major functionality of that build. So as you know we are taking the example Employee Management System, so our build is Employee Management System.

Now when the build (Employee Management System) is submitted means release to the testing team than the testing team has to check whether to accept the build (Employee Management System) or not by checking the major functionality of the build like employee is able to login or not and after login they can seen the existing employee record or not and after that logout easily or not. So this is the Smoke Testing done by Software Testers.

 Define Verification And Validation  ?

  Verification
   
  • Verification is a static practice of verifying documents, design, code and program.
  •   It does not involve executing the code.
  •  It is human based checking of documents and files.
  •  Verification uses methods like inspections, reviews, walkthroughs, and Desk-checking etc.
  • Verification is to check whether the software conforms to specifications.
  •  It can catch errors that validation cannot catch. It is low level exercise.
  • Target is requirements specification, application and software architecture, high level, complete design, and database design etc.
  • Verification is done by QA team to ensure that the software is as per the specifications in the SRS document.
  •  It generally comes first-done before validation.
   
Validation :

  • Validation is a dynamic mechanism of validating and testing the actual product.
  •  It always involves executing the code.
  • It is computer based execution of program.
  • Validation uses methods like black box (functional)  testing, gray box testing, and white box (structural) testing etc.
  • Validation is to check whether software meets the customer expectations and requirements.
  • It can catch errors that verification cannot catch. It is High Level Exercise.
  • Target is actual product-a unit, a module, a bent of integrated modules, and effective final product.
  • Validation is carried out with the involvement of testing team.
  • It generally follows after verification.
What is Bug ?

Bug is a mismatch between expected result and actual result. Hope as a tester you know regarding expected result and actual result.

As a tester whether you are working in small companies or in top MNC, when you detect the bug you have to report it.

But the pattern for reporting the bug differs from companies to companies like in top MNC’s tester’s always reporting the bug through bug reporting tools.

So various Open Source bug reporting tool available today but popular one is Bugzilla and Mantis, but Mantis is easier and user friendly than Bugzilla.

As people always knows that there are 1-2 testers in small companies so in these companies testers never report the bug through bug reporting tools. Testers just orally talk it to the development team that in this module we catch the bug so fixed it.

And similar thing happens it to the developers squad when they fixed the bug they just call the tester to his and her seat and said that check whether bug is fixed or not.

But you know this is not the appropriate or right way to communicate because we are working in a professional environment so we have to follow little documentation also.

Friday, 14 February 2014

10 reasons why You are NOT a Professional Tester!



Why are testers not treated professionally in some organizations.

Are you a Professional Tester?
If you are reading a QA-related article in your free time in order to improve your testing skills, you fall into the small (& hopefully growing) number of engineers determined to be Professional Testers.
Looking for the answers in the mirror
Let’s be honest, wherever we are not treated as (testing) professionals it is because we have not made it a priority to behave like professional testers.
Based on my  experience, everywhere I’ve seen testers taking their work seriously and striving to improve intelligently, I’ve also seen how they were treated with respect and how their work was appreciated thanks to the value it provided to the Organization.

So to the point:

What are the 10 main reasons you are not a Professional Tester?

1. You think testing is not a technical profession, and so you don’t even try to understand the code behind your product!
If you work on Software Development you should understand at least a little about software engineering. As a tester, you need to be able to read code in order to analyze your product and understand how changes and fixes can affect it and cause additional bugs. You can still get away without writing any code if you don’t want to, but as long as you refrain from reading the code you will be missing a very important input to your overall testing process.

2. You are not involved in the process until you are hit in the head with a build by development and told to “go and test it”

In theory we’d like to start during the requirements gathering and analysis phase, together with the rest of the team. But in practice we hardly provide any inputs before we are “hit in the head” by the first build from our developers looking for feedback on their features.
Why does this keep happening? Most testers will say that it is because of the “vicious-circle” of being the last link in the development chain; we are always extremely busy testing when “the others” start planning.
But in truth, if you cannot spare 2 hours a day to take part of a feature design meeting it means you are a lousy time manager. It also means that the only reason you are not part of the development process earlier is because you don’t make it a priority; or in other words because you don’t want to!

3. Your only interaction with a Customers is when your Support Team asks you to reproduce a bug from the field.

Part of your job description is to test your product based on the way it will be used on the field and to catch the bugs that will be important to your users once the product is released.
In fact, your job is to be your customer’s advocate within the development team. To plan your tests and set up your environments based on their working behavior. You are also expected to provide functional feedback based on their needs and constraints.
If this is the case, then how can you simulate field work and represent your users if you don’t know them? When was the last time you visited a user to understand how he or she uses your product? Can you really relate to the work they do with your system and with the constraints of their working environment? I guess the answer is NO.
Go and visit some of your customers! Until you know and understand your users, you will keep doing a lousy job as a tester.

4. Risk management is something you practice only in the context of Life Insurance.

There are a small number of simple truths in testing; maybe the most trivial of them is that “no tester will ever have enough time to test everything”. This is where Basic Risk Management comes into play, helping us prioritize our work in order to know what needs to be tested first and what can be assumed to work based on the results of other tests.
Every tester knows there are areas of his product that are more risky; areas where there are always more bugs and where the work of the team is always delayed due to unscheduled and unplanned circumstances. It is part of our job as testers to be aware of these areas and remind the team about them during all stages of our projects. You should strive to shed light on the issues, whether existing or potential, affecting your product. Helping the team to set realistic objectives and reach your goals on time and on budget.

5. You don’t have a plan to improve the value of your testing.

The Testing Profession is in many ways uncharted territory. There is no ONE WAY to develop yourself professionally as a tester, and these improvements will not be easy or come quickly. So, unless you decide you want to seriously invest in your development process, and only after you understand how to achieve this goal, will you be able to really improve your testing skills and the value you provide to your organization.
How do you achieve this?
Start by mapping your strengths and weaknesses as a tester, then decide what areas do you want to develop (that will also be valuable to your Organization), and finally look for the means available to you to develop these skills.
One thing is certain, it will be completely impossible to improve if you leave it to chance, or to another tester to tow you along during his personal development process.

6. You think your job is mainly about writing and running predefined Test Case Scenarios

There is so much more than only running scripted tests:
  • Providing feedback on the design of your application.
  • Analyzing the Risks of your current development plan and project.
  • Providing informal feedback during the development stages.
  • Developing an automation framework that will help your developers maintain the stability of the product while they work on it.
  • Running tests, but definitely not only those you scripted before hand.
  • Analyzing the results of your tests and the rest of the information available to you, to provide insights into the status of your product.
  • Providing feedback on the process.
The value of your job goes way beyond executing test-steps and setting them to pass or fail!

7. Automation (and scripting) is an Advanced Science, and a project you will work in the future – in your spare time.

STOP coming up with excuses why not to work on automation!!
Automation is not a magic pill or the cure to all the problems faced by testers, this is only a sales-pitch-lie from many tool vendors. But still, there are times when using scripts or tools to do part of your dirty-work will make it more efficient and save you time.
The problem is that some testers feel they are not technical enough to do this, and so they choose not to use automation or scripting to improve their testing. In a sense it is like striking stones or rubbing sticks to light a fire, and refusing to use a lighter while saying that for you it is easier this way…

8. You do most of your testing while standing high on top of your Ego

A good tester is a humble tester! We need to know how to provide feedback, and even more importantly how to receive feedback from teammates and peers.
Many testers get frustrated when team members (specially programmers) give them unrequested feedback on their testing, or when they are queried on a bug that was not found or a test that was not run. Many times there are good reasons for all these “misses” and we only need to keep calm and share this information, but lot’s of testers take these questions as personal attacks on their professional integrity and reply with loud tones or harsh words.
In the same way as you need to know how to report your bugs and provide negative feedback to your project team, you need to know how to receive constructive criticism from your peers.
No one expects you to be perfect, but they expect you to be professional about your mistakes and to learn from them as well as from the feedback you get from the team.

9. You don’t keep track of your professional skill set and the areas where you need to improve next

One of my best managers in the past used to talk about our personal “Virtual Toolbox” as the set of skills each of us carries with him and uses when needed.
  • Do you know what tools you carry in your toolbox?
  • What tools are in need of improvements or updating?
  • Which are the tools that you keep needing, and that you may want to acquire next in order to improve the quality of your work?
Testing is without a doubt a craftsmanship, and without the proper tools (virtual and actual) you will not be able to create the required product.

10. The only idea you have about a career path involves becoming a manager or moving on to another career

Some people get into testing because they think it is a good path into programing. Others do because they don’t know what testing is about and it sounds cool to “play” with applications all day long. After all, how hard can it be, right?
Part of them can end up been good testers. But most of them will end up frustrated, counting the days until they can stop testing and start doing the work they really wanted to do. While others don’t appreciate the real challenges of testing, and think the only way to move forward is to start managing people.
It is true there are challenges and rewards to managing a testing team, but there are also countless disciplines to conquer that are not related to management and that may give you even more challenges and bigger rewards (and definitely a lot less headaches!)
My point is that, if all the time you are looking to do something else and not focusing on how to test better, there is no way you can do it more professionally. So think if you are in the right place, or if maybe you should simply be looking for something else…?

Thursday, 13 February 2014

Difference between Native vs Mobile Web vs Hybrid mobile applications

Native apps are built using the development tools and languages (XCode and Objective C for iOS apps, Eclipse, Android Studio and Java for Android, Visual Studio and C# for Windows) that the respective platforms support and so run only on their targeted platforms.

HTML5 apps are cross-platform mobile applications that run on multiple devices since they mostly run on browsers. Developers can write complex apps using standard web technologies HTML5, Javascript and CSS.

Hybrid apps are the applications that are developed using HTML5, javascript and css, but run with in webview container on the devices and so the applications are packaged natively and so has access to native API’s of the OS also.

Like in all language wars, there is no one answer for all the questions. It depends on what your application is offering, what is the expectation of the users and what are your core development strengths.

Native Applications :

Pro:

Native apps have the best performance and use the last available hardware resource to improve performance.
Applications will work in offline mode.
The apps are distributed through platforms App store providing better visibility to the prospective users.
Your application will have access to the latest API’s, releases on that platform.
The apps are built in languages the platform supports and so, has access to IDEs which provide the best tools to develop, debug the project fast. iOS app can be built in objective C on XCode which has all the tools to debug, design the interface, and check the performance using Instruments etc.
Linkedin is one example which shifted over to Native from HTML5.
And there is Facebook too, which took a U-turn.

Cons

You need huge budgets to support all the platforms that have considerable markets.  You will need to maintain multiple teams, one team per platform you want to support. So basically each team will replicate the same functionality in their platform.
App updates needs to be downloaded by users and so you end up maintain several versions of Apps on your web server if not properly designed.
Availability of developers for ramping up is another concern. When objective C suddenly revived after release of iPhones, there are not enough good developers ready.  May be the developers can be trained , but it is not feasible for small and medium head count companies and even in bigger companies where the training is feasible, the developers trained are not going to be at the same level of expertise they were on the technologies they are working on.


HTML 5 Mobile web app

Pro

HTML5 mobile app is similar to a normal web app, except that they are designed to work at smaller screens.
The distribution of these apps is very easy. You just deploy the web app on your web server and users access it from their browsers.
There are some very good mobile UI frameworks like JQuery Mobile, Sencha Touch and of course my favorite mgwt which provides several widgets for mobile.
These apps can probably reach out all platforms since they run on browsers and all the modern smart phones have a browser. The development and testing of these apps is easier as they are similar to normal web apps where you have tooling support.

Cons

These apps don’t have access to the native functionality.
Performance doesn’t match with native apps.
These apps don’t work in offline. Actually works in offline mode, but that doesn’t match what native apps provide.


Hybrid Apps

Pro:

Hybrid apps are faster to develop since most of the development is done is web technologies which are cross platform and do very small amount of native coding, only when access to native layers is required. So only small portion of the code needs to be re-implemented for other platforms .This saves development time and cost and you can concentrate on developing new features rather than replicating the same features on each platform.
You are near to ‘Write Once, Run Anywhere’, the strategy that made Java such a dominant force.
 The tools for building Hybrid apps are not mature enough when compared to their counterparts on native apps. The situation is changing rapidly and soon there can be some good tools which support development of cross platform Hybrid apps.
These applications can be deployed in platform specific app stores.
Hybrid apps provide good and bad of both native apps and HTML5 web apps. They can access the native layers. These apps can work in offline mode.
Netflix is one cool example which runs the same code base against all the devices.


Cons:

Hybrid apps, even though are packaged natively are not native apps. They execute on the platforms web engine, Webkit in case of Android and iOS which is another layer between the user and the application and so the performance can’t match the native apps.
Since Hybrid apps are normally built using standard web technologies, there will be huge pool of developers available for ramping up. This is not the case with native apps.

How to install .ipa files for ipad & iphone

Instructions to install the ipad build, How to install .ipa files for ipad iphone, steps to install .ipa file into iPhone or iPad

First of All Required to Download the iTunes from the http://www.apple.com/itunes /download/ and then install the itunes into system.

Follow the following steps to install .ipa file into iPhone or iPad

  •     First save .ipa files into your PC or computer's in any local drive or anywhere on Desktop
  •     Now Open iTunes and Connect to the iPad or iPhone.
  •     Now just drag and drop the .ipa files into the iTunes on the upper left corner, below the library section at the group of Application, Or you can do it with double click functionality. For Example see the Screen Below:
  •  Again Drag and Drop the file .app or .ipa into the folder of Application. In iTunes validate or confirm that this program is listed below as an application. While open the library → Folder for Application will be find out the our application name.
  • Now under our device name go to on devices that adjust the application folder with our device and will keep it adjusted.



  •  Now Choose Apply and Try to execute your iOS apps on your device

Wednesday, 12 February 2014

How to find Memory leaks in iOS


ARC can do only de-allocate the memory if we are not holding any suggestions to it anymore. Since the instrument for leaks does not indicate any "genuine" leaks (in the sense of memory that we do not have contact to anymore), we are almost certainly seeing a case of abandoned the memory. We are still holding references to objects which we do not require anymore, so they do not get de-allocated.

It does not really subject which snapshot us inspect after the base line. The objects list in a snapshot can be some what overwhelming though... but often it help to clean it down to our own class. We can do this by typing our prefix of class into the field of search in the upper right. If none of our class display up in the snap shot, we can at least look for classes which we use directly.

Also confirm to activate the “counts of Record reference “alternative in the inspector pane of the instrument of allocations. When we have this activated then you can click on the little right arrow next to the substance listed in a snapshot (not the name of class, but the objects represented by its address of memory) and display a full history of such substances. This creates it simpler to see who is griping references to it.

Management of Memory is debatably the hardest concept for programmer’s beginner to hold. When we decided to go behind to school, we were needed to take beginner’s programming classes since there is no alternative to test in to courses of computer science. We witnessed the hair pulling frustration of the students from beginner when management of memory was introduced for the very early time. The hardest element of that course was when we were asked to task as a sort of student teacher aid, going around helping trying to help another students learn management of memory.
Fortunately, an author going by r_adeem has discharged an outstanding article explaining proper management of memory on iOS. There are multiple snippets with described explanations outlining when and why we would use definite management memory functions.

He displays the correct way and the wrong way for memory management, both with snippets of code. Test it out, and thanks to John Dowaa at Maniac Dev for the link, which can be found as following detailed.

Dangling pointers, memory leaks, double frees, and hogs — when it come to writing applications for iOS, We have got to ignore these pitfalls common. Here's how!

Products of Software slated for the market of iOS have to be frugal in their memory use. iOS device such as the iPad and iPhone have limited memory of physical, much less than their flash saved capacity. With the help of Xcode can help frugal code of design and source files of subject to static analysis. We can also use its tool of Instruments to track down the problems of memory during execution time. In such article, We discuss on some common problems of memory and how they can affect a app of typical iOS. We display you how to notice such problems with the tools of aforementioned and some styles of fixing them.

We will require a working knowledge of Objective-C, ANSI-C,  and Xcode. The sample project requires version 3.x (or newer) of the development suite of Xcode.
Types of Memory Problems
Mostly memory problems are one of four types. The first type is the pointer of dangling. This is an instance or data pointer that still refers to a de-allocated block  of memory. Even The block can still have legal data, but the record can "invisible" at some points in time. Efforts to access a dangling pointer may lead to a fault of segmentation (EXC_BAD_ACCESS or SIGSEGV). A pointer dangling shouldn’t be confused with a NULL, which is definite as ((void *) 0).

Consider the following snippet in Listing One. Here, class  like FooProblem has a single property (objcString) and a single method of action. The action method, demoDanglingPointer:, initializes objcString to an blank NSString (18 no line). Then, in a different block of code. Code block, it generates an object of NSMutableString (line 20). It sends the instance a release message (22 no.line), but also assigns that same object to objcString (25 of line). Once the code block exits, de-allocation generates and objcString is holding left the dangling pointer.



                                    Memory leaks in iOS application