Bugs, problems, issues versus creativity.

11df929025b42348e9d3db9e19afa3f3How to deal with bugs? The first solution is to implement a control chain – an inspection process. Each part of the project (e.g a module, script, documentation) will be controlled by a number of people or systems during the development.

Quality Engineer: Hey, I have detected a bug that should be fixed till the end of the week.
Developer: Oh, ok. I will fix it as soon as possible.

This is a standard dialogue between developer and quality engineer during the development process. The bug was detected and probably it will be fixed as developer said “as soon as possible”. From the quality engineer perspective it is something what should be done here.

Housing estate resident: Unauthorized cars shouldn’t be here!
Housing estate administrator: Oh… I will install RFID based car authorization system, then we solve the problem. We need 10k dollars to implement such system.
Another voice: Why unauthorized cars are the problem? Is it true that there are no parking for the guests? The RFID based car authorization system will deepen the problem only. This is not what you want!

How many times the bug solution is a reason of the next, more serious bug? To solve bugs we have to think about the whole context not the bugs only. We should learn how to ask about the reasons. How dilbert comic is related to the article? The bug is a lie. The more serious bug is an unsatisfied client. The most serious bug is a company culture represented by the manager.

Simple framework for regression tests

During a project development engineers should provide reliability of implemented system. It is worth to create a solution to automatically validate each module and the whole application. One of the method to taking care about the code are regression tests. Regression testing is a type of software testing that protect our existing code against the errors caused by the patches, enhancements or other changes. One of the main reasons for regression testing is to determine whether a change in one part of the software affects other parts of the same software.

How it works? Please take a look at the picture below. The most simple regression test framework will compare reference file with the current results.

Regression TestsThe problem is: how to create reference files? In most case we could use golden reference model – the reference library or create them manually. Sometimes we haven’t got any golden reference model or we don’t know exactly how specific module should work. In that case it should be considered to treat the current result as reference files. Such approach helps us to track results of our system during the implementation and either fix our code or update the reference files.

Continue reading