Wednesday, August 27, 2014

The Basics of Manual Testing

Overview

Manual testing is probably one of the most common techniques that software testers can use to measure the quality of a given software.

The human tester will use his personal capabilities (Brain that creates test cases and fingers that execute them will do the work..) to put the software in a location that it’s failed to fulfil her mission (in the perfect situation massive failure will be great…).

In addition, you always need to remember that the main task for us the testers is to make sure that the software we responsible for is working as expected (Based on SRS/Spec) and safe to use by the clients.

Manual tests can help us to succeed to accomplish those tasks because it’s allow us to reduce the defects and the risks if designed and executed efficiently. 

The basic flow of manual test:

The following steps are written to demonstrate the basic flow that a tester should follow when performing the manual side of testing, the steps are very simple and basic for every testing process.

Note, that in some companies the order between the steps may be different.

1.    The tester performs the “Static” side of testing and investigates the software documentation (SRS, DDD…).

2.       The tester understands the requirements, expectations and the business case of the company.
3.       The tester creates the software test plan (STP) that describe the entire details about the testing for that project.

Note!
In some companies the STP is skipped and not used as part of the testing methodology

4.    The tester creates the software test design (STD) that contains all cases that relevant for this project.

5.       The tester prepares the testing environment that will use while executing the STD.

6.       All tests are executed.

7.       All tests are verified against the expected results per case.

8.       Bugs are opened and verified.

9.       Project summary is written by the project owner (STR).


Important facts about “Manual” testing:

  • Manual tests are the basics for any good testing process (You cannot test an application without the human eye...).
  • Manual tests are relevant for different levels of testing (System, integration, component…).
  • Manual tests are performed without any automatic tools (Applications, scripts and any other coded objects that used to execute our tests).
  • Exploratory? Yes, it’s a basic part of manual testing.
  • Manual tests should be designed and executed based on test scenarios that has inputs and outputs (Exploratory is not the case here).
  • Manual tests are the basics for any good testing process (You cannot test an application without the human eye...).
  • Manual testing is a testing type that used on different test types (Functionality, Black Box, GUI and a lot more).
  • Manual tests are slower than automation tests (Humans Vs. machine...).
  • Manual tests should be automated if you need to run it more than 2-3 times (Regression, Regression! Regression!).
  • Pay attention, manual tests should be performed before you start to run your automation, writing an automation on a software that never tested manually is simply a waste of expensive time.
  • Manual tests should be designed and executed based on the end-user perspective (not all but the majority of the tests...).


Manual testing – The Benefits:

Quickly find the obvious bugs

In manual testing, the tester will write is tests based on the SRS requirements, this point is critical because you need to remember that those requirements (In most cases) are based on the client requests, therefore it’s easy to understand that the tester can find the obvious bugs because he test code that reflected from the spec, any deviation to the left or right will be an obvious bug because the software failed to reflect the client expectations.

Flexibility

Usually you create your automations after you finished executing your test plan and want to make your regression cycles automated, that’s the nature of testing, but! , What happens if you want to test new cases that you forgot in the first testing cycles..? In manual testing, we have the flexibility to make them “Ad-Hoc” and without the basic steps that you need to make on automated cases (Design -> coding ->Execution...).

Design Realistic Test scenarios

When Using Manual tests, the tester can design and execute an excellent test case that based on real client use cases and execute them with the same inputs and on similar environments (sometimes you cannot simulate the client environment, but understanding them can be great and helpful when you need to understand the challenges that this environment will cause when the software is used on it).

Costs (Short term)

Manual testing is cheaper than automated tests, I know that some of you may argue about this, but its basic fact… lets explain why:

  • There is no need to invest money in auto tools.
  • There is no need to waste time in automation investigations that may consume a great amount of time from your testing cycles.
  • There is no need to invest money in human resource (Developers that need to code your test cases).
  • For all of you that familiar with the maintenance that need to be done on automatic tests that may take hours and sometimes days.

You need to remember that there is a huge difference in costs when you design automatons for large/ o small scale projects, sometimes that costs are more than your company want to invent when considering the ROI results.


Manual testing – Disadvantages:

Manual tests are (in most cases) time consuming

