This article discusses the dark underbelly of derivation: the fragile base class. It's possible to modify a base class in such a way that, even though you've improved its implementation and all your tests work just fine, you've nonetheless damaged the derived classes, perhaps fatally.
With the proliferation of mobile devices, cloud computing, and client-side scripting-coupled with web services-how do you guarantee adequate code coverage for your applications? Basic tests inadequately cover many of these technologies, leading to defects and disappointing user experiences. Michael Portwood describes the importance of unit test coverage and then presents techniques, tips, and tricks to simplify the process of achieving more complete coverage for Internet-enabled solutions. Michael shares tips for automation and techniques for testing both client- and server-side scripting. Gain insight into identifying code requiring complex testing techniques and explore ideas for covering them. Michael describes complex testing situations-like those found in multi-threaded and distributed code-where test coverage alone may provide misleading results.
Test-driven development (TDD) is a new approach for software construction in which developers write automated unit tests before writing the code. These automated tests are always rerun after any codes changes. Proponents assert that TDD delivers software that is easier to maintain and of higher quality than using traditional development approaches. Based on experiences gained from real-world projects employing TDD, Peter Zimmerer shares his view of TDD's advantages and disadvantages and how the TDD concept can be extended to all levels of testing. Learn how to use TDD practices that support preventive testing throughout development and result in new levels of cooperation between developers and testers. Take away practical approaches and hints for introducing and practicing test-driven development in your organization.