Monday, December 26, 2016

Scrum Master FAQ

My FAQ's
---------
* Scrum Master:
---------------
1. * Who is servant-leader? 
A Scrum Master is a servant-leader whose focus is on the needs of the team members and those they serve (the customer), 
with the goal of achieving results in line with the organization's values, principles, and business objectives.

  • Experience in complete life cycle (SDLC) development of a product and Agile Scrum, TDD, Agile Software Development, Pair programming.
  • Strong grip on Agile Artifacts - Product vision, backlog, road map, Release plan, Sprint backlog, Burn Down
  • Strong Knowledge and experience on Agile CeremoniesBacklog /Sprint Grooming, Sprint Planning, Daily Scrum, Sprint Review, Retrospective
  • Strong knowledge and Experience on Scaled Agile Framework (SAFe)
  • Prepared Story cards, burn down charts, release plans, build release notes and completed the sprint and Product backlog defined tasks on time / as per scheduled time lines.
  • Working as a Facilitator, Mentor, Quality Master, Servant Leader, Process check master for Agile Projects.
  • Closely working with Product Owner, Team and all required stake holder on daily basis.
  • Lead all the meetings and monitoring and Tracking the team activities, resolved impediment and conflicts.
  • Generating reports based on Sprints and Release and publish to all stake holders
  • Strong on agile project management tools like Version One, JIRA
  • Identify project risks and raise them immediately
  • Managed the project deliverable s using Scrum, SCRUM Methodology (Agile).
  • Knowledgeable in project management methodologies i.e. Project Scoping, Planning, Estimating, Scheduling, Organizing, Directing, Controlling, Budgeting and Drafting Remedy Procedures Strong on software quality aspects, risk management and stakeholder management.
  • Experience in working with cross functional teams and assist them in developing IT solutions
  • Ability to work in a team environment as well as individually. Also worked on team building and maintenance.
  • Good experience in managing multiple projects of varying technologies.
  • Ability to take completes ownership of business critical and sensitive projects.
  • Experience in coordinating agile work efforts and ensure the team’s productivity is maximized and that the team leverages iterative/agile best practices to stay focus and meet their goals and commitments.
  • Coordination and meeting facilitation is a part of the work, primary responsibility to help the self-organizing, self-managing team achieve its goals. Teaching Scrum, implementing and supporting Scrum practices, and identifying and eliminating impediments.
  • Expertise in facilitates planning, team learning in the form of reviews and retrospectives, and adaptation of the process to ensure quality of team/solutions, also ensure the tracking and reporting of daily activities.
  • Experience in People Management, Stakeholder Management, Release Management, Incident Management, Project Planning, Scheduling, Estimation, Monitoring, Tracking and Implementing software development life cycle, Testing, System Support and Application Maintenance.
  • Quick learner, organized, ability to work within tight deadlines and willingness to take initiative.
  • Excellent interpersonal and communication skills, A very strong team player.
  • Working as an Agile Scrum Master
  • Deliver multiple scopes as per plan on time with Quality
  • Working on scopes which were complex and Facilitating /conducting meetings, follow-up with different stakeholder and support them to deliver the projects on time with quality.
  • Updating status reports to Managers meetings on weekly basis
  • Facilitating Daily scrum meetings, spring planning, spring reviews, and sprint retrospective and Scrum of Scrum meetings
  • Working with Product owners on artifacts such as Product Backlog, Spring Backlog, Sprint Burndown
  • Help product owner understand how to create and maintain the Product Backlog
  • Work with the scrum team to evolve the definition of Done
  • Work with the scrum team to remove external or internal impediments to the teams progress, foster self-organization
  • Conducting /Facilitating Agile Ceremonies - Daily Standup, Sprint Grooming, Sprint planning, Sprint Review, Sprint Retrospective
  • Appreciations from Business team for grasping the application knowledge in short duration and taking the project towards successful release.
  • Experience in coordinating agile work efforts and ensure the team’s productivity is maximized and that the team leverages iterative/agile best practices to stay focus and meet their goals and commitments.
  • Coordination and meeting facilitation is a part of the work, primary responsibility to help the self-organizing, self-managing team achieve its goals. Teaching Scrum, implementing and supporting Scrum practices, and identifying and eliminating impediments.
  • Expertise in facilitates planning, team learning in the form of reviews and retrospectives, and adaptation of the process to ensure quality of team/solutions, also ensure the tracking and reporting of daily activities.
  • Working with remote teams across the globe with different time zones. Removing impediments or guiding the team to remove impediments by finding the right personnel to remove the impediment.
  • Facilitating discussion, decision making, and conflict resolution, Assisting with internal and external communication, improving transparency, and radiating information
  • Supporting and educating the Product Owner, especially with respect to grooming and maintaining the product. Backlog. Providing all support to the team using a servant leadership style whenever possible.

SQL FAQ

"DA-RUM" "DUM-DUM"
My FAQ's
---------
* SQL
1. http://www.java67.com/2013/04/10-frequently-asked-sql-query-interview-questions-answers-database.html

* Finding the 3 greates salary from the employe table:
Ex1 :
SELECT TOP 1 salary FROM (
   SELECT TOP 3 salary
   FROM employees
   ORDER BY salary DESC) AS emp
ORDER BY salary ASC

Ex2 :
SELECT salary from
(SELECT rownum ID, EmpSalary salary from
(SELECT DISTINCT EmpSalary from salary_table order by EmpSalary DESC)
where ID = nth)

    Select empno, empname, mdept  from emp_table where Mdept = 'IT"

Different SQL Joins
--------------------
Before we continue with examples, we will list the types of the different SQL JOINs you can use:

INNER JOIN: Returns all rows when there is at least one match in BOTH tables
LEFT JOIN: Return all rows from the left table, and the matched rows from the right table
RIGHT JOIN: Return all rows from the right table, and the matched rows from the left table
FULL JOIN: Return all rows when there is a match in ONE of the tables

* Joins
-------
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;

* Inner Join
------------
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

Note: The INNER JOIN keyword selects all rows from both tables as long as there is a match
between the columns. If there are rows in the "Customers" table that do not have matches
in "Orders", these customers will NOT be listed.

* Left Join
------------
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;
Note: The LEFT JOIN keyword returns all the rows from the left table (Customers),
even if there are no matches in the right table (Orders).

* Right Join
-------------
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;

Sample:
SELECT Orders.OrderID, Employees.FirstName
FROM Orders
RIGHT JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID
ORDER BY Orders.OrderID;

Note: The RIGHT JOIN keyword returns all the rows from the right table (Employees),
even if there are no matches in the left table (Orders).

* Full Outer Join
------------------

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

Note: The FULL OUTER JOIN keyword returns all the rows from the left table (Customers),
and all the rows from the right table (Orders). If there are rows in "Customers" that do
not have matches in "Orders", or if there are rows in "Orders" that do not have matches
in "Customers", those rows will be listed as well.

* Wildcards
-----------

A wildcard character can be used to substitute for any other character(s) in a string.

Wildcard Description
% A substitute for zero or more characters

_ A substitute for a single character

[charlist] Sets and ranges of characters to match

[^charlist]
or
[!charlist] Matches only a character NOT specified within the brackets

1. SELECT * FROM Customers WHERE City LIKE 'ber%';
2. SELECT * FROM Customers WHERE City LIKE '%es%';

SELECT * FROM Customers WHERE City LIKE '_erlin';

City starting with "b", "s", or "p" - Example :
SELECT * FROM Customers WHERE City LIKE '[bsp]%';


* SQL PRIMARY KEY Constraint on CREATE TABLE
The following SQL creates a PRIMARY KEY on the "P_Id" column when the "Persons" table is
created:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)

* SQL FOREIGN KEY Constraint on CREATE TABLE
The following SQL creates a FOREIGN KEY on the "P_Id" column when the
"Orders" table is created:

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)

* SQL statement selects only the distinct values from the "City" columns from
the "Customers" table:

SELECT DISTINCT City FROM Customers;

* * CREATE TRIGGER <trigger name> 
  { BEFORE | AFTER } 
  { INSERT | UPDATE | DELETE } 
  ON <table name>  
  FOR EACH ROW 
  <triggered action>
-------------

