Home / Career Tips / What is Software Testing in Software Engineering

What is Software Testing in Software Engineering

what is software testing

Introduction

This article is an informational guide to those who would like to make a career in software testing in software engineering or Quality Analyst careers and to know how to get started. This article will cover everything you should know about how to get software testing job without experience.

In today everyone’s life is getting dependent on software more and more, even for ordering food, booking tickets, banking, and everything. This scenario results in the development and release of more and more software every day. There is no release of software happening without performing the complete testing of software. This growth indicates that the software industry is going to be there in the world for a very long time. And testing or QA is one of the easiest ways to get started with the software field. QA Career is one you can get into even without much coding experience or even if you are from some other background.

In this article, we will discuss

  • What is software testing and QA is
  • What the tasks of a tester look like
  • Why testers are important
  • What knowledge is needed to start
  • How to get this knowledge

What is Software Testing or Software QA

Quality Assurance, in general, means the process of checking whether a product meets the required quality or not. Any manufactures should have quality checking in place; else, they will end up creating products that are not up to the expected quality. Producing poor quality products will end up in no returning customers or new customers. Thus, they will lose business and can no longer survive in the market.

The case is the same for the software. The software is also a product. The developers of the software should also ensure that it meets some quality expectations. Being a competitive industry, the quality of a software differentiates it from others. Without meeting some expected quality standards, the product cannot survive. So, What is software testing? In general, software testing in software engineering means the process of simply evaluating, observing, and figuring out how well software performs.

Here the term software can be a desktop app like MS Excel, VLC Player or Internet Explorer, or a Mobile App like Facebook, Google Map, or even a calculator, or a Web App like facebook.com, amazon.com, or gmail.com.

Who is a software tester?

When the developer develops new software, it always comes with some hidden problems and issues that a developer just cannot see. It is the software testers’ responsibility to find those issues and report them to get them fixed. So basically, a QA’s or tester’s job is to test your application against the specific requirements without any issues.

The testers approach software as a customer and verify that the software is easy to use, has no problems, and does the job it promises to do. They test the software as a kind of detective. They approach the software with a sense of suspicion and curiosity to find hidden problems that no one else can see. It is the tester’s their duty to ensure the software is reaching the hands of the customers with the expected quality. 

So, there is no doubt that a bunch of software engineers is crucial to each team. Different companies use different titles for software testers, like Quality Assurance Engineers, Quality Analysts, Test Engineers, or simply QAs. In some organizations, there will be both the titles with different responsibilities. Here, as a beginner guide, let us assume everything as same.

A simple example of testing in Software Engineering

To have a clear understanding of testing in software engineering, let us see how a tester working on an email application similar to Gmail tests the product. The tester has to 

  • Test send email works
  • Test receive email works
  • Test delete email works
  • Test saving email works
  • and more

Along with the specific use cases, they also have to ensure that the system can handle unexpected behaviors. For example, what if the user didn’t provide a valid email and click to send. 

A software released with a bug released to the market will have severe consequences. A bug means any defect in the software. Just think of how much damage it will cause to the business in case of any faulty software in the field of banking, healthcare, or military. So, it is much cheaper to invest in ensuring quality before releasing than to fix after release. Now you may have got an understanding of What is software testing in software engineering, how necessary software testing is, and you can imagine how big the job market would be.

Quality Analyst’s (QA) role in a company 

  • The obvious role is to test the application
  • Write test cases 
  • Think of the way the product to use the product other than the intended way
  • Document test cases 
  • Decide on the tools for documentation. 
  • Manage the releases
  • Coordinate testing efforts with third-party providers 

Team members in a technology organization

Before moving further, let us have a brief understanding of who are different team members in a technology organization and what their responsibilities are. 

In general, the following are the members of a technology organization:  

  • Business Analyst
  • Software developers (programmers)
  • Software testers
  • Project managers.
Business Analyst

A Business Analyst is one who meets or talks to the clients to gather the requirements and translate them for the technology team to build the software. They act as a bridge or middleman between the technology team and the customers. 

Software Developers (Programmers) 

Software Developer is the one who looks into the requirement and builds the actual software. Developers will translate the requirements from the Business Analysts and write codes to make the actual software. 

Software testers

Testers verify all the requirements as per the business analyst are met in the product. They also test for any defects or problems in the system and check the software product is built according to the client’s specifications. 

Project manager

A project manager is the one who overlooks the whole team and is responsible for the software to be built in time, like a general manager.

