Skip to main content

7 Most Popular Test Types in Software Testing


Today we are going to return back to basics of software testing and discuss the 7 most popular test types that are being used in every software testing effort. Those different test types cover all the levels of the software to make sure that the final result matching the expectations from every possible angle. Here is our list:
  1. Unit testing
  2. Smoke testing
  3. Regression testing
  4. Functional testing
  5. Integration testing
  6. User Acceptance Testing
  7. Performance Testing



Now let’s have a deeper dive into each one of those by using a simple example of an imaginary system that was created in order to manage warehouse activity including shipments, inventory and goods receptions from suppliers.

Unit Testing

This type of testing is usually performed by the developers and is covering the very basic development component. In this test developers are testing the straight forward functionality of a functional piece of code to make sure that it is performing according to their expectations.
In our example:
This test will cover the function that is getting the list of all available suppliers, or a function that updates order status, or a function that updates goods amount in the warehouse.

Smoke Testing:

This type of testing is usually performed by the QA team just after delivery of a new piece of software for testing. There are to main goals for this type of testing: Quick and All inclusive.
This test needs to touch all parts of the delivered functionality without going to deeply in anyone of them. It gives a good understanding of how stable the system is without spending too much time testing. Some testers call it “play with the system a bit”. Mostly it’s all about quick test of straight forward functionality.
In our example:
If the orders piece was ready for testing, this test will include creating new order, deleting an order, accepting an order without going into details of accepting partial order, modifying an order on delivery, or accepting early or late orders.

 Regression Testing:

This type of testing is usually performed by QA team to make sure that everything that used to work in the past is still working. This test does not include newly delivered functionality but rather concentrates that none of features that used to work in the past are broken.
In our example:
If we had the inventory piece working in the past and just got for testing the orders piece, this testing will include inventory functionality to make sure that everything is still working and no new issues were introduced because of the orders related changes.

 Functional Testing:

This type of testing is usually performed by QA team to test all aspects of the functionality of the newly created piece of software. It will include all the straight forward functionality as well as “edge cases” - situations that are less likely to happen but still a possibility with-in the system functionality
In our example:
If the orders piece was ready for testing, this test will include testing of accepting orders, creating orders, deleting orders, modifying orders, but also modifying accepted or deleted orders, recreating deleted orders, duplicating orders and so on

Integration testing:

This type of testing is usually performed by a sub-group in a QA team to test how the new software is working with other existing systems. This usually includes verifications that the new piece of software can get and send data to other systems according to pre-defined set of rules. This type of test is also called sometimes ‘API testing’ or ‘System Integration Testing’ or SIT
In our example:
If the orders piece was ready for testing and part of our system functionality is to order a shipment once the order is in status ‘ready’. Our test will be to verifying that external shipment company can accept a shipment request, and will send a confirmation back that is captured by our system, and that our system will generate the proper shipment slip.

 User Accepting testing (a.k.a UAT):

This type of testing is usually performed by a Business representative group to test how the system performing in real business scenarios. This when we will be concentrating on real life cases of the day to day functionality to verify the the system can handle those as expected, and to the satisfaction of the end users that are going to be using the system. This is also the type when the system users have the opportunity to see the system for the first time. For systems that are being eventually release to the public this is the phase when Alpha and Beta testing might be introduced as a possible extension of UAT to increase the exposure of the system and gather more feedback on the possible issues in the real life environment.
In our example:
The business will creating orders of several products, increasing and decreasing inventory ordering shipments and so on.

Performance Testing:

This type of testing is usually performed by a sub-group in a QA team to test how the system is performing under expected work amount, this test will verify the system response, and processing times and will evaluate in possible performance issues.
In our example:
The test will measure the time it takes the system to create an order with 1000 of items (if that’s an expected order volume for the system) and the time it takes the system to apply modification for such order

Comments

Popular posts from this blog

Proper QA estimation in Agile project

  Today, I want to chat about a common issue in Agile development – story point estimation. You see, it's easy to get caught up in estimating how long a feature will take to develop and forget about the crucial Quality Assurance (QA) effort.  It happens to often: your team is in the middle of sprint planning. New user stories are being discussed, and estimations are given, but there's a catch. You've estimated the development time perfectly, but you've barely even glanced at how much effort QA will take. Why? Agile talks about Development Team and you mistakenly thought that it is all about DEVELOPMENT. Sound familiar? Trust me; it's a more common scenario than you might think. So, what's the big deal? Well, when you leave QA effort out of the equation, several not-so-great things can happen: Vilocity can suffer: You might think you can squeeze more into a sprint than is humanly possible, setting your team up for disappointment and overcommitment. Quality can de

Performance testing vs Load testing vs Stress testing

Today I want to discuss a popular topic regarding a difference between Load and Performance testing. Those two types of testing are commonly used together but there are several key differences between the two. To get a better understanding of the topic lets have a real life example from one of my clients and use it to explain the difference. I have worked for a client that was building an in-house web application that provides its customers with an option to select and order different products and services. The request was, before the up-coming release, to test the performance of their product. We started the task by trying and understand what they expect from performance point of view and then went through an exercise of defining what is captured by what test. The client said that they are looking to have about 900-1300 active users on the site at a given moment, and the expected response time (for a page to load) should be less than 5 seconds. With those details what are the t

What is the velocity of an Agile scrum methodology?

Let's discuss some of the important measurements in Agile, and that is the Velocity of the Scrum team work. Based on Wikipedia definition Velocity is " ...the rate of change of its position with respect to a frame of reference and is a function of time...", which when transferred to the scrum world can be summarized as: The amount of work that the scrum team completed in a single measure of time - in a sprint. How we Calculate Velocity? Velocity is actually a very simple to calculate, it is done but totaling the number of story points of fully completed user stories from the sprint backlog. So if a current sprint included 4 user stories: 2 with 8 story points each, one with 3 story points and one with 32 story points. and by the end of the sprint the 32 one was not fully done the velocity calculation will be: 8+8+3=19 Note: the 32 story points are not part of the velocity calculation as this user story was not completed. What Velocity is used for? The v