** Stored Procedures
---------------------
Ex1:
----
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [DBO].[GetNewYorkEmployees]
AS

SELECT E.FirstName, E.LastName, L.City, L.[State]
  FROM Employee AS E
INNER JOIN Location as L
ON E.LocationID = L.LocationID
  WHERE L.[State] = 'NY'
GO

* EXEC GetNewYorkEmployees

Ex2:
----
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [DBO].[GetNONNewYorkEmployees]
AS

SELECT E.FirstName, E.LastName, L.City, L.[State]
  FROM Employee AS E
INNER JOIN Location as L
ON E.LocationID = L.LocationID
  WHERE L.[State] !!= 'NY'
GO

* EXEC GetNONNewYorkEmployees
-----------------

Manual Testing FAQ's

My FAQ's

http://istqbexamcertification.com/what-is-fundamental-test-process-in-software-testing/
* 1. What is fundamental test process in software testing?
ANSWER:
Testing is a process rather than a single activity. This process starts from test planning then designing test cases, preparing for execution and evaluating
status till the test closure. So, we can divide the activities within the fundamental test process into the following basic steps:

1)    Planning and Control
2)    Analysis and Design
3)    Implementation and Execution
4)    Evaluating exit criteria and Reporting
5)    Test Closure activities

1)    Planning and Control:

Test planning has following major tasks:
i.  To determine the scope and risks and identify the objectives of testing.
ii. To determine the test approach.
iii. To implement the test policy and/or the test strategy. (Test strategy is an outline that describes the testing portion of the software development cycle.
It is created to inform PM, testers and developers about some key issues of the testing process. This includes the testing objectives, method of testing,
total time and resources required for the project and the testing environments.).
iv. To determine the required test resources like people, test environments, PCs, etc.
v. To schedule test analysis and design tasks, test implementation, execution and evaluation.
vi. To determine the Exit criteria we need to set criteria such as Coverage criteria. (Coverage criteria are the percentage of statements in the software
 that must be executed during testing. This will help us track whether we are completing test activities correctly. They will show us which tasks
and checks we must complete for a particular   level of testing before we can say that testing is finished.)

 Test control has the following major tasks:
i.  To measure and analyze the results of reviews and testing.
ii.  To monitor and document progress, test coverage and exit criteria.
iii.  To provide information on testing.
iv.  To initiate corrective actions.
v.   To make decisions.

2)  Analysis and Design:

Test analysis and Test Design has the following major tasks:
i.   To review the test basis. (The test basis is the information we need in order to start the test analysis and   create our own test cases.
Basically it’s a documentation on which test cases are based, such as requirements, design specifications, product risk analysis, architecture and interfaces.
We can use the test basis documents to understand what the system should do once built.)
ii.   To identify test conditions.
iii.  To design the tests.
iv.  To evaluate testability of the requirements and system.


v.  To design the test environment set-up and identify and required infrastructure and tools.

3)  Implementation and Execution:
During test implementation and execution, we take the test conditions into test cases and procedures and other testware such as scripts for automation,
the test environment and any other test infrastructure. (Test cases is a set of conditions under which a tester will determine whether an application
is working correctly or not.)
(Testware is a term for all utilities that serve in combination for testing a software like scripts, the test environment and any other test infrastructure
 for later reuse.)

Test implementation has the following major task:
i.  To develop and prioritize our test cases by using techniques and create test data for those tests. (In order to test a software application you need to
enter some data for testing most of the features. Any such specifically identified data which is used in tests is known as test data.)
We also write some instructions for carrying out the tests which is known as test procedures.
We may also need to automate some tests using test harness and automated tests scripts. (A test harness is a collection of software and test data for testing
a program unit by running it under different conditions and monitoring its behavior and outputs.)
ii. To create test suites from the test cases for efficient test execution.
(Test suite is a collection of test cases that are used to test a software program   to show that it has some specified set of behaviours. A test suite
often contains detailed instructions and information for each collection of test cases on the system configuration to be used during testing. Test suites
are used to group similar test cases together.)
iii. To implement and verify the environment.

Test execution has the following major task:
i.  To execute test suites and individual test cases following the test procedures.
ii. To re-execute the tests that previously failed in order to confirm a fix. This is known as confirmation testing or re-testing.
iii. To log the outcome of the test execution and record the identities and versions of the software under tests. The test log is used for the audit trial.
(A test log is nothing but, what are the test cases that we executed, in what order we executed, who executed that test cases and what is the status
of the test case (pass/fail). These descriptions are documented and called as test log.).
iv. To Compare actual results with expected results.
v. Where there are differences between actual and expected results, it report discrepancies as Incidents.

4)  Evaluating Exit criteria and Reporting:
Based on the risk assessment of the project we will set the criteria for each test level against which we will measure the “enough testing”.
These criteria vary from project to project and are known as exit criteria.
Exit criteria come into picture, when:
— Maximum test cases are executed with certain pass percentage.
— Bug rate falls below certain level.
— When achieved the deadlines.

Evaluating exit criteria has the following major tasks:
i.  To check the test logs against the exit criteria specified in test planning.
ii.  To assess if more test are needed or if the exit criteria specified should be changed.
iii.  To write a test summary report for stakeholders.

5)  Test Closure activities:
Test closure activities are done when software is delivered. The testing can be closed for the other reasons also like:

When all the information has been gathered which are needed for the testing.
When a project is cancelled.
When some target is achieved.
When a maintenance release or update is done.
Test closure activities have the following major tasks:
i.  To check which planned deliverables are actually delivered and to ensure that all incident reports have been resolved.
ii. To finalize and archive testware such as scripts, test environments, etc. for later reuse.
iii. To handover the testware to the maintenance organization. They will give support to the software.
iv To evaluate how the testing went and learn lessons for future releases and projects.

2.What is Software Testing Life Cycle (STLC)?
http://istqbexamcertification.com/what-is-software-testing-life-cycle-stlc/
Software Testing Life Cycle is a testing process which is executed in a sequence, in order to meet the quality goals. It is not a single activity
but it consists of many different activities which are executed to achieve a good quality product. There are different phases in STLC which are given below:

Requirement analysis
Test Planning
Test case development
Environment Setup
Test Execution
Test Cycle Closure

* 3. http://istqbexamcertification.com/what-is-maintenance-testing/
What is Maintenance Testing?
ANSWER:

Once a system is deployed it is in service for years and decades. During this time the system and its operational environment is often corrected, changed or extended. Testing that is provided during this phase is called maintenance testing.


Usually maintenance testing is consisting of two parts:

First one is, testing the changes that has been made because of the correction in the system or if the system is extended or because of some additional
features added to it.
Second one is regression tests to prove that the rest of the system has not been affected by the maintenance work.

*4. Difference between regression testing and retesting
http://istqbexamcertification.com/difference-between-regression-testing-and-retesting/


Regression testing Retesting

Regression testing is done to find out the issues which may get introduced because of any change or modification in the application.
Retesting is done to confirm whether the failed test cases in the final execution are working fine or not after the issues have been fixed.

The purpose of regression testing is that any new change in the application should NOT introduce any new bug in existing functionality.
The purpose of retesting is to ensure that the particular bug or issue is resolved and the functionality is working as expected.

Verification of bugs are not included in the regression testing.
Verification of bugs are included in the retesting.

Regression testing can be done in parallel with retesting.
Retesting is of high priority so it’s done before the regression testing.

For regression testing test cases can be automated.
For retesting the test cases cannot be automated.

In case of regression testing the testing style is generic
In case of retesting the testing is done in a planned way.

During regression testing even the passed test cases are executed.
During retesting only failed test cases are re-executed.

Regression testing is carried out to check for unexpected side effects.
Retesting is carried out to ensure that the original issue is working as expected.

Regression testing is done only when any new feature is implemented or any modification or enhancement has been done to the code.
Retesting is executed in the same environment with same data but in new build.

Test cases of regression testing can be obtained from the specification documents and bug reports.
Test cases of retesting can be obtained only when the testing starts.

* 5. What is a Defect Life Cycle or a Bug lifecycle in software testing?
ANSWER:

http://istqbexamcertification.com/what-is-a-defect-life-cycle/