By definition, Manual tests performed by testers that doesn’t use any coded scripts, when comparing manual tests against automated tests the execution time is massively increased. 

Now, some of you may say that creating the automated tests is the real time consuming, that’s may be true, but in our case, it’s not relevant, the simple fact is that when majoring the execution time, the automated way (in most cases) will be faster.

Manual test can become boring

I don’t think that a true tester can argue with this fact, repeating the same test twice is boring, the excitement of finding the bug in the first execution is reduced, and sometimes you raise your ends to the sky and ask yourself why!?   

To overcome this problem your goal as a tester is to reduce the amount of your “Retesting” and manual “Regressions” executions. The first testing cycle is running manually, but the second can and should be automated to keep the sanity of the tester.


Testing barriers

Manual tests are great for specific types of testing, but not relevant for all of them. When we think about the two sides of testing “Functional” and “non-functional”, it’s really simple to understand that manual tests are not the first choice to use when you want to handle the complex situations you have in this kind of tests (Performance, Load, Stress…).

To handle the kind of tests you need to use scripts and any other coded applications that may help you to simulate the relevant situations that put the software in a situations that allow you to perform the wanted test scenarios. 

Monday, August 25, 2014

Verify the truth about a person resume

Overview

The first recruitment stage starts when you receive the candidate resume, after short review you can get the basic information regarding the technical and personal skills of that person, for some recruiters this basic information will be good enough to invite the candidate to a personal interview and to continue with the recruitment process, but based on my experience I can say as a true fact that in many cases this basic information is not good enough, why?

Think about yourself, how would you prepare your CV (from a pure interest) for a position that you really want..? I’m sure that your CV is written with few deviations from the real truth, and I cannot blame you for that, sometimes you only want the opportunity to get employed and you sure that you’re the best person for the job.

That’s great for you, but the opposite for the recruiter, you all know that the recruitment process is an expensive one, first we need a person to do the job done (we need to recruit quickly as possible). Second, think about the waste of time and money for your company when this process is taking more time than expected (advertising, interviews…).

One of the Basic ways that a recruiter can use to overcome this issue, is making a simple investigation that can help him to understand the basic truth about a person (Is the written capabilities and knowledge are the ones that the candidate truly possesses…?) and to be papered with the right questions for the personal interview, that’s is job to find the most suitable persons, the ones that can stand behind their CV.

The direct benefits of a good recruiter that search the missing data with a simple investigation:

1.    Reduce the personal interview with the candidates that doesn’t relevant to the organization and waste your time if you invite them to the next recruitment stage (Personal interview).

2.    Gain a great information about candidates that relevant to your organization, this information will be used to design the relevant interview questions and in addition you can understand the quality of the person and the benefits he can add to your organization.


The social network as a data resource

I think that the social network is probably one of the greatest locations that a recruiter can use to allocate the relevant data about a candidate, it’s simple, fast and approachable for use.
A recruiter that understand and control this world can gain a Hugh advantages against other recruiters, just think about the available data in the big social network platforms (LinkedIn/Facebook/Google) that you can compare against the data presented to you on the candidate CV.
Education (degrees, publicities other qualifications):
Conferences - that the candidate attend (I think that conferences are a great place to learn and understand new ways to improve yourself in the software world).

Degrees and qualifications - can help you to understand the theoretical knowledge of a person (at least I hope it is…).

Activities in the social media - you can validate the quality of those materials and get some great data about the candidate's writing skills and theoretical knowledge.

Learning institutes - simple, sometimes you prefer degrees from specific institutes against the other once, in this example, you can investigate about an institutes that you failed to be familiar with and questioning the quality of the students that sent you their CV’s.
Previous employment:
What went wrong? As a recruiter, I think that it’s basic to questioning the real cause of “why the candidate is no longer works in is previous place?”, I think that the answer to such question is really important because there is a Hugh difference between someone that is really looking for is the next challenge against someone that fired due to unsatisfied performance.

Position - you probably will want to know the exact positions that the person did in his previous companies, why? Because it’s great indications of the tasks and challenges he used to have, from this point it’s very easy to understand the basic qualities of that person. In addition, from my experience sometimes the positions that the person described in his CV is completely different from the actual role that he performed in his past.

