6Chapter1 • Introduction to Software Development
requirements from the marketing and sales people. Review meetings are a great tool to convey
these new requirements. Again, architecture documents and MRDs are kept in sync with any
changes/problems encountered during development.
1.1.5Testing
Testing is probably the most important phase for long-term support as well as for the repu-
tation of the company. If you don’t control the quality of the software, it will not be able to com-
pete with other products on the market. If software crashes at the customer site, your customer
loses productivity as well money and you lose credibility. Sometimes these losses are huge.
Unhappy customers will not buy your other products and will not refer other customers to you.
You can avoid this situation by doing extensive testing. This testing is referred to as Quality
Assurance, or QA, in most of the software world.
Usually testing starts as soon as the initial parts of the software are available. There are
multiple types of testing and these are explained in this section. Each of these has its own
importance.
1.1.5.1Unit Testing
Unit testing is testing one part or one component of the product. The developer usually
does this when he/she has completed writing code for that part of the product. This makes sure
that the component is doing what it is intended to do. This also saves a lot of time for software
testers as well as developers by eliminating many cycles of software being passed back and forth
between the developer and the tester.
When a developer is confident that a particular part of the software is ready, he/she can
write test cases to test functionality of this part of the software. The component is then for-
warded to the software testing people who run test cases to make sure that the unit is working
properly.
1.1.5.2Sanity Testing
Sanity testing is a very basic check to see if all software components compile with each
other without a problem. This is just to make sure that developers have not defined conflicting or
multiple functions or global variable definitions.
1.1.5.3Regression or Stress Testing
Regression or stress testing is a process done in some projects to carry out a test for a
longer period of time. This type of testing is used to determine behavior of a product when used
continuously over a period of time. It can reveal some bugs in software related to memory leak-
age. In some cases developers allocate memory but forget to release it. This problem is known as
memory leakage. When a test is conducted for many days or weeks, this problem results in allo-
cation of all of the available memory until no memory is left. This is the point where your soft-
ware starts showing abnormal behavior.
Next Page >>
<< Previous Page
Back to the Table of Contents