The bug has different states in the Life Cycle. The Life cycle of the bug can be shown diagrammatically as follows:Defect or Bug life cycle

Bug or defect life cycle includes following steps or status:

New:  When a defect is logged and posted for the first time. It’s state is given as new.
Assigned :  After the tester has posted the bug, the lead of the tester approves that the bug is genuine and he assigns the bug to corresponding developer
and the developer team. It’s state given as assigned.
Open :  At  this state the developer has started analyzing and working on the defect fix.
Fixed :  When developer makes necessary code changes and verifies the changes then he/she can make bug status as ‘Fixed’ and the bug is passed to testing team.
Pending retest :  After fixing the defect the developer has given that particular code for retesting to the tester. Here the testing is pending on the testers end.
Hence its status is pending retest.
Retest :  At this stage the tester do the retesting of the changed code which developer has given to him to check whether the defect got fixed or not.
Verified :  The tester tests the bug again after it got fixed by the developer. If the bug is not present in the software, he approves that the bug is fixed
and changes the status to “verified”.
Reopen :  If the bug still exists even after the bug is fixed by the developer, the tester changes the status to “reopened”. The bug goes through the life cycle
once again.
Closed :  Once the bug is fixed, it is tested by the tester. If the tester feels that the bug no longer exists in the software, he changes the status of
the bug to “closed”. This state means that the bug is fixed, tested and approved.
Duplicate : If the bug is repeated twice or the two bugs mention the same concept of the bug, then one bug status is changed to “duplicate“.
Rejected : If the developer feels that the bug is not genuine, he rejects the bug. Then the state of the bug is changed to “rejected”.
Deferred : The bug, changed to deferred state means the bug is expected to be fixed in next releases. The reasons for changing the bug to this state have many factors. Some of them are priority of the bug may be low, lack of time for the release or the bug may not have major effect on the software.
Not a bug :  The state given as “Not a bug” if there is no change in the functionality of the application. For an example: If customer asks for some change in the
look and feel of the application like change of colour of some text then it is not a bug but just some change in the looks of the  application.

* 6. What is Retesting? When to use it? Advantages and Disadvantages
ANSWER:
http://istqbexamcertification.com/what-is-retesting/

*7. * What is QA & QC?
http://www.diffen.com/difference/Quality_Assurance_vs_Quality_Control
ANSWER:

 Quality Assurance is <<<<process oriented and focuses on defect <<<<prevention, while
 Quality control is <<<<product oriented and focuses on defect <<<<<identification.

Quality Assurance Vs Quality Control
Definition
QA is a set of activities for ensuring quality in the processes by which products are developed.
QC is a set of activities for ensuring quality in products. The activities focus on identifying defects in the actual products produced.

Focus on
QA aims to prevent defects with a focus on the process used to make the product. It is a proactive quality process.
QC aims to identify (and correct) defects in the finished product. Quality control, therefore, is a reactive process.

Goal
The goal of QA is to improve development and test processes so that defects do not arise when the product is being developed.
The goal of QC is to identify defects after a product is developed and before it's released.

How
QA Establish a good quality management system and the assessment of its adequacy. Periodic conformance audits of the operations of the system.
QC Finding & eliminating sources of quality problems through tools & equipment so that customer's requirements are continually met.

What
QA Prevention of quality problems through planned and systematic activities including documentation.
Qc The activities or techniques used to achieve and maintain the product quality, process and service.

Responsibility
Everyone on the team involved in developing the product is responsible for quality assurance.
Quality control is usually the responsibility of a specific team that tests the product for defects.

Example
Verification is an example of QA
Validation/Software Testing is an example of QC

Statistical Techniques
Statistical Tools & Techniques can be applied in both QA & QC. When they are applied to processes (process inputs & operational parameters),
they are called Statistical Process Control (SPC); & it becomes the part of QA.

QC When statistical tools & techniques are applied to finished products (process outputs), they are called as Statistical Quality Control (SQC)
 & comes under QC.

As a tool
QA is a managerial tool
QC is a corrective tool

Orientation
QA is process oriented
QC is product oriented


* What is verification and validation?
--------------------------------------
ANSWER:
http://softwaretestingfundamentals.com/verification-vs-validation/

VERIFICATION vs VALIDATION

Criteria Verification  Validation

Definition :
Ver : The process of evaluating work-products (not the actual final product) of a development phase to determine whether they
meet the specified requirements for that phase.

Val : The process of evaluating software during or at the end of the development
process to determine whether it satisfies specified business requirements.

Objective :
Ver : To ensure that the product is being built according to the requirements and design specifications.
In other words, to ensure that work products meet their specified requirements.

Val : To ensure that the product actually meets the user’s needs, and that the specifications were correct in the first place.
In other words, to demonstrate that the product fulfills its intended use when placed in its intended environment.

Question :
Ver :  Are we building the product right?
Val : Are we building the right product?

Evaluation Items :
Ver : Plans, Requirement Specs, Design Specs, Code, Test Cases
Val : The actual product/software.

Activities:
Ver : • Reviews
      • Walkthroughs
      • Inspections

Val :
      • Testing


* What is SDLC ?
----------------
ANSWER:
https://www.tutorialspoint.com/sdlc/sdlc_overview.htm

SDLC, Software Development Life Cycle is a process used by software industry to design, develop and test high quality softwares.
The SDLC aims to produce a high quality software that meets or exceeds customer expectations, reaches completion within times
 and cost estimates.

SDLC is a process followed for a software project, within a software organization. It consists of a detailed plan describing how to develop,
maintain, replace and alter or enhance specific software. The life cycle defines a methodology for improving the quality of software
and the overall development process.

The following figure is a graphical representation of the various stages of a typical SDLC.

Stage 1: Planning & Requirement Analysis
Stage 2: Defining Requirement
Stage 3: Designing the product architecture
Stage 4: Building or Developing the Product
Stage 5: Testing the Product
Stage 6: Deployment in the Market and Maintenance

SDLC models followed in the industry:
------------------------------------
Waterfall Model
Iterative Model
Spiral Model
V-Model
Big Bang Model

The other related methodologies are Agile Model, RAD Model, Rapid Application Development and Prototyping Models.

What is the compentency (Efficiency)of the tester?
----------------------------
ANSWER:
Find the defect at the earliy stage of developement.
ER==AR to stop testing.

Where do the tester play the role in developement stage and Testing stage?
----------------------------
ANSWER:
The role of a software tester in an Agile environment goes beyond “just testing” and logging bugs. It is more working as part of a development team
and working closely with the product owner. The tester works with everyone in the team in order to improve and build quality into the
product as early as possible

In a non-Agile environment, the role of a tester includes analysis, test-scripts design, and execution. He is involved right from the project initiation
stage up to when it is closed, but in an Agile environment his role primarily is to work as part of a development team, and to ensure that quality is
built into a product by working closely with the product owner. This helps a tester get more details out of the story cards -- it will be difficult for
the development team to meet the acceptance criteria and consider a story "done" if the tester does not engage the product owner.

1. Communication

Agile principle: The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

A tester communicates more in an Agile environment; usually he becomes very communicative within the team without even realizing it.

2. Technical

Agile principle: Continuous attention to technical excellence and good design enhances agility.

3. Absolute Role

Agile Manifesto: Individuals and interactions over processes and tools.

4. Detect ambiguity

One major responsibility of testers in Agile is to help describe the features. Before the feature or user story goes into development,
the tester (and others) meet with the product owner to discuss what is on the story card. The goal of the conversation is to create an
opportunity for a good understanding of what the product owner wants. Skilled testers can be of great help here as they are capable of
detecting and recognizing ambiguity even before testing begins.

5. Automation skill

It is great for a tester to have automation (programming) skills; they can help turn user stories into automated test scripts in development
 -- but not all testers have the skill. Lack of test automation skill therefore cannot be a determinant, but is essential that a tester picks
up this skill as soon as he can in the spirit of contributing to a cross-functional development team.

* What is test strategy?
----------------------------
ANSWER:
A test strategy is an outline that describes the testing approach of the software development cycle. It is created to inform project managers,
testers, and developers about some key issues of the testing process.

