Wednesday, October 21, 2009

Testing Full Interview Questions

Define quality?

Lot of quality pioneers defined quality in different ways
A quality product is defined as the one that meets product requirements But Quality can only be seen through customer eyes.So the most important definition of quality is meeting customer needs or Understanding customer requirements, expectations and exceeding those expectations.Customer must be satisfied by using the product, then its a quality product.

Life Cycle Testing

The following is the software testing process which follows life cycle testing

Requirements Gathering phase:
Verify whether the requirements captured are true user needs
Verify that the requirements captured are complete, unambiguous, accurate and non conflicting with each other

Design phase:
Verify whether the design achieves the objectives of the requirements as well as the design being effective and efficient
Verification Techniques: Design walkthroughs, Design Inspections

Coding phase:
Verify that the design is correctly translated to code
Verify coding is as per company's standards and policies

Verification Techniques: Code walkthroughs, code Inspections
Validation Techniques: Unit testing and Integration techniques

System Testing phase:

Execute test cases
Log bugs and track them to closure

User Acceptance phase:
Users validate the applicability and usability of the software in performing their day to day operations.

Maintenance phase:
After the software is implemented, any changes to the software must be thoroughly tested and care should be taken not to introduce regression

Types of Testing

Black box testing - not based on any knowledge of internal design or code. Tests are based on requirements and functionality.

White box testing - based on knowledge of the internal logic of an application's code. Tests are based on coverage of code statements, branches, paths, conditions.

Unit testing - Unit is the smallest compilable component. A unit typically is the work of one programmer.This unit is tested in isolation with the help of stubs or drivers.Typically done by the programmer and not by testers.

Incremental integration testing - continuous testing of an application as new functionality is added; requires that various aspects of an application's functionality be independent enough to work separately before all parts of the program are completed, or that test drivers be developed as needed; done by programmers or by testers.

Integration testing - testing of combined parts of an application to determine if they function together correctly. The 'parts' can be code modules, individual applications, client and server applications on a network, etc. This type of testing is especially relevant to client/server and distributed systems.

Functional testing - black-box testing aimed to validate to functional requirements of an application; this type of testing should be done by testers.
System testing - black-box type testing that is based on overall requirements specifications; covers all combined parts of a system.

End-to-end testing - similar to system testing but involves testing of the application in a environment that mimics real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate. Even the transactions performed mimics the end users usage of the application.

Sanity testing - typically an initial testing effort to determine if a new software version is performing well enough to accept it for a major testing effort. For example, if the new software is crashing systems every 5 minutes, bogging down systems to a crawl, or destroying databases, the software may not be in a 'sane' enough condition to warrant further testing in its current state.

Smoke testing - The general definition (related to Hardware) of Smoke Testing is:
Smoke testing is a safe harmless procedure of blowing smoke into parts of the sewer and drain lines to detect sources of unwanted leaks and sources of sewer odors.
In relation to software, the definition is Smoke testing is non-exhaustive software testing, ascertaining that the most crucial functions of a program work, but not bothering with finer details.

Static testing - Test activities that are performed without running the software is called static testing. Static testing includes code inspections, walkthroughs, and desk checks

Dynamic testing - test activities that involve running the software are called dynamic testing.

Regression testing - Testing of a previously verified program or application following program modification for extension or correction to ensure no new defects have been introduced.Automated testing tools can be especially useful for this type of testing.

Acceptance testing - final testing based on specifications of the end-user or customer, or based on use by end-users/customers over some limited period of time.

Load testing -Load testing is a test whose objective is to determine the maximum sustainable load the system can handle. Load is varied from a minimum (zero) to the maximum level the system can sustain without running out of resources or having, transactions suffer (application-specific) excessive delay.

Stress testing - Stress testing is subjecting a system to an unreasonable load while denying it the resources (e.g., RAM, disc, mips, interrupts) needed to process that load. The idea is to stress a system to the breaking point in order to find bugs that will make that break potentially harmful. The system is not expected to process the overload without adequate resources, but to behave (e.g., fail) in a decent manner (e.g., not corrupting or losing data). The load (incoming transaction stream) in stress testing is often deliberately distorted so as to force the system into resource depletion.

Software Testing Techniques

Testing techniques can be used to effectively design efficient test cases.These techniques can be grouped into black-box and white-box techniques. Find below some of the techniques

Black-Box Testing techniques
When creating black-box test cases, the input data used is critical. Three successful techniques for managing the amount of input data required include:

Equivalence Partitioning
An equivalence class is a subset of data that is representative of a larger class.Equivalence partitioning is a technique for testing equivalence classes rather thanundertaking exhaustive testing of each value of the larger class. For example, aprogram which edits credit limits within a given range (1,000 - 1,500) would have three equivalence classes:
<> 1,500 (invalid)

Boundary Analysis

A technique that consists of developing test cases and data that focus on the input and output boundaries of a given function. In same credit limit example, boundary analysis would test:
Low boundary +/- one (999 and 1,001)
On the boundary (1,000 and 1,500)
Upper boundary +/- one (1,499 and 1,501)

Error Guessing

Test cases can be developed based upon the intuition and experience of the tester. For example, in an example where one of the inputs is the date, a tester may try February 29, 2000

White-Box Testing techniques

White-box testing assumes that the path of logic in a unit or program is known. White-box testing consists of testing paths, branch by branch, to produce predictable results. The following are white-box testing techniques:

Statement Coverage
Execute all statements at least once.

Decision Coverage
Execute each decision direction at least once.

Condition Coverage
Execute each decision with all possible outcomes at least once.

Decision/Condition Coverage

Execute all possible combinations of condition outcomes in each decision. Treat all iterations as two-way conditions exercising the loop zero times and one time.


Life Cycle of a Software Bug

Once a bug(defect or error) is found, it should be communicated to the developers who can fix it. Once the bug is fixed/resolved, the fix should be verified by the testers and should be closed.

Quality Control and Assurance

TESTING means "quality control"
QUALITY CONTROL measures the quality of a product
QUALITY ASSURANCE measures the quality of processes used to create a quality product.

What is the difference between alpha and beta testing?

A: Alpha testing is performed by in-house developers and in-house software QA personnel. Beta testing is performed by the public, a few select prospective customers, or the general public. Beta testing is performed after the alpha testing is completed.

Testing Models

There are various models which have been presented in the past 20 years in the field of Software Engineering for Development and Testing. Let us discuss and explore into few of the famous models.

The following models are addressed:
Waterfall Model.
Spiral Model.
'V' Model.
'W' Model, and
Butterfly Model.

The Waterfall Model
This is one of the first models of software development, presented by B.W.Boehm. The Waterfall model is a step-by-step method of achieving tasks. Using this model, one can get on to the next phase of development activity only after completing the current phase. Also one can go back only to the immediate previous phase.
In Waterfall Model each phase of the development activity is followed by the Verification and Validation activities. One phase is completed with the testing activities, then the team proceeds to the next phase. At any point of time, we can move only one step to the immediate previous phase. For example, one cannot move from the Testing phase to the Design phase.

Spiral Model
In the Spiral Model, a cyclical and prototyping view of software development is shown. Test are explicitly mentioned (risk analysis, validation of requirements and of the development) and the test phase is divided into stages. The test activities include module, integration and acceptance tests. However, in this model the testing also follows the coding. The exception to this is that the test plan should be constructed after the design of the system. The spiral model also identifies no activities associated with the removal of defects.

'V' Model

Many of the process models currently used can be more generally connected by the 'V' model where the 'V' describes the graphical arrangement of the individual phases. The 'V' is also a synonym for Verification and Validation.
By the ordering of activities in time sequence and with abstraction levels the connection between development and test activities becomes clear. Oppositely laying activities complement one another (i.e.) server as a base for test activities. For example, the system test is carried out on the basis of the results specification phase.

The 'W' Model
From the testing point of view, all of the models are deficient in various ways:
The Test activities first start after the implementation. The connection between the various test stages and the basis for the test is not clear.
The tight link between test, debug and change tasks during the test phase is not clear.

Why 'W' Model?
In the models presented above, there usually appears an unattractive task to be carried out after coding. In order to place testing on an equal footing, a second 'V' dedicated to testing is integrated into the model. Both 'V's put together give the 'W' of the 'W-Model'.

Six Sigma

Six Sigma at many organizations simply means a measure of quality that strives for near perfection.
Six Sigma techniques can produce software products of predictable quality at a predictable cost that meets the business and customer objectives. Six Sigma can be used by software organizations at any level of CMM maturity. Organizations that delay dealing with Six Sigma until CMM level 4 may miss the opportunity to make their CMM effort more likely to achieve measurable business results

CMM & CMMI

