Monday, May 31, 2010

Qualities you should evaluate while taking Interview for a tester position.

Interviewing is an art and it just like other arts comes by practice. While interviewing you are required to judge a candidate, based on only few questions, whether he/she is fit enough to work in your team and your organization. I'm outlining some of the important aspects that will help you in evaluating a candidate for testing role. These are not the only aspects you should consider rather you should observe a candidate based on your specific requirements for the open position: 
  1. Plan the interview - Just like anything other activity you should plan your interview. You should go through the resume and understand different level of information e.g. Education, Type of exp, Type of project done, Domains candidate has worked, Knowledge of tools etc. Identify what are the key skills you need for specific role and position. Each position may require different level of skills and should be evaluated accordingly.
  2. Type of questions - are very important and should depend on the candidates total experience. E.g. for the junior position you should ask objective questions (What is BVA?) and should expect objective answers. For senior positions in addition you should also ask subjective questions (like explain test plan and test strategy), this will help you understand the comprehensive knowledge of the candidate. Similarly you would like to ask different set of questions to a database tester, a functional tester and a performance tester. If you have doubts about the answer that is no harm in asking a counter or related question to check the depth of candidate skills.
  3. Communication skills - This is one of the important aspect as the candidate will require to communicate a lot with different groups e.g. testers, developers, managers, customers etc. Candidate should have good written and speaking skills.
  4. Faking the skills - Many a time you will observe a resume that mentions lot of tools and project around them. At a first look you will find the resume very impressive, but when you ask few questions you will realize that lot of information is not real and fake. You should spend first 5-10 minutes to understand if someone is faking the skill, if it is true there is no point in proceeding with interview.
  5. Attention to Details - Try to judge candidate based on his attention during the interview. Observe how he/she is able to understand the questions in details and giving appropriate answers to the questions you have asked. If you have to explain same question multiple times then it may create trouble for you later.
  6. Technical Skills - This is the most important aspect of the evaluation. You need someone in your team who has good technical skills on the specific areas you are looking. Evaluate candidate skills based on the requirement for your project. Also evaluate candidate skills for the specific role you are looking into. e.g. if you are looking for a security tester and he/she doesn't have a clue on buffer overflow or SQL injection then that may not be the worth.
  7. Ability to learn new things - Identify the aptitude of candidates towards new aspects. If a candidate doesn't know the specific area you are planning to work, then evaluate if the candidate is curious, quick learner, shows interest in learning and exploring new things he/she doesn't know.
  8. Knowledge of Test methodologies, techniques and approaches - If the candidate possess good knowledge on various test methods and techniques then he might prove effective when he/she is assigned tasks on the project. You may ask few questions to start with and see how effectively candidate defines test data for the problems or defines test approach for a particular case study.
  9. Giving respect to the candidate - We should give respect to the candidate even if the candidate is rejected. If possible explain the kind of work and profile you are looking for. Also try to see if the person suits some other open requirements in your organization. A rejected candidate for security testing may be a prospective candidate for functional testing if he/she posses related skills.
  10. Collation of feedback - Collate all the inputs you receive and make a call on where the candidate stands as per your expectations. You can prepare a skill assessment sheet where you have defined skills and rating against each of the skill area. This will help you make a go/no-go decision. Also based on your organizational setup try to analyze the candidate skills in respect to the organizational vision. Many a time technical teams pass the candidates but they are rejected in later stages of interviews for senior management and HR. You should also keep these things in mind. 

Sunday, May 30, 2010

Myths and Facts about Software Testing...

Even though software testing is a complete software engineering role. There is lack of information available at acedamic level about software testing (at least in India). Due to this not many of the computer science graduates think about Software testing as a full fledged career and rather more attracted towards a programmer role. With this blog I'm trying to clear some of the myths that exists in people minds:

Myth 1 – Testers are non technical bunch of people who can test applications without using any technical skills

Fact – Testing is a Software Engineering job and Testers are software engineers who are equally qualified for any software engineering role

Myth 2 – Testing is a routine job and do not require techniques and thinking

Fact – Testing is a very challenging, innovative and creative skill that requires significant level of analytical thinking, system level thinking and lateral thinking

Myth 3 – Testing is a relative easy job and can be done very quickly as comparison to coding

Fact – Testing is equally (and more) tough and strategic as coding and also requires significant time in planning, designing and execution of tests

Myth 4 There are not many and better career opportunities available in software testing field as compared to programming
Fact - Today testing is one of the best career available with career levels equals to any other software engineering role. Most of the organizations recognizes testing as a responsible and innovative role. 