* What is test Plan?
----------------------------
ANSWER:
http://www.softwaretestinghelp.com/test-plan-sample-softwaretesting-and-quality-assurance-templates/
TABLE OF CONTENTS
1.0 INTRODUCTION
2.0 OBJECTIVES AND TASKS
2.1 Objectives
2.2 Tasks

3.0 SCOPE

4.0 Testing Strategy
4.1 Alpha Testing (Unit Testing)
4.2 System and Integration Testing
4.3 Performance and Stress Testing
4.4 User Acceptance Testing
4.5 Batch Testing
4.6 Automated Regression Testing
4.7 Beta Testing

5.0 Hardware Requirements

6.0 Environment Requirements
6.1 Main Frame
6.2 Workstation

7.0 Test Schedule
8.0 Control Procedures

9.0 Features to Be Tested
10.0 Features Not to Be Tested

11.0 Resources/Roles & Responsibilities
12.0 Schedules

13.0 Significantly Impacted Departments (SIDs)
14.0 Dependencies
15.0 Risks/Assumptions

16.0 Tools
17.0 Approvals


* What is Estimation?
----------------------------
ANSWER:
Triple point estimation
The three-point estimation technique is used in management and information systems applications for the construction of an approximate probability distribution
representing the outcome of future events, based on very limited information. While the distribution used for the approximation might be a normal distribution,
 this is not always so and, for example a triangular distribution might be used, depending on the application.,[1]

In three-point estimation, three figures are produced initially for every distribution that is required, based on prior experience or best-guesses:

a = the best-case estimate
m = the most likely estimate
b = the worst-case estimate

Estimation:-
Based on the assumption (note: assumption) that a double-triangular distribution governs the data, several estimates are possible.
These values are used to calculate an E value for the estimate and a standard deviation (SD) as L-estimators, where:

E = (a + 4m + b) / 6
SD = (b - a) / 6

* When to start testing?
----------------------------
In what phase or stage of the project should QA testing start?
ANSWER:
There are various aspects of tests.
They are defined and run at all phases across Software Development Life Cycle (SDLC):

Acceptance Tests are defined just at the same time with Business Requirements - e.g. they are defined at the very beginning of an SDLC and run at the very end;
System Tests are defined along with SRS and are usually run for each alpha/local release;
Integration Tests are "mid-range" tests for components; They are defined and run pretty often, e.g. on weekly scrums;
and so on, till the very low-level Unit Tests that are defined and run on practically the same time;

So the answer to your question:
***** You should define and run different types of your tests at all phases of entire SDLC.
CUSTOMER SERVICE   Service Requests  Generate Debit Card PIN

* How to selecet the application for testing?
----------------------------------------------
ANSWER:
https://www.tutorialspoint.com/qtp/qtp_test_automation_process.htm

Automated Testing Process:
For any automated tool implementation, the following are the phases/stages of it. Each one of the stages corresponds to a particular activity
and each phase has a definite outcome.

 1. Test Automation Feasibility Analysis - First step is to check if the application can be automated or not. Not all applications can be
automated due to its limitations.


 2. Appropriate Tool Selection - The Next most important step is the selection of tools. It depends on the technology in which the application
 is built, its features and usage.


 3. Evaluate the suitable framework - Upon selecting the tool the next activity is to select a suitable framework. There are various kinds
 of frameworks and each framework has its own significance. We will deal with frameworks in detail later this chapter.


 4. Build the Proof of Concept - Proof of Concept(POC) is developed with an end to end scenario to evaluate if the tool can support the automation
of the application. As it is performed with an end to end scenario which will ensure that the major functionalities can be automated.


 5. Develop Automation Framework - After building the POC, framework development is carried out, which is a crucial step for the success of any
test automation project. Framework should be build after diligent analysis of the technology used by the application and also its key features.

 6. Develop Test Script, Execute and Analyze - Once Script development is completed, the scripts are executed, results are analyzed and defects
are logged, if any. The Test Scripts are usually version controlled.


* 2. Vulnerable testing? ( Security Testing - will be done on all layers. )
ANSWER:
Fishing - Creating junks email and hacking the Credcredential; blocking; decoding; Injections

* 3. Where is the Delphi Technique Used?
ANSWER:
The Delphi Method is useful in 2 scenarios.

1. When there are many experts involved, and consensus is not likely to happen quickly.
2. When the experts are geographically spread out, and it is difficult to get them into a room to discuss,
brainstorm and come up with the best strategy.

Where is the Delphi Technique used for the PMP exam preparation?
The Delphi technique is actually one of the Group Decision-Making Techniques. It is used in
Time Management > Estimate Activity Duration
Cost Management > Estimate Costs
Risk Management > Identify Risks

* What is COTS integration?
http://www.slideshare.net/saransh241/cots-integration
https://en.wikipedia.org/wiki/Commercial_off-the-shelf
ANSWER:
Slide 4 -5 ( Adaptation, Assembley and Upgrade).
Commercial off-the-shelf (COTS) is a term used to describe the purchase of packaged solutions which are then adapted
 to satisfy the needs of the purchasing organisation, rather than the commissioning of custom made, or esposos, solutions.

* How to write effective Test cases, procedures and definitions
ANSWER:
http://www.softwaretestinghelp.com/how-to-write-effective-test-cases-test-cases-procedures-and-definitions/

What is a test case?
“A test case has components that describes an input, action or event and an expected response, to determine if a feature of an application is working correctly.”

There are levels in which each test case will fall in order to avoid duplication efforts.
Level 1: In this level you will write the basic test cases from the available specification and user documentation.
Level 2: This is the practical stage in which writing test cases depend on actual functional and system flow of the application.
Level 3: This is the stage in which you will group some test cases and write a test procedure. Test procedure is nothing but a group of small test cases
maximum of 10.
Level 4: Automation of the project. This will minimize human interaction with system and thus QA can focus on current updated functionalities to test
rather than remaining busy with regression testing.

So you can observe a systematic growth from no testable item to a Automation suit.

Why we write test cases?
The basic objective of writing test cases is to validate the testing coverage of the application. If you are working in any CMMi
company then you will strictly follow test cases standards. So writing test cases brings some sort of standardization and minimizes the ad-hoc approach in testing.

------------
How to write test cases?
Here is a simple test case format

Fields in test cases:

Test case id:
Unit to test: What to be verified?
Assumptions:
Test data: Variables and their values
Steps to be executed:
Expected result:
Actual result:
Pass/Fail:
Comments:

So here is a basic format of test case statement:

Verify
Using [tool name, tag name, dialog, etc]
With [conditions]
To [what is returned, shown, demonstrated]

Verify: Used as the first word of the test case statement.
Using: To identify what is being tested. You can use ‘entering’ or ‘selecting’ here instead of using depending on the situation.

For any application basically you will cover all the types of test cases including functional, negative and boundary value test cases.

Keep in mind while writing test cases that all your test cases should be simple and easy to understand. Don’t write explanations like essays. Be to the point.


* What is Test Plan V/s Test Strategy?
http://www.guru99.com/test-plan-v-s-test-strategy.html

Test Plan Test Strategy
A test plan for software project can be defined as a document that defines the scope, objective, approach and emphasis on a software testing effort
Test strategy is a set of guidelines that explains test design and determines how testing needs to be done

Components of Test plan include- Test plan id, features to be tested, test techniques, testing tasks, features pass or fail criteria, test deliverables, responsibilities, and schedule, etc.
Components of Test strategy includes- objectives and scope, documentation formats, test processes, team reporting structure, client communication strategy, etc.

Test plan is carried out by a testing manager or lead that describes how to test, when to test, who will test and what to test
A test strategy is carried out by the project manager. It says what type of technique to follow and which module to test

Test plan narrates about the specification
Test strategy narrates about the general approaches

Test plan can change
Test strategy cannot be changed

Test planning is done to determine possible issues and dependencies in order to identify the risks.
It is a long-term plan of action.You can abstract information that is not project specific and put it into test approach

A test plan exists individually
In smaller project, test strategy is often found as a section of a test plan

It is defined at project level
It is set at organization level and can be used by multiple projects

* What is I tier, II tier and III Tier architecture?
ANSWER:
-------
http://www.softwaretestingclass.com/what-is-difference-between-two-tier-and-three-tier-architecture/