Recommenders - you probably familiar with the fact that some of your candidates will provide phone numbers of recommenders that will tell you stories about the benefits and qualities that you will profit if you recruit this person. Well from my experience I can tell you that sometimes the second opinion that you can get from other persons that used to work with the candidate are the once that can provide the real data about the true nature of the candidate.
Personal information:
The social networks can help the recruiter to extract a massive amount of data about a person, if the recruiter understands this power and know how to search he can get a Hugh advantage on other recruiters, and what is a “Personal” information..?
  • The person's natural surroundings (Family and close friends).
  • The person's true personality as reflected in the social network.
  • The person's hobbies.

Friday, August 8, 2014

The human side of SQA - Recruiting software testers

Overview

I want to start and say that I am far away from being an expert recruiter or anything that come near to it. But, after 12 years in the software industry and after I recruit few candidates that developed to be a quality testers, I can say that I learned a few tricks that should be useful during recruitment process. 


Recruiting the right staff is probably one of the hardest challenges that manager has during his career, just think that the people you hire today are the ones that determine the factors of success or failure in the long term, both for the team and the recruiter. 

Now, along the trivial difficulties of the regular recruitment process, we can add few berries that relevant specifically to the Quality Assurance field that make it even harder to succeed, in the recruitment process: 

  • The testing field is still new in the software industry.
  • The number of true software testing professionals is still low.
  • The career opportunities for someone who involved in the software creation such as developers/Database engineers are much more attractive that the once that as for testers.
  • The salary of testers is simply lower when comparing against the developer’s salary.
  • Most people still think that software testing is not attractive enough.
  • The field testing is still behind when talking about a formal education (The ISTQB certification is simply not good enough).

Now, the real question that I want to answer is “How can we create an effective process that will raise the % to find the right people..?” the once that we expect from them to make a real change and fit to the organizational DNA…?


Along the process of answering that question, I will try to cover some basic steps of the recruitment process. While doing so, I will suggest a few thinking points that will supply the best answer based on my perspective. 

Stage 1–The recruitment triggers 


Well, it’s basic, you recruit new employees when you need to answer a specific need/problem that should be resolved, that’s basic and well known, but what are those triggers that starts the process..? The following list is used to answer that question with the basic triggers that relevant and used in the software industry:
  • The testing team becomes the company “Bottlenecks” due to multiple projects.
  • Fast company growth that naturally cause two additional recruitments in the testing team.
  • AD-Hoc projects that need testers with specific sets of skills.
  • The testing teams should support Automation tools and as a result, they need a tester that oriented with programing languages.
  • The need of experienced testers that can add their fast impact.
  • Retirement or dismissal of existing employees.
  • The need with low cost testers that performed the simple tasks that can free the senior testers to handle the complex tasks.
  • Underachievement testing team that needs a new employees that can share new ideas and abilities.
  • You need to remember that every tester on the testing team has its own set of technical skills and knowledge, sometimes we need to recruit testers that have experience on a new technology that our product need to support, simplest example is a product that can run on WinOS and now available for a UNIX platform, as a result we need a Unix expert that has basic testing skills. 


Stage 2 – Define the position profile and role inside the testing team

In the first stage we talked about the triggers that could ignite the recruitment process, but what we cannot make a random recruitments without the definition of the future position. Now, let’s give few examples those root positions:

  • Quality Assurance manager.
  • Quality Control Senior/junior Tester
  • Quality Assurance Automation engineer.
  • Quality Assurance Manual tester.
  • Quality assurance test analyst.

The list is trivial and relevant for most testing teams, but we must understand that each Root position may be different depends on the testing requirements and testing complexity.

To demonstrate my point I want to take one example from the root list and show how the profile for this position may reflect differently per testing team that have different challenges and testing requirements:

Root position:  
Manual tester

Description: 
The manual tester is a position that relevant for 99% of the testing teams, as such, the same position may have multiple profiles that could be relevant depends on the company needs. Now, the profile is different because each company has different requirements from their testers, therefore the testers should have a specific set of skills and abilities that allow them to accomplish the testing challenges that will raise after they recruit to the company testing team.