Methodologies used in software organizations

Software Development Life Cycle

SDLC is the same as what you have learned in academics and wrote for the exams. It is a framework that describes the activities performed at each stage of the software development process. The team has to follow specific rules and methods. For example, a car manufacturing assembly line. First, they will design the vehicle, then gather the parts, arrange the pieces together, and build the car, test drive to make sure everything is working good and then release to the public. Have to follow a similar development cycle for software development also.

The following are the different phases in the software development cycle. 

  1. Requirement Phase
  2. Planning phase
  3. Design phase
  4. Build stage
  5. Testing phase
  6. Deployment and Maintenance
Requirements phase

In this phase, the technology team gathers all the requirements and information from the client to build the software. As seen before both the project managers and business analysts meet the client and discuss what problem they want to solve, how it should function 

Planning phase

In this phase, the technology team goes over the requirements and specifications gathered from the clients. The group discusses how much time the project would take to cost estimations and analyzes its resources.

Design phase

In this phase, the technology team decides how to build the software. In other words, the team plans the architecture of the system and the project. The group discusses the best way to build the software, how the application would function, and what programming language should use. And in this phase, the developers are also given the visual pictures of how the software should look like.

Build stage

In this stage, the software developers code and build the software according to the requirements given to them. This stage is usually the lengthiest phase of the software development lifecycle.

Testing phase 

So when the build stage gets done, the software becomes ready to be tested. Software testers begin to test the software to make sure it is built according to the requirements. The main goal of this stage is to find issues in the software and have them fixed by the developers. Remember, the tester’s job is only to find the issues, and it is the developer’s job to fix them.

Deployment and maintenance stage.

This is the last stage of the software development lifecycle. So after the software is built and tested, it is then deployed into production, which means that the software becomes ready for the customers to use. Also, the maintenance part means that the technology team keeps an eye on the software to make sure it remains working, and no issues come up. 

Agile & Waterfall Methodology 

Waterfall methodology

The waterfall methodology is the classical software development model. It is a linear sequential method of building software. 

Imagine a waterfall on a cliff of a mountain. Once the water flows over the edge of the cliff and begins its journey down the side of the mountain, it cannot turn back. It’s the same with waterfall development. Once a phase completes, then proceeds to the next step, and there is no turning back, which is why it’s called a linear and sequential method of building software.

From the above image, you can see that once you complete with the requirements analysis, you move on to design, and only after the completion of the design, you’ll move on to development. You won’t go back to requirements in between. Only after the completion of the development, you can test it. 

Agile Methodology 

Agile methodology is the modern-day software development model. An agile model is a flexible approach to building software. In this methodology, the software is built incrementally that improves flexibility in the process, which is the reason why most companies prefer agile over waterfall methodology nowadays. 

What happens in agile is, the software is developed in small chunks and pieces. Therefore you can test it side by side right away without having to wait for the whole software to be developed. This is why agile gives flexibility to the entire team that if something is not right, they can go back and fix it, which is a huge advantage. 

Waterfall v/s Agile 

What is Software Testing in Software Engineering 2

Waterfall 

  • Software build in one go 
  • Take 3 -6 months to finish 
  • Cannot come back 

Agile 

  • Software built in pieces 
  • Two weeks sprint 
  • Flexibility to go back and fix 

Software Testing Life Cycle (STLC)

Now you have got a brief understanding of what is software testing in software engineering and other methodologies of software development. As the software development life cycle, there is a testing cycle called the Software Testing life cycle. STLC is nothing but a process that defines phases in testing software. 

Phases in Software Testing Life Cycle 

  1. Requirement analysis phase
  2. Planning phase
  3. Test designing
  4. Implementation/ test environment setup
  5. Test execution
  6. Conclusion / Test reporting
Requirement Analysis Phase

The phase when the testers review, analyze, and discuss the requirements of the software to be built. Here the team testers study and analyze to figure out if the requirements are testable or if there is any additional information needed. 

Planning Phase 

After the testers have gathered information and ideas, testers plan out strategies to the software according to the requirements of the software. 

Designing Phase

The testers define how to test the software and write test cases. They also come up with different scenarios on how to test a particular part of the software. 

Implementation Phase

In this phase, testers review their test scenarios to make sure all the functionalities of the software have covered. They also set up the test environment, which is a mock platform for testers to check how something will work. 

Test Execution 

In this phase, testers execute those test scenarios to find out if the software works according to its requirements. If they find any issues, they will report those issues, and the developers will fix the issues. 

