Summer Sale! All accounts are 50% off this week.

Ninj4df's avatar

Testing types jargon

Hi guys. I am currently working on a big project with > 20 developers and this is my first time in such a big project (used to work on a lot lot smaller companies with less than 5 developers)

The thing is that now developers from different fields/programming languages, etc are here, and everyone uses his own terms, I'm kind of confused of some specific things related to tests.

Can someone clarify the following terms please?

Acceptance Tests (how they are compared with others? Unit, Feature, what's the difference?)

Functional Tests ( ^^ same )

Unit Tests ( I knew this )

Feature Tests ( ^^ same, I knew them )

if you have more terms used about testing, you can also write them to clarify any confusion. Also feel free to give an example if you wish.

and btw, searching on the Internet, I really could not find any article that really helped to understand how they are compared with each other.

0 likes
3 replies
aurawindsurfing's avatar
Level 50

Before I copy the answer from Atlassian I would tell them to cut the BS and get to do some real work. What you already know is most likely enough.

Source: https://www.atlassian.com/continuous-delivery/software-testing/types-of-software-testing

  1. Unit tests

Unit tests are very low level and close to the source of an application. They consist in testing individual methods and functions of the classes, components, or modules used by your software. Unit tests are generally quite cheap to automate and can run very quickly by a continuous integration server.

  1. Integration tests

Integration tests verify that different modules or services used by your application work well together. For example, it can be testing the interaction with the database or making sure that microservices work together as expected. These types of tests are more expensive to run as they require multiple parts of the application to be up and running.

  1. Functional tests

Functional tests focus on the business requirements of an application. They only verify the output of an action and do not check the intermediate states of the system when performing that action.

There is sometimes a confusion between integration tests and functional tests as they both require multiple components to interact with each other. The difference is that an integration test may simply verify that you can query the database while a functional test would expect to get a specific value from the database as defined by the product requirements.

  1. End-to-end tests

End-to-end testing replicates a user behavior with the software in a complete application environment. It verifies that various user flows work as expected and can be as simple as loading a web page or logging in or much more complex scenarios verifying email notifications, online payments, etc...

End-to-end tests are very useful, but they're expensive to perform and can be hard to maintain when they're automated. It is recommended to have a few key end-to-end tests and rely more on lower level types of testing (unit and integration tests) to be able to quickly identify breaking changes.

  1. Acceptance testing

Acceptance tests are formal tests that verify if a system satisfies business requirements. They require the entire application to be running while testing and focus on replicating user behaviors. But they can also go further and measure the performance of the system and reject changes if certain goals are not met.

  1. Performance testing

Performance tests evaluate how a system performs under a particular workload. These tests help to measure the reliability, speed, scalability, and responsiveness of an application. For instance, a performance test can observe response times when executing a high number of requests, or determine how a system behaves with a significant amount of data. It can determine if an application meets performance requirements, locate bottlenecks, measure stability during peak traffic, and more.

  1. Smoke testing

Smoke tests are basic tests that check the basic functionality of an application. They are meant to be quick to execute, and their goal is to give you the assurance that the major features of your system are working as expected.

Smoke tests can be useful right after a new build is made to decide whether or not you can run more expensive tests, or right after a deployment to make sure that they application is running properly in the newly deployed environment.

1 like
Ninj4df's avatar

thanks for your answer, so Laravel groups most of them as "Feature" tests as I can understand, is this right? If yes, which of them exactly? To avoid any missconfusions

aurawindsurfing's avatar

In this case functional = feature tests in my understanding. But again, probably people using all those smart expressions do not know themselves :-)

Please or to participate in this conversation.