views:

83

answers:

6

I am new to Software Quality assurance. I was told by my boss to find out how we can go about it in our company. Please could someone tell me what software quality assurance is all about and which open source tools I could use for software quality assurance.

+2  A: 

It's all about testing, testing, testing. There are many tools that can help you achieve this, such as unit testing frameworks, code analyzers, memory profilers, etc. The tools you would use depend on the programming language and development platform your company uses for its software.

Bernard
+3  A: 

You could try reading blogs of "the great and the good", people like Martin Fowler on hi 'Bliki' and Robert Martin on Uncle Bob's Blatherings ... and Joel Spolsky's now defunct Joel On Software. All good for opinions on what quality is about.

Currently using java and tools such as Macker and Findbugs to check for code correctness and adherence to guidelines.

For repeatability and to please management, unit tests run automatically by a build server such as Hudson or Cruise Control on code extracted from a source control system is a good idea. It will also give the 'powers that be' some metrics so you can show how your code building, testing, etc.

Ultimately though it just comes down to good people who care about what they're doing.

Rob Lowther
A: 

It's also about the validation process that is used. You can test your software all day long but if you don't know what it's intended to do and what the expected result is you could be testing for the wrong thing altogether. There's a real good book that lays out a solid framework to start with (that'll also cover any ISO requirements if your company is ISO certified): http://www.amazon.com/Computer-System-Management-Validation-Cycle/dp/1932828095

DBA_Alex
A: 

As Bernard says above, you need to do testing. If you are developing in Java, you can use JUnit (NUnit works similarly in .Net). Unit testing is just the beginning though, you might look at code coverage tools to give you an indication of how complete your unit testing is (open source tools EMMA and Cobertura provide this for Java). You might also use hudson to automatically execute these tests whenever a change is checked into your source tree (hudson will give you an indication of how stable your developments are, lots of fluctuations in test case pass rates indicate that you're making lots of breaking changes for example).

After that, you could look at something like Findbugs for Java to spot dodgy practices. If you are using Eclipse for Java development you can get the metrics plugin to perform various other pieces of analysis on your code but you need to know what these metrics actually indicate.

Ultimately, the quality of your product will be defined by whether you can reliably introduce changes that achieve their aim without causing regressions. The tools above are just the beginning, it takes a long time to become good at testing (I'm not there myself) but if you introduce the tools and practices to your organisation you can work on it from there.

PhilDin
Thanks to you all for your answers. I really appreciate them
yankitwizzy
A: 

In general, dont fall into the common trap of thinking this is an IT-staff only problem. Clearly you dont want bugs in your code, and there are any number of tools/processes that help with that - QA is really a larger scope process. As mentioned above by DBA_Alex, you need to know what problem you are solving for the business with your software, and at the end of the day, business bodies need to be involved to answer that question. Make sure your end solution includes people from both IT and business...

chrismh
+2  A: 

As the others have said, testing is an essential part of software QA. But I'm surprised that no one has yet mentioned code reviews. Take a look how you can integrate peer code reviews into your development process; it's a great way to improve code quality and share knowledge throughout the team. The earlier you detect a problem, the easier and cheaper it is to fix it, so consider a code review for every source code change.

If you want an excellent and thorough introduction to QA, read Parts II and V of Code Complete by Steve McConnell. In fact, read all of it - it provides practical examples of how to improve code quality, and metrics (which you can show to management) that explain the benefits of different QA techniques.

The chapters that I mention include topics such as:

  • Design concepts and practices to improve quality
  • High-quality routines
  • Defensive programming
  • Pseudocode programming
  • Techniques for improving Software Quality (including an assessment of relative effectiveness)
  • When to do Quality Assurance
  • Collaborative construction (including pair programming, code inspections)
  • Developer testing
  • Debugging (including psychological considerations)
  • Refactoring
  • Code-tuning strategies and techniques

To quote McConnell's General Principle of Software Quality:

Improving quality reduces development costs

RichTea
Very good point re code reviews.
sje397