To demonstrate my point about “Skills and Abilities” I want to define a “grocery” list that the recruiter should consider when creating the relevant profile, after reading this list I hope that you get the idea about the difficulties that the recruiter has when he need to search the most suitable candidate that can fit the predefined profile that determine specifically to the company needs and testing challenges.

Grocery items:

Item no’1: Technical Skills

The Software supported platforms:

Every platform has its own challenges and relevant set of skills that you expect from your tester to have, when designing the profile, you should be familiar with the challenges and what are the specific set of skills to overcome them, the main platform are:

  • Web based application.
  • Client based Server application.
  • Mobile based application.
  • Cloud based application.

The software technology/System challenges:

An additional aspect that should take under consideration when designing the position profile is off-course the supported technologies that used by the software uses. It’s easy to understand that the set of skills is completely different between one technology/System and another.

Few basic examples: 
  • Software that supports wireless technology.
  • Software that support different types of storages (Isilon, NTAP-CM...).
  • Software that support different types Networking (LAN, WAN, Bluetooth...).
  • Software that support different types of Operating systems (Win, UNIX...).

The Actual testing requirements

I’m familiar with more than 100 testing types that each one of them demands specific skills and knowledge from the tester. Therefore, when designing the profile, the recruiter should understand what the relevant skills that each testing type demands are, great and simple example is the set of skills that the tester need to know when performing nonfunctional tests (Performance, Load, Benchmark..) that demands a specific set of skills that are different from the functional testing types that relevant for most testers (GUI, Functionality, Boundary..)

Additional examples:
  • Manual tester for Component, Integration and System testing.
  • Manual tester for regression testing.
  • Manual tester for White/Black box testing.
  • Manual tester for Alpha/Beta testing.
  • Manual tester for Acceptance testing.
  • Manual tester for sanity testing.
  • Manual tester for compatibility testing.
  • Manual tester for exploratory testing. 


Item no’2:  The tasks that need to be done

The second item in my “grocery” list is all about the recruiter's understanding of the actual tasks that the new profile should handle after the arrival of the testing team. When talking about those “tasks” I want to be clear and say that a great recruiter will be familiar with the tasks that the candidate should handle in the near and also with the once that will be in the far future.
And way this familiarity is so important?

The answer is very simple, when you recruit a candidate to your testing team you probably do it for the long term (I don’t want to waste time on AD-HOC recruitments), therefore you need to understand the upcoming tasks and recruit the person who can handle them, from the other hand and based on my personal experience, if you recruit a candidate based on the near tasks and ignore the future tasks the recruitment is set to be a failure from the beginning.

The familiarity with the upcoming tasks allow you to design a better requirements from the position profile because you always can to compare between the tasks you need to be done and the actual capabilities that you expect from the candidate.

In addition, I want to raise an additional point that I always love to mention when recruiting a new personal to my team and that point is “Training”, sometimes your profile design based on the simple fact that you recruit someone with great learning capabilities that cannot be helpful in the short term but can do the change after few months of training(based on my experience the best software testers that I used to work with are the ones that trained after the recruitment process although they didn’t perfectly munched to the position profile).

Item no’3:  The role inside the testing team

This item is slightly different from the other once that located in our list, why? Because all the other item are relevant directly to the personal side of the recruitment, in simple words, we build the position profile that will be relevant to the job that need to be done. 
The current item is speaking about the candidate's position in the testing team, let me explain, when you define the position profile you also need to understand the strategic role that the candidate should accomplish in both the near and far future, the reason for that is that you need to define the specific requirements from the position profile when you understand the changes that this role will have in the following years/months to come.

The following table contains few examples that demonstrate my point of view:

Role
Demands for the near future
Demands for the long term
Manual tester                       
Sanity  testing
None
Manual tester                       
Regression testing
Technical leader of the product
Manual tester                       
Performance testing
Team Leader
Manual tester                       
GUI testing
Automation tester
Manual tester                       
Usability tester
QA analyst


From the five examples above you can see that each case will affect the demands from the position profile, it’s very simple to see that the position demands are different when a manual tester that responsible to make the regression test of the team (Near future) will become the team technical leader (Far Future).