Conclusion and Test reporting

Once the testing completes, testers prepare a report to make sure everything is covered in testing. They then deliver that report to the customers and managers as proof that the testing lifecycle has been completed to make sure everything is good to go and ready for the customers to use. 

Types of testing in Software Engineering

There are mainly two types of testing in software engineering, Manual testing, and Automation testing. In brief, manual testers are those who interact with the software and do all the test cases manually. Automation testers are those who write the code that acts as a user and interacts with the application. And of course, there is more demand for the automation testers than that of manual testers.

Manual Testing 

As the name implies, it is testing the software manually without writing any code to do it. In these types of testing in software, the Quality analyst will use the software as a user uses it. They will be following some step by step instructions and do some test cases using common sense or life experience.

The term test case is one of the most common words you will hear in QA. A test case is a single action or feature of a product.

Here is an example of a simple test case for a login page of a web app:

  • Are the username and password fields available?
  • Try to login with the correct username and correct password
  • Try to login with the correct username and wrong password
  • Try to login with a correct username but an empty password
  • Try to login by copy-pasting password from notepad
  • Try to login by pressing the enter key
  • Try to login by clicking the login button.

This example is just for your understanding what a test case is. Of course, there is a format on how your document test cases Here, you would have got an idea on how much test case would be there for each functionality and each page of your application. So as a manual tester, you will be performing this task over and over and over again. 

Software is very fragile, and you have to perform these test cases all the time, even when minor changes are done in the system. Making any change or update in the area ‘A’ of the application can break a feature in the area ‘B’ of the app even they are not directly related. For example: if you did any changed or added a feature to upload a picture after logging in, you have to perform all the tests for the login page also to verify nothing goes wrong there on that update.

Basic Knowledge needed for a manual tester

Everyone starts with manual testing, and you can’t do automation if you can’t understand manual types of testing in software development. Also, you can join for any job by knowing manual testing only. Getting practice on manual testing is one way on how to get software testing job without experience.

  • Good common sense.
  • Manual testing is an art. It is more about the experience.
  • Training teach terminlogoyu.
  • Test by using the product as consumer world.
  • Or try to break the product.

Automation Testing

Automation testing is the process of writing codes that executes the test cases automatically. For example, all the test cases that we have seen in the example of manual testing can be automated. To perform automation testing in software engineering, you need to know some programming languages. Either Java, Python, C#, Java, or Ruby. The next requirement is you should know at least one automation tool. The most popular automation tool is Selenium. On research, you can also find many other tools for automation. No need to get intimidated, you can start learning one. Like programming language, once you know one, the other tools are similar. The concept is what matters most.

Black Box Testing vs White Box Testing

Black Box Testing

A testing method in which a tester focuses on the outer layer of an application. In Black box types of testing in software, the tester will not look at the internal code design and structure of the application or the software. The tester has to only focus only on the input and output of the software. Just analyze the functionality of the software. 

Types of black-box testing.
  1. Functional testing: Testers focus only on the functionality of the software by looking at the requirements. Just verify that the software has the functionalities as the client requested, and it works properly. Example: When you are performing functional testing on a search engine like Google, validate the search engine find the results of the search term we request. 
  2. Non-functional testing: Tester focuses on non-functional parts of the software, such as performance usability and behavior of the software. Testers check the speed and effectiveness of the software. In the case of Google, check how long Google takes to return the search results. If it takes too long to retrieve search results, then that means it is not performing well, and there is something wrong with the software. 
  3. Regression testing: Testers test the code that was fixed to make sure it works and has not affected the existing code. The purpose of regression testing is to confirm that the part of the software that was recently fixed now works and also to make sure that it has not affected the existing features of the software. It gives software testers confidence that the new changes have no unintended side effects on the working software.
  4. UI testing: The validation of the visual features of a software. E.g., Layout, Colours, Fonts, formats, icons, images, buttons, and links, etc.. Tester sure that the visual appearance of the software looks correct and nothing looks broken or displaced in the software or on the web application.
Advantages of black-box testing.
  • No programming language knowledge required.
  • Test the software from a customer’s perspective which will
  • Focus on the outer layer of the software.
  • Most manual QA people start as a black box
  • The easiest way to start a career in QA
How to perform black-box testing 
  1. Look at the customer requirements for the software
  2. Create test cases based on the requirements 
  3. Decide the expected outcomes of these test cases
  4. Executive the test cases for comparison with the requirements 
  5. Fix the defects if any and re-test them 