Two-Tier Architecture :
------------------------
The two-tier is based on Client Server architecture. The two-tier architecture is like client server application. The direct communication
takes place between client and server. There is no intermediate between client and server. Because of tight coupling a
2 tiered application will run faster.

The Two-tier architecture is divided into two parts:
1) Client Application (Client Tier)
2) Database (Data Tier)

Advantages:

Easy to maintain and modification is bit easy
Communication is faster
Disadvantages:

In two tier architecture application performance will be degrade upon increasing the users.
Cost-ineffective
Three-Tier Architecture:
------------------------
Three-tier architecture typically comprise a presentation tier, a business or data access tier, and a data tier. Three layers in the three tier architecture
are as follows:

1) Client layer
2) Business layer
3) Data layer

1) Client layer:
It is also called as Presentation layer which contains UI part of our application. This layer is used for the design purpose where data is presented
to the user or input is taken from the user. For example designing registration form which contains text box, label, button etc.

2) Business layer:
In this layer all business logic written like validation of data, calculations, data insertion etc. This acts as a interface between Client layer
and Data Access Layer. This layer is also called the intermediary layer helps to make communication faster between client and data layer.

3) Data layer:
In this layer actual database is comes in the picture. Data Access Layer contains methods to connect with database and to perform insert,
update, delete, get data from database based on our input data.

* ANSWER:
-------
* http://www.codeproject.com/Questions/211552/Difference-Between-tier-tier-tier-Architech

Difference between 1-tier/2-tier & 3-tier architecture are as follows:

"Tier" can be defined as "one of two or more rows, levels, or ranks arranged one above another".

1-Tier Architecture is the simplest, single tier on single user, and is the equivalent of running an application on a personal computer. All the required
component to run the application are located within it. User interface, business logic, and data storage are all located on the same machine. They are the
easiest to design, but the least scalable. Because they are not part of a network, they are useless for designing web applications.

2-Tier Architectures supply a basic network between a client and a server. For example, the basic web model is a 2-Tier Architecture. A web browser makes
a request from a web server, which then processes the request and returns the desired response, in this case, web pages. This approach improves scalability
and divides the user interface from the data layers. However, it does not divide application layers so they can be utilized separately. This makes them difficult
 to update and not specialized. The entire application must be updated because layers aren’t separated.

3-Tier Architecture is most commonly used to build web applications. In this model, the browser acts like a client, middleware or an application server contains
 the business logic, and database servers handle data functions. This approach separates business logic from display and data.
So the 3 layers commonly known as : Presentation Layer(PL/UI),Business Logic Layer(BLL) & Data Access Layer(DAL).

* What is CRUD testing and how does a tester test this?
CRUD testing is actually Black Box testing. CRUD stands for (Create, Read, Update, Delete). I.e.
whether you can Create or Add data, Whether you can Read or Access The Data after it is saved once,
or whether you can Deteted the data along with its relationship.

* Who is servant-leader? A Scrum Master is a servant-leader whose focus is on the needs of the team members and those they serve (the customer),
with the goal of achieving results in line with the organization's values, principles, and business objectives.

Appium FAQ

My FAQ's
---------
* Appium
Appium is an open source test automation framework for use with native, hybrid and mobile web apps. It drives iOS, Android,
and Windows apps using the WebDriver protocol.

* What is the pre condition or setting required for appium?
Resources you will need:
Appium:
http://appium.io
IntelliJ IDEA:
https://www.jetbrains.com/idea/  ( Or Eclipse IDE )
Appium Java Client:
      http://mvnrepository.com/artifact/io.appium/java-client/3.3.0
Selenium Standalone Server:
      http://www.seleniumhq.org/download/
Xcode :
      http://developer.apple.com/xcode/download/

* What is the locator in appium?



1) Explain what is Appium?

Appium is a freely distributed open source mobile application UI testing framework.

2) List out the Appium abilities?

Appium abilities are

Test Web
Provides cross-platform for Native and Hybrid mobile automation
Support JSON wire protocol
It does not require recompilation of App
Support automation test on physical device as well as similar or emulator both

It has no dependency on mobile device

Install Appium
If you want to run Appium via an <<<npm install>>>, hack with or contribute to Appium, you will need node.js and npm 4 or greater (use n or brew install node to install Node.js. Make sure you have not installed Node or Appium with sudo, otherwise you’ll run into problems). We recommend the latest stable version.

To verify that all of Appium’s dependencies are met you can use appium-doctor. Install it with npm install -g appium-doctor (or run it from source), then run appium-doctor and supply the --ios or --android flags to verify that all of the dependencies are set up correctly.

You also need to download the Appium client for your language so you can write tests. The Appium clients are simple extensions to the WebDriver clients. You can see the list of clients and links to download instructions at the Appium clients list.

iOS Requirements

Mac OS X 10.10 or higher, 10.11.1 recommended
XCode >= 6.0, 7.1.1 recommended
Apple Developer Tools (iPhone simulator SDK, command line tools)
Ensure you read our documentation on setting yourself up for iOS testing!
1.
Testing iOS apps with Appium: from setup to first test on OS X
https://www.youtube.com/watch?v=meU4TzI3KNM

2.
https://www.linkedin.com/pulse/appium-top-50-real-time-interview-questions-evergreen-akhil-reddy
APPIUM TOP 50 REAL TIME INTERVIEW QUESTIONS EVERGREEN

http://www.guru99.com/appium-interview-questions.html

1)What are the Advantages of using Appium?
•It allows you to write tests against multiple mobile platforms using the same API.
•You can write and run your tests using any language or test framework.
•It is an open-source tool that you can easily contribute to.


2) Do I need Appium?

The answer to such a question is always: "It depends on what you need!". So the actual question becomes: "Which conditions make Appium suitable for me?". The most important assumption is that you are developing apps (pretty obvious I know). If you are developing an app for a specific platform (and have no intention of supporting others in future), Appium is not really required and this is basically the answer you are looking for. Appium becomes meaningful only when you have apps targeting more than one platform (Windows, Android or iOS to cite some). Appium becomes essential if you have a webview-based app (necessarily) targeting many platforms out there.

3) How difficult is it to set up a working environment?

The assumption is that Appium comes with a not-so-tiny documentation, so users are not really left alone. However it is not so straightforward to set up Appium to work on a Windows or Mac machine (did not try on Unix so far). In my experience, instead of installing the GUI-based application, it is much better to install the command-line application (which is released more often). Also beware [sudo], as Appium will surely bite you back late in time if you installed it as a [superuser] (this is probably the clearest point in the documentation)

4)What is Appium's strongest point?

Appium is based on Selenium which is an HTTP protocol by Google designed to automate browsers. The idea is actually very nice as automating an app (especially a webview-based one) is not so different (in terms of required APIs) from automating a browser. Appium is also designed to encourage a 2-tier architecture: a machine runs the test written in one language ([csharp], [ruby], [javascript] are only a few among the many supported ones) and another one (the test server) actually executes it. Furthermore the WebDriver protocol targets scalability (because based on HTTP), this makes Appium very scalable as well; remember that you will need to write your test once, Appium will be in charge of executing it on more platforms.

5) What is Appium's weakest point?

Open source software is great, however it naturally comes with some downsides which nobody is to be blamed for: unreliability is probably one of the most undeniable. My test suites need to run many tests every day and those tests must be stable (it means they should fail only when the product, or the test has a defect). However it took me much time to build layers on top of Appium to make my tests stable. This is especially true when it comes to synchronizing your tests with the automation: your test issues a command which translates into an automation command by Appium causing an interaction on the device; a command returns when after it has been issued, not when the interaction is actually over! For this reason you will probably find yourself adding delays to your tests (if you are doing things in the wrong/most-straightforward way) or developing synchronization layers on top of your test APIs (the good approach).


6)What is the Appium Philosophy?
•R1. Test the same app you submit to the marketplace
•R2. Write your tests in any language, using any framework
•R3. Use a standard automation specification and API
•R4. Build a large and thriving open-source community effort

7)Why do the Appium clients exist?

We have the Appium clients for 3 reasons:
•1) There wasn't time to go through a full commit and release cycle for Selenium once we'd set a release date for 1.0
•2) Some of the things that Appium does, and which its users really find useful, are never going to be an official part of the new mobile spec. We want a way to make these extensions available
•3) There are some behaviors whose state is as yet unknown. They might make it into the spec and get deleted from the clients, or they might be in category #2