Item no’4: The profile Characteristics

Continuing the previous item, after the role is determined and the recruiter understands the expected tasks that need to be accomplished by the new candidate, he now can move into the next level and determine the relevant characteristics that the position required. To do so, I created the following table that contains the main characteristics that each recruiter can use when he try to configure the set of characteristics that will most fit the for the position profile. But wait… I have a few guidelines that will help you to get the most from this table:
  • The table contains both individual and public characteristics, you always need to bathe.
  • To be successful, you need to find the most relevant set of characteristics for a specific profile, only then you’ll be able to find the best candidate to fit to your requirements.
  • Some characteristics that I mention are NOT recommended, I think that you need, both aspects when designing the future profile.
  • Never try to find all characteristics in one profile (I promise you that you cannot, remember that each position requires different characteristics that will help him to succeed).   
  • The table contains some other aspects of the person characteristics (personal abilities, specific skills and set of required abilities that allow him to make the job done).
characteristic
My Short comment
Adaptability
I think that the ability to adapt to new challenges that we have in the fast and dynamic world of testing is a great advantage, the person that can adapt to changes will most likely to be with better skills and capabilities.

Agility
You probably know that the software world is a very dynamic place, great applications that used to be great become irrelevant after a few months and new once take their place, as a result the agility of your testers should be high in a way that allow the company to provide high quality for their products while reducing the testing time, therefore a tester that hold this characteristic will work fast without reducing the quality of the product (Agile Testing anyone..?)

Attention to small details
I think that every tester should hold this one… the small details are the one that separate between success and failure.

Analytical problem solver
Find the problem->Understand it -> Solve it!
Assertive
Great char’ when you want the person who can speak loud when he want to move things and gather the team to promote is ideas.
Certification
I don’t believe in such certification, for me, it’s only helped when you are new in the testing field and you want to understand the basics, but in some companies the certification is a mandatory requirement when they recruit testers.

Collaborative
From Wiki :
“Collaboration is working with each other to do a task and to achieve shared goals”.

I hope that you understand the importance of a good collaboration and the benefits you gain when you recruit people that want to work in a collaborated environment.

Committed

It’s basic, you want to recruit the persons who will be committed to their work, when analyzing this characteristic we can mention a few aspects  that relevant:
-     Commitment to the organization.
-     Commitment to the tasks.
-     Commitment to the other persons in the testing team.
-     Commitment to the end quality of the product.

Communicator
The ability to communicate with other persons is crucial, you need to remember that in QA we need to communicate well with multiple personalities that located under different departments, each one of those personalities may help us to perform our job with greater efficiency and  in some cases we simply cannot perform our job without their help, Examples:
  • Communicate with product managers.
  • Communicate with the Developers.
  • Communicate with clients.
  • Communicate with Other testers.
  • Communicate with technical writers.


In addition, remember that we have different communication levels, Examples:
  • Tester <-> another tester (Same Level).
  • Tester <->team Manager.
  • Tester <-> Department manager.
  • Group manager <-> Department manager.

Courageous
During my many years in the software industry I saw different types of testers, the once who willing to take responsibilities and as a result, they willing to be criticized and the once who afraid to be in the position that allow them to show their real skills because they afraid that their ideas will cover them to criticize.

Creativity
I like that one, if I gave 10 testers one object and asked them to create an STD I promise you that 90% of the test will be the same, the other 10% is the creative side of the tester, when the tester have high creativity, he can design high end testes that put the software in situations that other tester will fail to test.

Credibility
Believe me when I say, Credibility is everything. You cannot create a great force of testers when some of them failed to have this basic characteristic.

Curiosity
It’s basic, you cannot make any tests without the curiosity about the results of your actions, the most talented testers that I know are the once that want to put the system in situations that the documentation failed to address the expected outcome, those testers are the one who can put the system in situations that it’s doesn’t designed to handle.

Criticism
Well, here we have two different sides, the positive and negative:

The positive perspective: 
The personal know how to get the criticism that other personals and tunnel it to positive directions (How a good criticism can make me a better person and how this criticism can help him to improve himself as a tester).