White Box Testing 

White box testing is the validation of the inner structure and the code of the software. This is usually done by the developers and is also called as unit testing. For white-box testing, it is important to learn programming languages.

Testing Software & Writing Test Cases

How to test anything (Interview Question) & How to get software testing job without experience

There is a test for anything and everything. If you are thinking of how to get software testing job without experience, the best way is to practice your testing skills. You can do it by thinking about how to test any physical object in your sight. For example, you can test an elevator, a vending machine, or simply a pen. Positive testing means using a product as expected in the normal flow. For example, Just type number to add in a calculator application. Negative testing means trying to break software or cause errors to ensure whether errors have been handled successfully. 

One of the most commonly asked interview questions is how to test a pen, Stop reading here and try to think of as many test cases as you can on how you would test a regular ink or a ballpen. 

The following are some of the example test cases for a pen. It is ok you may have come up with different scenarios, even the list below is not complete. 

  1. Check if all the parts of the pen are correctly fitted, and there are no loose parts.
  2. Check if the pen is usable on any kind of paper, whether it be rough paper or plain paper or cardboard or chart paper etc.
  3. Check if the pen is writing correctly and smoothly without any breaks.
  4. Check if the ink is leaking from the pen. 
Now some negative test cases.
  1. Drop the pen on the floor to check the durability. 
  2. Leave the pen uncapped to see if the ink dries out. 
  3. Check the size and shape of the pen. 
  4. Check the visual features (logo and branding) of the pen. The clip should look good. Hang the clip from your shirt pocket etc. 

Test Cases:

So by now, you would have understood of what is software testing in software engineering. In brief, testing is a simple three-step process.

  1. You have to identify the requirements
  2. You have to know what to test
  3. How to test

The “how-to” part is the test cases.

So what is a test case?

Test cases are the step by step instructions on how to test a software or system. Test cases are written during the test design phase and executed during the test execution phase. It is the same software testers use to write the test cases. If you wonder why it is essential to write the test cases if you know what to test. The test cases are important to provide a structure for testing and record-keeping. You have to have a record of what things were tested in software and how they were tested.

Format of a test case

  1. Test scenarios: What needs to be tested
  2. Test case: How to test something
  3. Test data: Information that we need to test
  4. Test steps: Steps to be followed for performing a test
  5. Expect result: What the results should look like
  6. Actual result: What the actual result looks like. 
  7. Pass or fail

Example

A test case example for login functionality. 

test case example

Even though you can use simple Excel tables to record your test cases. But most companies use tools. Here are some examples of popular tools you can play around and mention that experience on your resume. 

Websites that pay you to test

There are some portals over the internet where you test different websites and earn money. With just some basic knowledge of what is testing in software engineering, you can get started with these where you can learn, gain experience, and earn. The best thing about this is, it will be a real advantage in an interview to mention this experience on your resume. 

The following some of which you can check. 

  • app.whatusersdo.com
  • usertesting.com
  • trymyui.com
  • intellizoom.com
  • enrollapp.com
  • utest.com
  • userfeel.com

Bugs in Software

A software bug is any software error, defect, or problem which produces invalid results. 

For example: Login Functionality

  • If a user can log in with an incorrect password, it would be a bug or defect.
  • If a user can log in without a username and just with a password, it is also a bug.
Visual Bugs
  • Broken Images
  • Missing Buttons
  • Incorrect spellings
  • 404 errors

Upon finding bugs, a tester has to report the bug to the developer to fix it. 

A bug report should have
  • Title of the bug: What is the bug about
  • Description of the bug: Brief details
  • Steps to reproduce: How to find the bug
  • Additional info: Browser info, severity
Bug tracking tools 

Bug tracking tools help to manage and track all software reported bugs by testers. With the absence of a tool, it gets hard to keep track of the bugs via Excel sheets or noting down on the piece of paper. Bug tracking tool helps to log the time of bug, the status of the bug- whether it has been fixed or not, severity, and screenshots. 

Jira is the most popular and widely used management platform that allows technology teams to manage their issues throughout the software lifecycle easily.

Benefits of Jira.
  • Jira allows anyone to create a task (Bug, Feature request, etc.)
  • You can track the progress of a track (No planning required)
  • The team can track how much time spend on a task
  • Pre-filled templates (Just put in necessary info)
  • Search for old tasks/tickets
  • Free trial for practice
This div height required for enabling the sticky sidebar
1 Share
Copy link
Powered by Social Snap