I believe that being tester everyone should educate other people about these facts and make software testing as a respectful career choice.

Feel Pride in you and you being a TESTER...

Qualities a Tester must Strive for...

Software testing is a profession and like any profession that existed, software testing also requires tremendous level of abilities, skills and qualities. I'm trying to list some of the qualities that a Tester must strive for...
  1. Passion for Quality – If you have this… then well…Rest will follow
  2. Five Senses for Quality - Speak, See, Hear, Smell and Feel Quality  
  3. Understand Technology – Learn & Earn Technological Advances 
  4. Continuously Improve Technical Skills – Focused and Strategic learning 
  5. Understand Product Domain - You can Break ONLY IF you know How It Works 
  6. Think, Think and Think – Its all about thinking 
    1. System Level Thinking 
    2. Analytical Problem Solving  
    3. Problem Decomposition Skills 
    4. Lateral Thinking 
    5. Survival mechanism – The fittest to survive 
    6. Don’t restrict your thinking 
  7. Think Smart, Do Smart, Be Smart – Curiosity and Improvisation 
  8. Innovate with the ideas – Believe ‘Things can be better if done differently’ 
  9. Be a Team player - Collaborate with others...Share and Learn
  10. Be a Differentiator - Develop competencies and differentiate Outstanding work from Typical work
  11. Be a Motivator - Motivate yourself and motivate others
  12. Self Management and Discipline – ‘Don’t lose to your inner self’

Thursday, May 27, 2010

How to Solve customer problems by identifying Critical to Quality (CTQ) approach.

Many a times we are faced with situations with problems being reports from customers. If we do not look into the problems quickly and handle them carefully then we may end up with unwanted escalations and loss of business opportunities.

To manage customer problems there are many frameworks available that helps understand the problem areas and then work towards correcting them. One of such technique is Voice of Customer (VOC) to Critical to Quality (CTQ) mapping techniques in Six Sigma. This is a very effective methodology to understand and solve customer problems very quickly and effectively. Some of the elements that we need to consider for this are listed below:

  1. Identify Voice of Customer (VOC) - It is very important to understand the customer problems clearly. This may include carefully examine feedback provided by customer, talking directly to customers or getting details from customer issue base etc.
  2. Service/Quality Affected - Once you identify the problem customer is reporting then try to map this to a specific Service/Quality Area. This will help in alignment of identifying team and other resources needed to resolve the problem.
  3. Customer Expectations - Try to understand what exactly customer needs. If the need is understood correctly then you can target the corrective measures effectively.
  4. Critical to Quality (CTQ) measurement - Identify the CTQ data measurement that will help you evaluate whether the exact problem is solved or not with the suggested corrective actions. This will also define benchmark for tracking and identification of improvement in future.
  5. Action Items - This will help tracking of various action items that are identified while solving the problem. 
I'm giving an example for your easier understanding of this methodology:



Voice of Customer

(VOC)

Service/Quality Area Affected

Customer Expectations

Critical To
Quality

(CTQ)

Customers complains that bills are either not provided to them or not delivered timely

Inconsistency of Billing cycle

Bill needs to be delivered
consistently  and on time

Bill needs to be delivered on 10th
of every month with a exception of +/- 1 day



Sunday, May 23, 2010

Risk Based Regression Testing approach

One of the goals of Regression testing is 'To ensure defects in existing functionalities are not introduced while making changes or adding new features in a module'.


Regression testing is a strategic mechanism of selection of tests that needs to be exercised and performed in a release to uncover any defect which is introduced while fixing something or adding a new feature in the product or an application. One of the very effective and optimized mechanism to meet this goal is Risk Based Regression Testing approach.

Following are the steps to plan the approach:

1. First of all your need to organize your product into various modules and sub modules

2. Once the modularization is done then do Risk assessment for each module/sub-module from business perspective

3. Next step is to identify Impact on design and level of code changes done on each module/sub-module

4. You may also consider past Stability of each modules based on assessment from some of the metrics like ‘Total Issues reported against each Module’, ‘Severity of issues reported for each modules’ etc

5. Once you complete this assessment then you can identify easily the level of regression you need to perform.



Module


Sub-Module


Risk


Impact


Stability


Regression Needed


M1


S1M1


High


High


Fragile


Extensive


M1


S2M1


Medium


Medium


Stable


Medium


M2


S1M2


Low


Low


Stable


Low


M3


S1M3


Low


None


Stable


None


After each release you can review the data again and then you can redefine some of the parameters to make it more realistic and accurate for future references. This approach can help you define your regression strategy easily and ensure you focus exactly where you need to focus on impacted areas.