Skip to content

Instantly share code, notes, and snippets.

@halitbatur
Last active June 11, 2022 09:21
Show Gist options
  • Save halitbatur/9825cd7a6765b4aece0fdec13516d9be to your computer and use it in GitHub Desktop.
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
@irem-kurt
Copy link

@dilarafirtina
Copy link

@khatibAmjad
Copy link

Team: Hala - Amjad

What are the differences between manual and automated tests?

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.

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

Functional testing is testing the ‘Functionality’ of a software or an application under test. It tests the behavior of the software under test. Based on the requirement of the client, a document called a software specification or Requirement Specification is used as a guide to test the application.

Non-functional testing checks the Quality of the software to be tested. Quality majorly depends on time, accuracy, stability, correctness and durability of a product under various adverse circumstances.

  • Functional testing verifies each function/feature of the software whereas Non Functional testing verifies non-functional aspects like performance, usability, reliability, etc.
  • Functional testing can be done manually whereas Non Functional testing is hard to perform manually.
  • Functional testing is based on customer’s requirements whereas Non Functional testing is based on customer’s expectations.
  • Functional testing has a goal to validate software actions whereas Non Functional testing has a goal to validate the performance of the software.
  • A Functional Testing example is to check the login functionality whereas a Non Functional testing example is to check the dashboard should load in 2 seconds.
  • Functional describes what the product does whereas Non Functional describes how the product works.
  • Functional testing is performed before the non-functional testing.

Explain the main idea of the following test types:
Unit tests
Unit testing, a testing technique using which individual modules are tested to determine if there are any issues by the developer himself. It is concerned with functional correctness of the standalone modules.
Integration tests:
is a type of software testing in which the different units, modules or components of a software application are tested as a combined entity
End-to-end tests
is a methodology used in the software development lifecycle (SDLC) to test the functionality and performance of an application under product-like circumstances and data to replicate live settings. The goal is to simulate what a real user scenario looks like from start to finish.
End to end testing (E2E testing) refers to a software testing method that involves testing an application’s workflow from beginning to end. This method basically aims to replicate real user scenarios so that the system can be validated for integration and data integrity.
Smoke tests
Smoke Testing is a software testing process that determines whether the deployed software build is stable or not. Smoke testing is a confirmation for QA (quality assurance) team to proceed with further software testing. It consists of a minimal set of tests run on each build to test software functionalities. Smoke testing is also known as “Build Verification Testing” or “Confidence Testing.”

@yamanrajab90
Copy link

yamanrajab90 commented Jun 11, 2022

Cengiz, Nilay, Yaman.

What are the differences between manual and automated tests?
Automated testing is any type of testing where you are using one piece of code/program to test another piece of code/program. This can be unit testing, or it can be via a specific automation tool, such as TestComplete, QTP, Selenium, etc..
Manual testing is a process where a person directly tests a piece of software, often by carrying out the type of actions and end user might carry out. Many professional testers, such as those involved in exploratory testing, would suggest that you while unit testing is cost-effective, manual testing is similarly important and cost-effective.


What are the differences between functional and non-functional tests?
Functional testing is a type of software testing where the system is tested against the functional requirements or specifications like the technical details, data manipulation and processing, and other specific functionalities. It tests a slice of the functionality of the whole system.
It is also a type of black-box testing that holds the test cases according to the specifications provided by the software component under test.
Black box testing is a method of software testing that helps in examining the functionality of any application without peering into its internal structures or the implementation process. It means that the user will not know the internal process that takes place while testing a case. This type of testing helps in identifying functions that the software is expected to perform, creating the input data based on the system’s functional specifications, determining the output based on the requirements, executing the test cases, and comparing the actual and expected outputs.
Non-functional testing is another type of software testing which is used to check the non-functional aspects like performance, usability, reliability, etc. of a software application that is not tested using functional testing. Non-functional testing helps in testing the readiness of a system. It defines the way a system operates, rather than specific behaviors of that system. This is totally in contrast to functional testing, which tests against functional requirements that describe the functions of a system.
Basically, non-functional testing is done to check and evaluate all the non-functional parameters which are not covered under functional testing. Non-functional testing is equally important as Functional testing. All the non-functional parameters such as speed, scalability, security, reliability, and efficiency of an application are tested under the non-functional testing. It makes an application robust and prepares it against certain vulnerabilities.


Explain the main idea of the following test types:
-Unit Test:
A unit test is a test written by the programmer to verify that a relatively small piece of code is doing what it is intended to do. They are narrow in scope, they should be easy to write and execute, and their effectiveness depends on what the programmer considers to be useful. The tests are intended for the use of the programmer, they are not directly useful to anybody else, though, if they do their job, testers and users downstream should benefit from seeing fewer bugs.
Part of being a unit test is the implication that things outside the code under test are mocked or stubbed out. Unit tests shouldn't have dependencies on outside systems. They test internal consistency as opposed to proving that they play nicely with some outside system.
-Integration Test:
An integration test is done to demonstrate that different pieces of the system work together. Integration tests can cover whole applications, and they require much more effort to put together. They usually require resources like database instances and hardware to be allocated for them. The integration tests do a more convincing job of demonstrating the system works (especially to non-programmers) than a set of unit tests can, at least to the extent the integration test environment resembles production.
Actually "integration test" gets used for a wide variety of things, from full-on system tests against an environment made to resemble production to any test that uses a resource (like a database or queue) that isn't mocked out. At the lower end of the spectrum an integration test could be a junit test where a repository is exercised against an in-memory database, toward the upper end it could be a system test verifying applications can exchange messages.


Smoke test: Smoke Testing is a software testing process that determines whether the deployed software build is stable or not.
Smoke testing is a confirmation for QA team to proceed with further software testing.
It consists of a minimal set of tests run on each build to test software functionalities.
Smoke testing is also known as "Build Verification Testing" or “Confidence Testing.”
In simple terms, we are verifying whether the important features are working and there are no showstoppers in the build that is under testing.
It is a mini and rapid regression test of major functionality. It is a simple test that shows the product is ready for testing.
This helps determine if the build is flawed as to make any further testing a waste of time and resources.
The term "smoke test" originated in hardware repair. A device was turned on, and would fail the smoke test if it caught on fire. ?Smoke testing is sometimes called "build verification testing".
When applied to web applications, smoke tests verify that the most important functionality is working. For example, smoke tests on Netflix might include signing in and playing a video.
By design, smoke tests do not cover every permutation and edge case. They instead check that your application isn't so broken that additional testing would be a waste of time.

@khaldarov
Copy link

khaldarov commented Jun 11, 2022

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