Warranty provisions are included in most custom software development contracts. However, because this is an area of active bargaining between the developer and customer, they vary widely. One of the most important warranties typically found in software development contracts is a warranty of software performance. This means the developer promises the software will work the way the developer said it would and will fix it free of charge if it doesn't. Such warranties typically last from 90 days to one year after the software is delivered.
Testing is one of the most important phases of the software development process.
The purpose of acceptance testing is to determine whether the software does what it is supposed to do and is reliable. Of course, the developer should test the software before it delivers it to the customer, but the customer should not rely solely on such testing. The single most important provision in any development contract is often the procedure for resolving disputes. If a problem develops and the other side turns out to make unreasonable demands, resorting to court litigation can be ruinously expensive. Arbitration and mediation are two means of settling disputes without going to court.