In the era of Network automation and DevOps, it became important not only to code but also to test our code and make sure it can successfully operate and gives guaranteed results, of course, this can be achieved by using defined testing methods. Those testing methods can typically be broken down between functional and non-functional testing.
What is the difference between functional and non-functional testing?
Functional testing methods involves checking an application does what it is supposed to do, it is usually performed manually or automated (tools like Selenium & UFT) by testers, it is also like a “black box” as the person doing the testing don’t know exactly what the code is doing, on the other hand, Non-functional testing incorporates all test types focused on the operational aspects of a piece of software like testing the Performance, Security, Usability, and Compatability.
What are those tests?
- Unit testing:
– usually performed by a developer.
– testing “units”- the smallest testable piece of code– function & method.
– concurrent with the development.
– testing framework: JUnit (Java), NUnit (C#), mini-test (Ruby), Pytest (Python).
– TDD – test-driven development– write tests before writing any code.
– “white box” / “glass box” – the person doing the testing knows what the code is doing.
- Integration testing
– checking to make sure the code works together.
- User acceptance testing
– involves users saying if what they got is what they want.
- Performance testing
– checking an application works under load.
– JMeter, LoadRunner, Locust (Python scripts).
- Regression testing
– testing to make sure that new features don’t break old features.
– try to automate as much as possible.
That was just a brief of what is needed to be done to assure the functionality and the results of the code before launching it to users.