An investigation of the system with the intention to find flaws, discrepancies or errors in it's functioning.
Why should I test my system?
Testing helps catch errors in the development process. This results in a more robust end product for your users.
When should I test my system?
It is crucial that testing it done as soon as possible, and as often as possible. Certain systems are tested very often, for example, when developing software, code should be tested before every build, every deployment and every installation. This ensures that the software is as bug free as possible when it is finally delivered to the users.
It is worth mentioning that testing only works if you write aggressive and complete tests for your system. They must cover all edge cases and all common cases and they must respond appropriately in different conditions, for example, a database client should also be tested when the database is offline to make sure it responds properly.
Different kinds of testing:
Unit testing - This form of testing often involves small, individual tests for each function in a code module. These tests often work be asserting wether the module returned the correct result. They are often automated.
pseudocode example
char* f(void){ return "expected"; }
var result = f() assert(result === "expected")
Static analysis - This form of testing is often invoked by a compiler. This checks to see if the code is properly formulated and attempts to perform optimizations and warn about potential errors.
pseudocode example
int i = 0;
char list[100];
for(; i < 100; i ++){ null a buffer list[i] = 0; }
optimized version (loop unrolling)
int i = 0;
char list[100];
for(; i < 100; i +=10){ null a buffer list[i] = 0; list[i + 1] = 0; list[i + 2] = 0;
…
list[i + 9] = 0;
}
Debugging - This form of testing involves compiling code, running the application, encountering an error, and returning to the code to fix it. Rinse and repeat.
Beta testing - This form of testing involves gathering feedback about a system by distributing a near-working version to a select group of people. This often occurs before the system is released to the public for the first time.
A/B testing - This form of testing involves gathering feedback from users about changes occurring in a system, often of the visual variety. One group of users, group A, is shown the original version of the system, whereas another group, group B, is shown a new version of the system. Using feedback, the developer can determine wether it is a good idea to switch to the new system.
An investigation of the system with the intention to find flaws, discrepancies or errors in it's functioning.
Why should I test my system?
Testing helps catch errors in the development process. This results in a more robust end product for your users.
When should I test my system?
It is crucial that testing it done as soon as possible, and as often as possible. Certain systems are tested very often, for example, when developing software, code should be tested before every build, every deployment and every installation. This ensures that the software is as bug free as possible when it is finally delivered to the users.
It is worth mentioning that testing only works if you write aggressive and complete tests for your system. They must cover all edge cases and all common cases and they must respond appropriately in different conditions, for example, a database client should also be tested when the database is offline to make sure it responds properly.
Different kinds of testing:
Unit testing - This form of testing often involves small, individual tests for each function in a code module. These tests often work be asserting wether the module returned the correct result. They are often automated.
pseudocode example
char* f(void){
return "expected";
}
var result = f()
assert(result === "expected")
Static analysis - This form of testing is often invoked by a compiler. This checks to see if the code is properly formulated and attempts to perform optimizations and warn about potential errors.
pseudocode example
int i = 0;
char list[100];
for(; i < 100; i ++){
null a buffer
list[i] = 0;
}
optimized version (loop unrolling)
int i = 0;
char list[100];
for(; i < 100; i +=10){
null a buffer
list[i] = 0;
list[i + 1] = 0;
list[i + 2] = 0;
…
list[i + 9] = 0;
}
Debugging - This form of testing involves compiling code, running the application, encountering an error, and returning to the code to fix it. Rinse and repeat.
Beta testing - This form of testing involves gathering feedback about a system by distributing a near-working version to a select group of people. This often occurs before the system is released to the public for the first time.
A/B testing - This form of testing involves gathering feedback from users about changes occurring in a system, often of the visual variety. One group of users, group A, is shown the original version of the system, whereas another group, group B, is shown a new version of the system. Using feedback, the developer can determine wether it is a good idea to switch to the new system.