Skip to content

Instantly share code, notes, and snippets.

@halitbatur
Last active June 11, 2022 09:21
Show Gist options
  • Select an option

  • Save halitbatur/9825cd7a6765b4aece0fdec13516d9be to your computer and use it in GitHub Desktop.

Select an option

Save halitbatur/9825cd7a6765b4aece0fdec13516d9be to your computer and use it in GitHub Desktop.
Test discussion

Test types discussion

Please type your answers in the comment section below

  • What are the differences between manual and automated tests?
  • What are the differences between functional and non-functional tests?
  • Explain the main idea of the following test types:
    • Unit tests
    • Integration tests
    • End-to-end tests
    • Smoke tests
@khaldarov

khaldarov commented Jun 11, 2022

Copy link
Copy Markdown

Noor Awied, Adnan Khaldar, Israa Qaba

What are the differences between manual and automated tests?

In manual testing, a human performs the tests step by step, without test scripts. In automated testing, tests are executed automatically via test automation frameworks, along with other tools and software.

Manual Testing

Manual testing is not accurate at all times due to human error, hence it is less reliable.
Manual testing is time-consuming, taking up human resources.
Investment is required for human resources.
Manual testing is only practical when the test cases are run once or twice, and frequent
Manual testing allows for human observation, which may be more useful if the goal is user-friendliness or improved customer experience.

Automated Testing

Automated testing is more reliable, as it is performed by tools and/or scripts.
Automated testing is executed by software tools, so it is significantly faster than a manual approach.
Investment is required for testing tools.
Repetition is not required.
Automated testing is a practical option when the test cases are run repeatedly over a long time period.
Automated testing does not entail human observation and cannot guarantee user-friendliness or positive customer experience.

What are the differences between functional and non-functional tests?

Functional testing ensures that functions and features of the application work properly. Non-functional testing examines other aspects of how well the application works, like performance, usability, or reliability.

Functional testing can be done manually or automatically, while non-functional testing is hard to be done manually.
Some examples of functional testing include unit testing, integration testing, API testing, exploratory testing, and critical business flows testing, These all test functional aspects of the website or mobile app.

Some examples of non-functional testing include:

  • Security testing — Tests an app’s security mechanisms to reveal vulnerabilities.
  • Performance testing — Tests the speed and responsiveness of an app under various conditions.
  • Endurance testing — Tests an app under a heavy load over an extended period of time.

Explain the main idea of the following test types:

Unit tests

are types of testing where each “unit” of your code is exercised as fully as possible, as an isolated chunk of code. In this case, a “unit” is typically a function or a method (depending on the language).

Usually, “stubs” are created for any underlying functions/methods that the code calls. The idea is to exercise every path of a “unit” to see that it does what it’s meant to do and that it doesn’t do something unexpected.
A unit test will typically be done on a separate system to the target, particularly in the embedded world.
Unit testing does not (necessarily) confirm that the logic is correct. It does catch coding errors and corner cases if done properly.

Integration tests

are defined as types of testing where software modules are integrated logically and tested as a group.
A typical software project consists of multiple software modules, coded by different programmers. The purpose of this level of testing is to expose defects in the interaction between these software modules when they are integrated

End-to-end tests

are methodologies used for ensuring that applications behave as expected. The goal is to simulate what a real user scenario looks like from start to finish. The completion of this testing is not only to validate the system under test, but to also ensure that its sub-systems work and behave as expected. Modern softwares are complex enough that if one component fails, the entire application can behave in an unexpected way or fail. Because of this, the entire application needs to be tested, both at the API and UI layers.

Smoke tests

these software testings determine whether the employed build is stable, also known as build verification testing or build acceptance testing. The confirmation allows the quality assurance team to determine if further testing can be conducted.

In software, the build process is changing the source code into stand-alone working software that can be run or downloaded.

Sources

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment