From: Pavel C. <pc...@us...> - 2002-12-06 09:58:43
|
Hi all, Although it's not very voiced in public forums, the Firebird project take quality very seriously - always. We discussed and utilized many techniques to ensure highest possible quality, and we always look for improvements in our neverending quest for stability, reliability and speed of Firebird engine. The very important part in the QA puzzle is the comprehensive suite of regression tests, that allow us to safely introduce new features and improvements with minimal or no chance to break working functionality. Firebird inherited a test harness called TCS with ~450 tests used by Borland. The test suite is only a fragment of tests used by Borland IB QA group and cover only several areas of the product. TCS is also hard to operate and writing new tests require a lot of knowledge and skills comparable to skills needed for core engine developers. Due to that constraints we began to look for TCS replacement with smaller entry barrier for test developers. Many alternatives have been tested but none of them attracted new test developers and thus don't took off due to lack of development resources. Building comprehensive test suite is tedious, time consuming task that do not fit well to unrestrained open source development. IBPhoenix is a company that was always very supportive to Firebird Project, and have resources to perform development tasks that are needed but not very popular by volunteers. For last several months, IBPhoenix sponsored internal R&D to provide a new foundation for a comprehensive test suite for Firebird. The basic requirements for new test harness were defined as follows (in order of importance): - cross-platform - based on open source (or freely) available tools - flexibility and extensibility - simple, text based test format suitable for management in CVS - low entry barrier for test development - possibility to make declarative tests along with procedural tests After evaluation of various options, we decide to use QMTest from CodeSourcery (www.codesourcery.com). QMTest is open source test harness written in Python (with CLI and web GUI interface), and fulfil all requirements described above. Although it's usable "as is" for our purposes, we extend it with new test and resource classes that make it Firebird-aware and simplify the development of tests. Along with development on QMTest, we started a public effort to form a group of test "designers". For test design you don't really need any special skills or any software installed beyond Firebird itself, you need just some knowledge of SQL and Firebird and willingness to spare some hours on test design. The purpose of test design is to provide a recipe for test implementation (definition of prerequisites, test steps and result verification) that would free test developers from most time consuming part and allow them to focus just on actual implementation. With many test designers but few test developers we can build a lot of new tests very quickly. Basic rules for test design are available at Firebird web in Firebird QA section of Developer's Corner, and you're welcome to join as test designer. You can also learn QMTest and become a test developer, or learn Python and become advanced test or QMTest developer :) The first goal is not to replace all TCS tests (they work just fine), but provide complete test coverage for all SQL commands implemented by Firebird in all their variants. Next step is make tests for all bugs in our bug tracker. Although anyone can install and run our test suite, it's supposed that only core developers, port maintainers and packagers would do that regularly. Test design and development is performed as separate sub-project (Firebird QA) so please, direct your questions related to our QA efforts to Firebird-test mailing list. Current status: The first batch of tests (120) along with QMTest extensions has been committed to our CVS as QMDB module, and more (~100) tests were designed and ready for implementation. The QMDB module is - In terms of QMTest - a complete, ready to use "test database". Tests are organized in "suites" based on (sub)directories. To run them, you'll need QMTest from www.codesourcery.com, Python (at least 2.1, but preferably 2.2) and kinterbasdb (open source Python IB/FB connectivity package from http://sourceforge.net/projects/kinterbasdb), and - of course - Firebird. Due to a pending problem with extension classes (running external programs with stdin/stdout redirection on POSIX platforms) it currently works only on Windows, but we're working on fix (but you're welcome to help). Best regards Pavel Cisar http://www.ibphoenix.com For all your upto date Firebird and InterBase information |