Ultimately, the only reason for the clients will be #2. And even that is actually evidence that we are conforming to the WebDriver spec (by implementing the extension strategy it recommends) rather than departing from it. The Appium clients are the easiest and cleanest way to use Appium.

8) Explain what is Appium?

Appium is a freely distributed open source mobile application UI testing framework.

9)What are main Advantages of using Appium on Sauce Labs?
•You save the time it takes to set up the Appium server locally.
•You don't have to install/configure the mobile emulators/simulators in your local environment.
•You don't have to make any modifications to the source code of your application.
•You can start scaling your tests instantly.

10)Which language should I use to write my tests?

This is probably the best thing about Appium: you can write your tests in any language. Since Appium is nothing more than an HTTP server, a test which needs to be interfaced with Appium can simply use HTTP libraries to create HTTP sessions. You just need to know the Selenium protocol in order to compose the right commands and that's it!

However, as you can imagine, there are already some libraries doing this for the most common languages and development frameworks out there: C#, [dotnet], [java], Ruby, [python] and Javascript are just few examples; and they all are open source projects.http://akhilreddytechnologies.blogspot.in/2014/06/quality-management.html

11) What type of tests are suitable for Appium?

When it comes to testing, especially webview-based apps, there are a lot of scenarios that can be tested also depending on the feature coverage you want to ensure. Appium is pretty handy for testing scenarios that users will go through when using your app. But if you need to test more than UX simple interactions, then Appium will become a limitation. Think about features like keyboarding. It is not so easy when complex touch/keyboard mixed scenarios are involved, the probability of a false failure is high; do not misunderstand me on this: I am not saying it is impossible to do, just not so easy as you might think!

Another little nightmare with Appium is exchanging data. When your test needs to exchange data with your app (especially in the incoming direction), you will need to play some tricks. So always consider that sending and receiving information is not that straightforward. It is not Appium's fault, the WebDriver specification was designed for automating stuff, not exchanging data!

12) Can Appium be used for all my tests?

This is an implied question in this question. The answer is No (in general). As I said before Appium is not suitable for all types of tests you might want to write (this depends on the functionalities you need to cover). There are some scenarios that can be difficult to test and some of them are so platform specific that you will need to write some suites just for Android or iOS for example. Remember that you can always get to do something no matter how hard it is, so you can test all your difficult scenarios using Appium, but always keep in mind one question: is it worth the time and the pain? Having Appium testing some scenarios leaving a few tests to other approaches is fine too! World is not black and white!

 13) List out the Appium abilities?

Appium abilities are
•Test Web
•Provides cross-platform for Native and Hybrid mobile automation
•Support JSON wire protocol
•It does not require recompilation of App
•Support automation test on physical device as well as similar or emulator both
•It has no dependency on mobile device

14) List out the pre-requisite to use APPIUM?

Pre-requisite to use APPIUM is
•ANDROID SDK
•JDK
•TestNG
•Eclipse
•Selenium Server JAR
•Webdriver Language Binding Library
•APPIUM for Windows
•APK App Info On Google Play
•Js

15)What is Appium's most considerable limitation?

Hand down my chin starting thinking and mumbling. If I had to provide one single thing you should be aware of about Appium before starting using it, it would surely be: multiple session handling. Since Appium is a server, it serves HTTP requests; you might have two different computers running a test each against the same Appium server: what happens? As for now, Appium does not support this scenario and the second test will be aborted. This is a considerable limitation, because no queuing system comes with Appium. If you need to support multiple sessions, you will need to implement this feature by yourself.

16)How active is Appium?

Appium is available on GitHub and there you can find all you need. The Appium team is responsible for developing many different subsystems revolving around Appium (like APIs for different languages), thus I can tell you that this product is alive and very active. The team is also pretty well responsive and once you open an issue you will find a reply after no more than 36 hours (this ETA comes by my personal experience). The community around Appium is also pretty large and growing every month.

17)What about performance?

Appium is not a huge application and requires very little memory. Its architecture is actually pretty simple and light as Appium acts like a proxy between your test machine and each platform automation toolkit. Once up and running, Appium will listen to HTTP requests from your tests; when a new session is created, a component in Appium's Node.js code called _proxy_ will forward these Selenium commands to active platform drivers. In the case of Android for example, Appium will forward incoming commands to the [chromedriver] (90% of cases, Appium will not even change commands while routing them), this happens because ChromeDriver supports WebDriver and Selenium. For this reason Appium will not allocate much memory itself, you will see a lot of memory being allocated by other processes like [adb], ChromeDriver or the iOS automation toolkit (called by Appium while testing and automating).

18) Which approach is the best? Testing on real devices or simulators/emulators?

This is a tough question because both options offer different levels of testability and flexibility when testing. There are also many problems associated with each. So my answer will be again: "It depends on your needs!".

Running test on a device is, always in my opinion, the best solution because it offers a testing environment completely aligned with the running environment: tests run on those devices where your apps will be used  once published on stores. However devices must be connected to the Appium server via USB at least, and this is not always a very nice thing. ADB has a known issue for which a device disconnects after a while (even though it remained plugged all the time): because of this your tests might fail after a while and Appium will report that a device could not be found! I had to write a component which resets ADB after some time so that devices will not disconnect.

19)Tests on emulators or simulators?

On the other hand emulators/simulators will never disconnect from Appium. They also offer nice options like the ability of choosing the orientation or other hardware-related configurations. However your tests will run much slower (sadly, my tests ran 3 times slower) and do expect some crazy behavior from the Android emulator which sometimes shuts down unexpectedly. Another problem is that emulators tend to allocate a lot of memory.



20)What platforms are supported?

Appium currently supports Android and iOS, no support for Windows unfortunately.

21) Do I need a server machine to run tests on Appium?

No! Appium promotes a 2-tier architecture where a test machine connects to a test server running Appium and automating the whole thing. However this configuration is not mandatory, you can have Appium running on the same machine where your test runs. Instead of connecting to a remote host, your test will connect to Appium using the loopback address.

22) List out the limitations of using Appium?
•Appium does not support testing of Android Version lower than 4.2
•Limited support for hybrid app testing. E.g., not possible to test the switching action of application from the web app to native and vice-versa
•No support to run Appium Inspector on Microsoft Windows

23)How can I test Android tablets?

The best way to test on different Android emulators screen sizes is by using the different Android Emulator Skins . For instance, if you use our Platforms Configurator you'll see the available skins for the different Android versions (e.g Google Nexus 7 HD, LG Nexus 4, Samsung Galaxy Nexus, Samsung Galaxy S3, etc). Some of these skins are tablets, for example the Google Nexus 7C is a tablet which has a very large resolution and very high density.

24)How can I run manual tests for my mobile native app or mobile hybrid app?

Sauce Labs doesn't support manual tests for mobile native app or mobile hybrid app tests.

25)What type of keyboard and buttons do the Android emulators have?

Android Emulators have software buttons and a hardware keyboard. In a regular Android emulator the device buttons are software buttons displayed on the right size of the emulator. For the Android emulators with different skins (e.g Google Nexus 7 HD, LG Nexus 4, Samsung Galaxy Nexus, Samsung Galaxy S3, etc) the device buttons are also software buttons that are overplayed on top of the skin. For instance, if you hover the mouse around the edges of any of our Android emulators with an specified skin, a hover icon will appear and you should be able to find whatever buttons actually exist on the device that the skinned emulator is trying to emulate (e.g power button along the top, volume buttons along the edge, back/home buttons right below the screen, etc).

 26) Explain how to find DOM element or xPath in a mobile application?

To find the DOM element use “UIAutomateviewer” to find DOM element for Android application.

27) Explain the design concept of Appium?
•Appium is an “HTTP Server” written using Node.js platform and drives iOS and Android session using Webdriver JSON wire protocol. Hence, before initializing the Appium Server, Node.js must be pre-installed on the system
•When Appium is downloaded and installed, then a server is setup on our machine that exposes a REST API
•It receives connection and command request from the client and execute that command on mobile devices (Android / iOS)
•It responds back with HTTP responses. Again, to execute this request, it uses the mobile test automation frameworks to drive the user interface of the apps. Framework like
•Apple Instruments for iOS (Instruments are available only in Xcode 3.0 or later with OS X v10.5 and later)
•Google UIAutomator for Android API level 16 or higher
•Selendroid for Android API level 15 or less