Capability Maturity Model Integration (CMM and CMMI) is a five-level assessment model developed by the Software Engineering Institute at Carnegie Mellon University to describe best engineering and management practices. CMMI is a newer model and prescribes additional process improvements for software development organizations. The models include the following process areas: requirement gathering, project planning and tracking, quality assurance, configuration management, training, collaboration and peer reviews.
Through the use of CMM, CEI strives to achieve process consistency, predictability and reliability. CEI achieved CMMI Level 5 assessment in 2005. Our Global Agile Development uses CMM and CMMI as a methodology that explains what to do to achieve successful software development.
5 Levels of CMM and CMMI
Level Focus Key Process Areas
5. Optimizing Continual process improvement Defect PreventionTechnology Change ManagementProcess Change Management
4. Managed Product and process quality Quantitative Process ManagementSoftware Quality Management
3. Defined Engineering processes and organizational support Organization Process FocusOrganization Process DefinitionTraining ProgramIntegrated Software ManagementSoftware Product EngineeringIntergroup CoordinationPeer Reviews
2. Repeatable Project management processes Requirements ManagementSoftware Project PlanningSoftware Project Tracking & OversightSoftware Subcontract ManagementSoftware Quality AssuranceSoftware Configuration Management
1. Initial Competent people (and heroics)

Interview Tips

I interviewed few candidates for my company. A few tips.
Usually interviewers form an impression on whether the candidate is good or not within 5 minutes of seeing and talking to him/her.Rest of the time, they try to validate whether their impression is correct or wrong(atleast this is what I do).So its important you make a good impression in the first few minutes.

Dress code
Well dress you wear for the interview is not everything, but you dress well, it will help you to make a initial good impression. The color of the dress gives certain impression, it seems(I dont remember paying attention to the dress, the candidate wore, but it seems it would have affected my impression at a subconscious level.But what you loose dressing up well)
· Red:You wear it to attract other people's attention.If you are presenting something or you want others to pay attention to you, dress in red. This is not the best color to wear for interview.
· Blue:If you want other people to like you, dress in blue.
· White:It gives the impression that you are hardworking.Wear this. I mean not entirely in white but the predominant color should be white.Like a black trouser and white shirt should do.
Resume
· Whatever you mention in the resume, you must try to be thorough in it.
· Be honest of what you put in it.
· Try to keep it small,it should not be longer than 2 to 3 pages.
· One of the main reason of rejection is, something is mentioned in the resume and when asked questions about it, not able to answer them and in few cases saying that "I have done that 'something' long back and I dont remember anything".In many cases its true that you have used a tool or something a year back and you dont remember much about it, in that case before attending the interview, brush up atleast some basics regarding it, do some home work and prepare yourself to talk about it or dont mention about it in the resume, if it is not that important.
Topics to prepare, for a entry level testing job.
Testing fundamentals: Testing terminology, definitions etc.
Testing Processes: The testing processes used in your current/previous company.Knowledge of life cycle testing etc.
Testing tools: Given a problem, how to solve them using testing tools.
Testing deliverables: Able to write a test plan or test case for a given product or requirements
Analytical skills: Solving Puzzles
Programming skills(optional): Able to write pseudo code for a given problem.

Few more tips
Good Communication skills: obvious isnt it
Good Listening skills or understanding skills: Able to understand the questions posed by interviewer. Try your best to understand fully what the interviewer is blabbering in the first say.But if what he says is not clear, better to ask or try to confirm what you heard is correct before answering.
Confidence level: Watch your body language, keep eye contact, dont be over confident just be confident.
Two most important tips: You should have the right skills for the job.Also equally important is you SHOW or DISPLAY infront of the interviewer that you have the right skills.

Software Testing Certification Programs

What are certification programs?
If you are in software field, you might have heard about java certified boy or oracle certified girl. Basically these are exams which are specific to a software discipline conducted by some institutes.When you pass the exam with or without flying colors you become certified in that discipline. Why should I be certified or what are the advantages of getting certified?
Well most of these institutes are international bodies, so when you get certified in a discipline, its a formal recognition that you have demonstrated a certain level of competence in the corresponding discipline
Advantages
'Exam',the one word that forced us to open even the most boring books and made us go through them all night as if they were J.K Rowling Novels.Well here, by volunteering yourself to take the exam and by paying large sums of money, you force yourself to gain knowledge in the corresponding discipline.
You will get Recognized by your peers and most importantly your boss.Management respects those who put forth the personal effort needed for self-improvement. The rewards may come in the form of promotions, increased pay.
Adds color to your resume.
Are there any certifications for software testing?
Yup,the following are some of the certification programs for software testing
Certified Software Tester (CSTE):
This certification mostly tests the knowledge of the software testing concepts, principles and practices
Advanced Software Tester (ASTE):
This certification tests the ability to develop real solutions to software testing challenges in the current IT organizations, by proposing a solution to a real-world problem.
Master Software Tester (MSTE):
This certification tests the ability to innovate beyond current testing practices in
solving IT challenges, as well as, demonstrate public service in the IT testing
profession.