Here's an updated Requirements document, tweaked a little based on the feedback.


Goals:  ("how will we know if this project is or is not a success")

    G1. driver developers improve their compliance with the DBI API
        and so improve consistency and portability of code.
        This is what it's all about!

    G2. driver developers adopt DBIT as a free test suite with good
        coverage of the DBI API. This is the pay-back _for_ developers.

    G3. driver developers write and share reusable generic tests
        (they'll still need to write their own driver-specific tests).
        This is the pay-back _from_ developers.

    G4. end users aren't affected by DBIT evolution causing install failures
        i.e., DBIT runs as 'author testing', *at least for now*.
        This is our promise to end users not to ruin their day.

    G5. works with the widest range of DBI drivers, including non-SQL and
        proxy drivers.  This is a promise to be inclusive and flexible.

    G6. enables testing with DBI::PurePerl for pure-perl drivers.
        This is a promise to support fatpackers and perl6 ;)

    G7. end users can find the level of DBI API compliance of a driver
        The test configuration, e.g., what tests to skip, will be data-driven
        rather than hard-coded logic, and the data will readable via some API.


Scope:  (the boundaries and deliverables of the project)

    S1. the DBIT will be a separate distribution.

    S3. the DBI won't have a mandatory dependency on DBIT,
        for now at least, driver developers are the priority.

    S4. DBIT is not meant to test the underlying database.
        If a driver implements a database itself then it'll
        need it's own tests to provide good coverage of that.
        Those tests could use the DBIT infrastructure.


Requirements:

    R1. be easy for driver developers to adopt,
        so existing drivers migrate to using it.

    R2. be easy for driver developers to extend/contribute to,
        so driver developers contribute to it.

    R3. work well with cpantesters,
        so we get good coverage (perhaps extend Test::Database)

    R4. use get_info as the basis for determining the capabilities
        of the driver and database. We'll extend get_info as needed.

    R5. allow tests to be run in parallel, e.g. unique table names.

    R6. provides tools that drivers can use/extend for themselves.
        I'm thinking specifically here of the creation of test files
        with combinations of env vars and other settings.
        E.g., test DBD::CSV with Text::CSV and Text::CSV_XS


Tim.

Reply via email to