Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re: What is the best way to add tests to existing code?

by toma (Vicar)
on May 21, 2004 at 08:41 UTC ( #355214=note: print w/replies, xml ) Need Help??

in reply to What is the best way to add tests to existing code?

The approach that I have seen with this much code is to start with statistical tools that estimate the number of defects in various subsystems. Test and fix some sections of the code to see if the estimated defects are really there. Refine your estimates by using the results of the fixes.

Figure out some sort of reasonable quality goal that uses the same measures as your estimates. Then develop an estimate of the effort needed to reach the goal. Share your estimates with others to see if you are on the right track. Agree on a plan to improve the quality, and execute it.

Testing this much code requires a good build system to automate compilation and the running of the tests. Without this infrastructure, the other test tactics that you have listed will be difficult to implement in a reasonable way. A daily build and smoke test is a great way to evaluate the system quality.

Version control needs to be working, also. If the code changes are not measured it will be difficult to estimate the code quality and to focus the effort.

In a large system like this, once the build is automated, the versions are controlled, and the quality estimates are done, there are usually one or two subsystems that obviously have the most problems. These are your hot spots. Much of the time the hot spots are already known, but sometimes there are surprises, such as when a problematic low-level data store causes what appear to be UI problems.

I like the various books by Steve McConnell which touch on this topic. There are other worthwhile books that I'm sure others will recommend.

It should work perfectly the first time! - toma
  • Comment on Re: What is the best way to add tests to existing code?

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://355214]
[1nickt]: ... sign I have seen ...
[1nickt]: Now that one made me hopeful! First time not angry in a long time when I saw that kid.
[Discipulus]: i propend for removing: why? because we are so few that we must find i minimal common divisor, this is certainly Perl not our (anyway private) thougths. And i say this still wondering because i love a lot freedom of expression. And i say this not for roho
[1nickt]: Discipulus that was the point of my story of taking the sticker off my truck. I know there are lots of people in the world who if I knw their private beliefs I might want to argue with them. And they with me. But life cannot all be arguments!
[1nickt]: This is less than perfect ... but demanding perfection (from people or from life) is a sure way to unhappiness.
[Discipulus]: and anyway we have CB where every (democratic) opinion can be expressed
erix eat the rich!
[1nickt]: I do think it is sad that roho has received 3 downvotes for his polite request, as did I when I objected to the profanity in stonecolddevin's sig. I upvoted both him and Karl for the discussion. Way too much downvoting for inappropriate reasons here!
Discipulus learn that 'argue' has a little negative sense, he thought was a neutral sense, 'vox media'
[1nickt]: argue == discuss && argue == be contentious

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (7)
As of 2017-06-22 12:18 GMT
Find Nodes?
    Voting Booth?
    How many monitors do you use while coding?

    Results (519 votes). Check out past polls.