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 prepared with the right questions for the personal interview, that’s his 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 don’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 advantage 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 attends (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 institute 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 the 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 is the one 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.

My Presentations