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
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.