The Negative perspective: 
A personal who see a real criticism as a personal attack and become defensive without a real cause. 

Decision Maker
When testing a software we need to consider 1B aspects, a good person is the one who can make a decision and take the responsibility for that, the classic example is when a tester need to perform a “Risk Management” that he need to take hundreds of decisions or when he need to set priorities to his tests that he never have the time to test but each one of them can be important to the end quality.

decisiveness
This person take is decisions and stick with them without any deviation to the sides and until they accomplished.

Diplomatic/political
He knows how to handle with different kind of people that belong to different departments, he knows how to convey others with is the way, he knows how to remove the barriers that he has in the project timelines, and most importantly he knows how to encourage people to work harder in a way that the end quality will be higher.

Empathetic
Remember that you work with humans and not with machines, empathetic is a mandatory chore’ for all of us no matter the profile we search for, think about the many daily situations when you want someone that can listen and supply the one respondent that make you feel better with yourself, I think that you need to find those people and exclude the one that use a cold shoulder.

Energetic
You always need the one person in your team that have the ability to provide the extra boost both in the personal side and for the entire team, I think that every company should aim for such people that use their boost to raise the company productivity.

Exploring
The software world is a very dynamic place, a person should have the drive to explore if he want to stay relevant, and every other option will lead the person to stay behind.

Flexibility
I love to work with people that can change their way of thinking to handle different situations that we have in the software world, flexibility can be very handy when you need to handle different test types, multiple projects and Ad-has issues that occur on a daily basis. 

From the other hand, I’m familiar with many persons that failed to be flexible, in a way that really affect the project, those people can handle one task at the time and cannot handle multi-tasking assignments.

Goal Setting
My goal is to be an astronaut… yes, every person can create a set of goals that he want to achieve, but that’s not the case here, a person with this characteristic will set his goals based skillful  decisions that involve the following variables:
-     Realistic (The goal is something that should be accomplished by the individual/team).
-     Timelines (The goal should be accomplished in a reasonable timeline framework).
-     The goal is understood to all participates.
-     The goal has a real prepuce.
-     The goal set only after that all the barriers come into calculations.
-     The goal should be created with success and failure parameters.
-     The goal is well explained.
-     The goal progress can be tested along the way with detailed approval points.

Independent
This person will have the ability to overcome a problem by himself and without the need to involve other propels that take the responsibility.

investigator
To provide the best quality you must be a great investigator, for my opinion you cannot successfully unless you did a detailed investigation about the software that is going to be tested by you. 

When I’m speaking about the investigation, I want to be clear and say that a good investigator will success to gain all the information both from humans and written data, that allow him to learn everything that can be useful both in the static/dynamic testing that coming ahead. 

In addition, you need to know that sometimes the knowledge should be distributed to others, therefore the investigation result should be of a quality that other person can use and learn from. Few examples:
  • Investigate developers about their code.
  • An investigation that related to the static side of testing.
  • Investigate about the client.
  • Investigate other teammates that have more experience in some areas.
  • Investigate new platforms and 3rd party software that relevant to the tested software.
  • Investigate new areas that promote him to be a better tester.


Integrity
It’s basic for all of us, but I still don't find the way that allows me to inspect this characteristic in a person.

Interviewer
A good interviewer can get all the data he needs to overcome a problem.

Know how to get rejections
Very simply, some personally know how to use a rejection to find better ideas and some personally will take the rejection as a personal issue and become depressed about it. I’m sure that you figure it out that the first case is the recommended…

Lazy
Bill gates provide the following quote:
“I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it.”

Great sentence and even funny… but I really don’t think that lazy people are the once that you want to recruit…

Leadership
The leader is a person who has the personality to lead a group of people to accomplish a predefined goal. The effectiveness of the organization is most likely depends on a strong leader. In my personal opinion a great leader should be examined by few simple criteria:
  • A great leader has a vision.
  • A great leader has a policy on how he wants to accomplish his targets.
  • The team motivation to accomplish the latter target.
  • The team participates in the road to accomplish the target.
  • The greatest leader is the one who succeed to accomplish is targeting.
  • How he can cause his team to perform their tasks from a cooperative way and not by autorotation.
  • In many cases (not all) the leader should be an expert in his working field.
  • The effectiveness that the latter use is resourced to accomplish the target.
  • The leader should be a person that can use as example for the rest of the team.