28) What language does Appium support?

Appium support any language that support HTTP request like Java, JavaScript with Node.js, Python, Ruby, PHP, Perl, etc.

29) Explain the pros and cons of Appium?

Pros:
•For programmer irrespective of the platform, he is automating ( Android or iOS) all the complexities will remain under single Appium server
•It opens the door to cross-platform mobile testing which means the same test would work on multiple platforms
•Appium does not require extra components in your App to make it automation friendly
•It can automate Hybrid, Web and Native mobile applications

Cons:
•Running scripts on multiple iOS simulators at the same time is possible with Appium
•It uses UIAutomator for Android Automation which supports only Android SDK platform, API 16 or higher and to support the older API’s they have used another open source library called Selendroid

30) I already have platform-specific tests for my app, what should I do to migrate to Appium?

Unfortunately there is not a magic formula to translate your tests into Selenium tests. If you developed a test framework on different layers and observed good programming principles, you should be able to act on some components in your tests in order to migrate your suites to Appium. Your current tests are going to be easy to migrate if they are already using an automation framework or something close to a command-based interaction. Truth being told, you will probably need to write your tests from the beginning, what you can do is actually reusing your existing components.

31) How much time does it take to write a test in Appium?

Of course it depends by the test. If your test simply runs a scenario, it will take as many commands as the number of interactions needed to be performed (thus very few lines). If you are trying to exchange data, then your test will take more time for sure and the test will also become difficult to read.

32) Any tips or tricks to speed up my test writing activity or my migration process?

Here is one piece of advice. Since your tests will mostly consist in automation tasks (if this condition is not met, you might want to reconsider using Appium), make interactions reusable! Do not write the same sub-scenarios twice in your tests, make a diagram of what your scenarios are and split them in sub activities; you will get a graph where some nodes are reachable from more than one node. So make those tasks parametric and call them in your tests! This will make your test writing experience better even when you need to migrate from existing tests (hopefully you already did this activity for your existing suites).

33) What test frameworks are supported by Appium?

Appium does not support test frameworks because there is no need to support them! You can use Appium with all test frameworks you want. NUnit and .NET Unit Test Framework are just a few examples; you will write your tests using one of the drivers for Appium; thus your tests will interface with Appium just in terms of an external dependency. Use whatever test framework you want!

34)Can I interact with my apps using Javascript while I am testing with Appium?

Yes! Selenium has commands to execute Javascript instructions on your app from your tests. Basically you can send a JS script from your test to your app; when the commands runs on Appium, the server will send the script to your app wrapped into an anonymous function to be executed.

35)Is it Returning the values?

However your Javascript interaction can get more advanced as your script can return a value which will be delivered to your test when the HTTP response is sent back by Appium once your Javascript has finished running. However this scenario comes with a limitation: your Javascript can send back only primitive types (integers, strings), not complex objects. The limitation can be overtaken by passing objects as JSON strings or by modifying Appium's or Selenium's code to support specific objects.

36)How can I exchange data between my test and the app I am testing?

Appium, actually the WebDriver specification, is not made for exchanging data with your app, it is made to automate it. For this reason, you will probably be surprised in finding data exchange not so easy. Actually it is not impossible to exchange data with your app , however it will require you to build more layers of testability.

37)What data exchange is?

When I say "data exchange" I am not referring to scenarios like getting or setting the value of a textbox. I am also not referring to getting or setting the value of an element's attribute. All these things are easy to achieve in Appium as Selenium provides commands just for those. By "data exchange" I mean exchanging information hosted by complex objects stored in different parts of your webview-based app like the window object. Consider when you dispatch and capture events, your app can possibly do many things and the ways data flows can be handled are many. Some objects might also have a state and the state machine behind some scenarios in your app can be large and articulated. For all these reasons you might experience problems when testing.

38)What are Testability layers?

In order to make things better, as a developer, what you can do is adding testability layers to your app. The logic behind this approach is simply having some test-related objects in your app which are activated only when your tests run. I learned about this strategy from one of my colleagues Lukasz and such a technique can be really powerful. Enable your testability layers when testing in order to make data exchange easy.

39)Is it Exchanging data through Javascript?

Selenium provides commands do execute Javascript on the app, it is also possible to execute functions and have them return data (only basic types). If you exchange JSON strings it should be fine as JSON.stringify(str) will turn your JSON string into an object on the app side, while on the test side (depending on the language you are using), you can rely on hundreds of libraries to parse the string you receive.

40) What are the most difficult scenarios to test with Appium?

As I already mentioned in Question 6 and Question 16, Appium is not suitable for all types of tests. There is a particular scenario that will make your tests more difficult to write: data exchange. I already said it but I will repeat the same thing because it is very important: Appium and WebDriver are designed to automate stuff... not to exchange data with them. So what if we need to exchange information with our app during tests? Should we give up on Appium and write our tests manually for each platform? I am not saying this, but there are cases where you should consider this option (not nice I know, but if the effort of writing tests for Appium is higher than the benefits, than just throw Appium away).

Appium is very nice because it will let you write tests once for all platofrms instead of writing as many tests as the numbers of platforms you need to support. So if you need to exchange data with your app while testing it and this data flow is the same for all platforms, then you should probably keep on using Appium and find a way to write a layer on top of it to handle data. Depending on your needs this might take time, but, in my experience, it is really worth it.

41) I don't want to set up a whole infrastructure for my tests and I don't want to spend money on HW. Can Appium help me?

If you think about it, what really is required from you is writing tests. Then the fact that you must deploy an Appium server somewhere is something more. If you want to skip this part, you can rely on some web services that already deployed a whole architecture of Appium servers for your tests. Most of them are online labs and they support Selenium and Appium

42) I need to debug Appium, is it difficult?

No really! Appium is a Node.js application, so it is Javascript in the essence. The code is available on GitHub and can be downloaded in few seconds as it is small and not so complex. Depending on what you have to debug, you will probably need to go deeper in your debugging experience, however there are some key points where setting a breakpoint is always worth: the proxy component is worth a mention. In appium/lib/server/proxy.js you can set a breakpoint in function doProxy(req,res), that will be hit everytime commands are sent to platform-specific components to be translated into automation commands.http://akhilreddytechnologies.blogspot.in/2015/01/sqlplsql-interview-questions.html

43) I build my apps with Cordova, is it supported by Appium?

Cordova is a very famous system that enables you to develop webview-based apps for all platforms in short time. Appium does not explicitely say that Cordova is supported, even though they do it implicitely as some examples using apps built with Cordova are provided on Appium's website. So the answer is that Cordova should not be a problem. Why am I being so shy about it? Because anything can happen and it actually happened to me!

Cordova and Appium are two different projects that are growing up separately and independently, of course a mutual acknowledgement is present, but both teams do not really talk to each other when pushing features. So problems can occur (I am currently dealing with a problem concerning Cordova's new version which is causing my tests to fail).

 44) Explain what is APPIUM INSPECTOR?

Similar to Selenium IDE record and Playback tool, Appium has an “Inspector” to record and playback.  It records and plays native application behavior by inspecting DOM and generates the test scripts in any desired language.  However, Appium Inspector does not support Windows and use UIAutomator viewer in its option.

45) What are the basic commands that I can use in the Selenium protocol?

Google's Selenium provides a collection of commands to automate your app. With those commands you can basically do the following:
•Locate web elements in your webview-based app's pages by using their ids or class names.
•Raise events on located elements like Click().
•Type inside textboxes.
•Get or set located element's attributes.
•Execute some Javascript code.
•Change the context in order to test the native part of your app, or the webview. If your app uses more webviews, you can switch the context to the webview you desire. If your webview has frames or iframes inside, you can change context to one of them.
•Detect alert boxes and dismiss or accept them. Be careful about this functionality, I experienced some problems.

46) I want to run my tests in a multithreaded environment, any problems with that?

