Software Testing in a nutshell
Image from: jamaliinfo.com

Software Testing in a nutshell

I have faced a lot of people asking about my job description, what are the types of tasks assigned to me as a Software Tester and so on. Hence I decided to write this article to summarize the Software Tester tasks in the simplest way because there are a lot of Computer Science graduates that want to know more details about the career and at least about its specific tasks. so below are the list of tasks that are usually assigned to the Software Testers:

Requirements Review:

The software requirements are simply the specific details about what should the required software do, the one who writes the requirements is called Business/System Analyst or Product Owner, there are many ways to express requirements. (Ex: User Stories)

The software tester is responsible for reviewing the requirements to report ambiguous (need more clarification) and missing requirements and then send the comments to the analyst. In some companies, the software tester contributes in writing the requirements.

Example:

Requirement:

"the user can Register using a registration form"

In the above piece of requirements the details of this form is missing (What are the specific fields needed in the form and what is the characteristics of each field)

Design Review:

The design is the detailed look of the required software (images or wireframes).

The software tester is responsible for reviewing the design against the requirements and then report the missing elements to the designer, also sometimes the tester can contribute in suggesting ideas in the design for usability and user experience.

Example:

Requirement:

"In the search results, there should be 10 items only per page"

Design:

Imagine a "search results" page design without the pagination design (1,2,3,...). So the tester should tell the designer that the pagination design is required within the page as per the requirements.

Test Case Design:

Test case design step comes after the requirements final version release (After all the reviews are considered and so on).

Simply the test case design is extracting all the possible cases from the requirements and write them down (Log them into the tracking system, make automated tests, etc...)

There are many techniques that help in the test case design (You can read more about it).

Example:

Requirement:

"the age field should only accept positive integer numbers"

Test Cases:

  • Try a positive integer number "Ex: 24". Expected Result: The system should accept.
  • Try a negative integer number "Ex: -24". Expected Result: The system should reject.
  • Try a Fraction positive number. "Ex: 2.4". Expected Result: The system should reject.
  • Try alpha string "Ex: ab". Expected Result: The system should reject
  • Try alphanumeric string "Ex: a4". The system should reject.

So as you see above a simple sentence in the requirements can generate many test cases, The tester should be very focused and should think of all the cases (positive or negative scenarios)

Testing:

This is the time for executing the test cases and then report bugs on the tracking system the company use.

Bugs have certain life cycle and style to be written with (You can read more about this) Below is an image for the bug life cycle defined by ISTQB (International Software Testing Qualifications Board)

Mainly the two popular types of testing are Functional Testing, Non-Functional Testing.

Functional Testing: It is basically the testing of the functions of component or system. It refers to activities that verify a specific action.

Some of the types of the functional testing are:

  • System Testing: it's a level of the software testing where a complete and integrated software is tested. The purpose of this test is to evaluate the system's compliance with the specified requirements.
  • Regression Testing: The purpose of the regression testing is to find the bugs which may get introduced accidentally because of the new changes or modification. But retesting/ confirmation testing is checking that the exact reported bug is fixed after the new changes.
  • UAT: User acceptance testing (UAT) is the last phase of the software testing process. During UAT, actual software users test the software to make sure it can handle required tasks in real-world scenarios, according to specifications.

Non-Functional Testing: the quality characteristics of the component or system is tested. Non-functional refers to aspects of the software that may not be related to a specific function or user action.

Some of the types of the non-functional testing are:

  • Performance testing: In general, it's a testing practice performed to determine how a system performs in terms of responsiveness and stability under a particular workload.
  • Usability testing: Evaluating the user experience of the product. (It can be done by test the product on real users and record their actions)
  • Security testing: It is a process intended to reveal flaws in the security mechanisms of an information system that protect data and maintain functionality as intended.

Example of Functional, Non-Functional Testing:

Requirement:

"When press on "Friends" button it should redirect to a list of your friends"

Functional Testing is to make sure that the "Friends" button do as required and also to make sure that your friends appear on the list correctly.

Non-Functional Testing is to make sure that that the list of friends appears after X amount of time.

There are a lot of techniques, types and activities of testing but I cannot mention all this info here as I just wanted to make a very basic overview no more no less.

Very Important Notes:

  • This is only a very very basic overview, I just wanted to tell others what is the main tasks of any Software Tester.
  • Every company has its way and process, Some tasks and techniques will differentiate from company to company and also according to the size of the project.
  • The information mentioned above is just from my own experience. so if anyone want to share a feedback or want to add something, feel free to contact or comment.
  • If anyone needs more clarification about anything, feel free to contact or comment.

Resources used in some definitions:

  • Wikipedia
  • ISTQB (International Software Testing Qualifications Board)

Great effort ! A clear and nice glimpse :) Thank you :)

Simple and informative. Well Done, Thanks :)

To view or add a comment, sign in

More articles by Ahmed Abdelhamid

Others also viewed

Explore content categories