Mentoring
A mentor is a person with a large knowledge base (usually an experienced person that familiar with the product/technology) that can guide other persons to get the missing information they need to do their job.

Multi-Tasking
Very simple, you must have the capability to manage multiple tasks simultaneously, if a person cannot do it, he simply become not relevant for the current software world.

Organized
In today's working environment, the employee should manage a Hugh amount of information, an organized person can manage this data in a way that allow him to perform its job efficiently and without forgetting one task or another.

Passion
I think that passion is one of the main keys for success, a passionate tester will love is work and probably use is passion to learn new ways to perform better than other unpassionate teammates.

Persistent
A persistent person will want to success, although he has some challenges along the way, I think that you prefer  those people in your team against the people that will give up on the first major challenge they confronts.

Persuasive
Sometimes you just need to be Persuasive in different situations when you believe that your way is the most efficient to accomplice the task, I love people that have different ideas than I do, but I got annoying when those people failed to be Persuasive about their idea and as a result a great solution to a problem is vanished without a real cause.

Planner
You cannot be relevant in the software industry without the ability to plan your steps, in my daily work I have 1000 tasks that I cannot achieve without a great plan, simple as that.

Problem Solver
You want a personal who can solve the problems he faces, simple as that.

Project management
Basic for every position that involve ownership on projects or group of people.

Programming capabilities
I can write 10 pages about this characteristic, but in this chapter I will say that in my personal opinion a great Quality person should be familiar with different coding languages, the benefits are Hugh:
  • Understand the code behind the tested software.
  • Design a more efficient test case.
  • Create a detailed design documented that explain how the software is working, this doc is great when you want to design your test based on the software flow.
  • Writing automatic tools and scripts that save time and money.
  • Perform a “White Box” testing.
  • Perform a much more efficient “Risk Analysis”.  

Realistic
A person who understands the limits and know that at some times he cannot win it all.

Reckless
It’s really not recommended to have a reckless tester, in some situations it can be devastating, always look at this characteristic and make sure that your testers have the recommended balance.

Responsibility
You want people that responsible about their actions, responsibility is one of the major factors that lead to greater trust between people.

Reviewer/Editor
Classic for static testing, the person who has this ability will be able to review printed documentation and provide is input in a short time, this issue will save time and unneeded effort from the company engineers.
Examples:
  • SRS/Spec reviews.
  • Release notes and user guidelines documentation.
  • SDD (Software Detailed Design) review.
  • STD review.

In addition, you need to know that a good review will give is input in a way that other people can understand and use the information to improve themselves and their quality assurance capabilities (reviewer that scent is input as criticism will fail to get the wanted response).

Risk assessments
In QA the risk factor is a major success factor in every project, the person that has the ability to understand it and perform it with success will provide a greater % for high quality.

Self-learner
I love personals who can learn quickly and effectively, in our field you need to ask 1B questions, but the self-learner will first learn the, materials and the design the relevant questions that will promote its holdings in the tested software.

From the second side of the coin we can find the one who need to ask 1B questions without the simple idea for what they really want to achieve, in that way the company will lose an expensive amount of time of two workers without a real cause.  My suggestion is that always search for the once who can learn new things and ask the relevant questions.

Sense of humor
Nothing else to say beside that a good sense of humor can help to raise the individual and team morale.

Sophisticated
Sophisticated persons can find great ways to overcome a complex problems.

Team builder
Basic for every manager that need to build a new team or adjust a current one.

Team work
The basic characteristic of all peoples that works in the software industry.

Want to be familiar with the company customers
To be a good tester you need to know your customers, the basic questions that need to be answered :
  •  How the product provides the solution to the customer problem?
  • What are the customer expectations from the software?
  • How the customer is going to use the software?
  • What is the Customer environment? And how can it affect the computability, performance and integration between the software and the customer site?
  • What is the importance of the customer to the company?


Work Ethic
Do I really need to describe the importance of this char’…?


My Presentations