Yes! You need some special care when using Appium in a multithreaded environment. The problem does not really rely on the fact of using threads in your tests: you can use them but you must ensure that no more than one test runs at the same time against the same Appium server. As I mentioned, Appium does not support multiple sessions, and unless you implemented an additional layer on top of it to handle this case, some tests might fail.http://akhilreddytechnologies.blogspot.in/2014/06/loadrunner-interview-questions.html

47) Mention what are the basic requirement for writing Appium tests?

For writing Appium tests you require,
•Driver Client: Appium drives mobile applications as though it were a user. Using a client library you write your Appium tests which wrap your test steps and sends to the Appium server over HTTP.
•Appium Session: You have to first initialize a session, as such Appium test takes place in the session. Once the Automation is done for one session, it can be ended and wait for another session
•Desired Capabilities: To initialize an Appium session you need to define certain parameters known as “desired capabilities” like PlatformName, PlatformVersion, Device Name and so on. It specifies the kind of automation one requires from the Appium server.
•Driver Commands: You can write your test steps using a large and expressive vocabulary of commands.

48)How can I run Android tests without Appium?

For older versions of Android Appium might not be supported. For instance, Appium is only supported in Android versions 4.4 or later for Mobile Web Application tests, and Android versions 2.3, 4.0 and later for Mobile Native Application and Mobile Hybrid Application tests.

For those versions in which Appium is not supported you can request an emulator driven by Webdriver + Selendroid. All you need to do is use our Platforms Configurator and select Selenium for the API instead of Appium.

In the Sauce Labs test you will notice that the top of the emulator says "AndroidDriver Webview App". In addition, you will notice that you will get a "Selenium Log" tab which has the output of the Selendroid driver.

With an emulator driven by Webdriver + Selendroid you will be able to test Mobile Web Application only. You should be able to select any Android emulator version from 4.0 to the latest version and any Android emulator skin (e.g "deviceName":"Samsung Galaxy Tab 3 Emulator").

49)How can I run iOS tests without Appium?

For older versions of iOS Appium might not be supported. For instance, Appium is supported in iOS versions 6.1 and later. For earlier versions of iOS the tool or driver used to drive your mobile applications automated test is called iWebdriver.

To obtain a simulator driven by iWebdriver use our Platforms Configurator and select Selenium for the API instead of Appium. With an emulator driven by iWebdriver you will be able to test Mobile Web Application only. In addition, in the Sauce Labs test you will notice a "Selenium Log" tab which has the output of iWebdriver.

50)What mobile web browsers can I automate in the Android emulator?

Currently the only browser that can be automated in our Android emulators is the stock browser (i.e Browser). The Android stock browser is an Android flavor of 'chromium' which presumably implies that its behavior is closer to that of Google Chrome.



----------------------------

http://career.guru99.com/top-18-appium-interview-questions/

Top 18 Appium Interview Questions & Answers


1) Explain what is Appium?

Appium is a freely distributed open source mobile application UI testing framework.

2) List out the Appium abilities?

Appium abilities are

Test Web
Provides cross-platform for Native and Hybrid mobile automation
Support JSON wire protocol
It does not require recompilation of App
Support automation test on physical device as well as similar or emulator both
It has no dependency on mobile device

3) List out the pre-requisite to use APPIUM?

Pre-requisite to use APPIUM is

ANDROID SDK
JDK
TestNG
Eclipse
Selenium Server JAR
Webdriver Language Binding Library
APPIUM for Windows
APK App Info On Google Play
js

4) List out the limitations of using Appium?

Appium does not support testing of Android Version lower than 4.2
Limited support for hybrid app testing. E.g., not possible to test the switching action of application from the web app to native and vice-versa
No support to run Appium Inspector on Microsoft Windows

5) Explain how to find DOM element or xPath in a mobile application?

To find the DOM element use “UIAutomateviewer” to find DOM element for Android application.

appium

6) Explain the design concept of Appium?

Appium is an “HTTP Server” written using Node.js platform and drives iOS and Android session using Webdriver JSON wire protocol. Hence, before initializing the Appium Server, Node.js must be pre-installed on the system
When Appium is downloaded and installed, then a server is setup on our machine that exposes a REST API
It receives connection and command request from the client and execute that command on mobile devices (Android / iOS)
It responds back with HTTP responses. Again, to execute this request, it uses the mobile test automation frameworks to drive the user interface of the apps. Framework like
Apple Instruments for iOS (Instruments are available only in Xcode 3.0 or later with OS X v10.5 and later)
Google UIAutomator for Android API level 16 or higher
Selendroid for Android API level 15 or less
7) What language does Appium support?

Appium support any language that support HTTP request like Java, JavaScript with Node.js, Python, Ruby, PHP, Perl, etc.

8) Explain the pros and cons of Appium?

Pros:

For programmer irrespective of the platform, he is automating ( Android or iOS) all the complexities will remain under single Appium server
It opens the door to cross-platform mobile testing which means the same test would work on multiple platforms
Appium does not require extra components in your App to make it automation friendly
It can automate Hybrid, Web and Native mobile applications
Cons:

Running scripts on multiple iOS simulators at the same time is possible with Appium
It uses UIAutomator for Android Automation which supports only Android SDK platform, API 16 or higher and to support the older API’s they have used another open source library called Selendroid
9) Explain what is APPIUM INSPECTOR?

Similar to Selenium IDE record and Playback tool, Appium has an “Inspector” to record and playback.  It records and plays native application behavior by inspecting DOM and generates the test scripts in any desired language.  However, Appium Inspector does not support Windows and use UIAutomator viewer in its option.

10) Mention what are the basic requirement for writing Appium tests?

For writing Appium tests you require,

Driver Client: Appium drives mobile applications as though it were a user. Using a client library you write your Appium tests which wrap your test steps and sends to the Appium server over HTTP.
Appium Session: You have to first initialize a session, as such Appium test takes place in the session. Once the Automation is done for one session, it can be ended and wait for another session
Desired Capabilities: To initialize an Appium session you need to define certain parameters known as “desired capabilities” like PlatformName, PlatformVersion, Device Name and so on. It specifies the kind of automation one requires from the Appium server.
Driver Commands: You can write your test steps using a large and expressive vocabulary of commands.
11) Mention what are the possible errors one might encounter using Appium?


The possible errors one might face in Appium includes

Error 1: The following desired capabilities are needed but not provided: Device Name, platformName
Error 2: Could not find adb. Please set the ANDROID_HOME environment variable with the Android SDK root directory path
Error 3: openqa.selenium.SessionNotCreatedException: A new session could not be created
Error 4: How to find DOM element or XPath in a mobile application?
12) Do you need a server machine to run tests on Appium?

No, you don’t need server machine to run tests on Appium.  Appium facilitates a 2-tier architecture where a test machine connects to a test server running Appium and automating the whole thing. You can have Appium running on the same machine where your test runs.

13) Is it possible to interact with my apps using Javascript while I am testing with Appium?

Yes, it is possible to interact with App while using Javascript. When the commands run on Appium, the server will send the script to your app wrapped into an anonymous function to be executed.

14) Mention what are the most difficult scenarios to test with Appium?

The most difficult scenario to test with Appium is data exchange.

15) While using Appium can I run my tests in a multithreaded environment?

Yes, you can run the test in a multithreaded environment but you have to ensure that no more than one test runs at the same time against the same Appium server.

16) In Android, do you need an app’s .apk to automate using Appium or you also need app in my workspace?

In Android, you only need .apk file to automate using Appium.

17) Explain what is Appium package master? How to create package?

Appium package master is a set of tools manage and create appium packages. For example to create package you can use the code



# using es7/babe1

Gulp create-package –n <package-name>

#regular es5

Gulp create-package     —nobabe1 –n <package-name>

The package will be generated in the out/<package-name>

18) Explain how test frameworks are supported by Appium?

Appium does not support test framework as such there is no need to support them.  Appium can be used with any frameworks you want.

19.
https://www.youtube.com/watch?v=sd0Cy1VYWzU
Automate Mobile application using Appium Selenium
Download Selendroid.io - Launching the test app - .apk will be downloaded.
Time : 5.58 - Desiredcabapility
BROWSER_NAME, "" - Should be blank

* What platforms are supported?
Appium currently supports Android and iOS, no support for Windows unfortunately.