Access JumpStart 2.0 | Blog

A Rapid Development Framework for Microsoft Access

Kent Beck, a father figure when it comes to Test Driven Development for many people, has an article on “Canon TDD”
Canon TDD – by Kent Beck – Software Design: Tidy First? (substack.com)

In this article, as I mentioned yesterday, the first thing that he lists in the process of how to do TDD is to make a list of tests.

I have thus far failed to do so. I started just planning AND writing a single test as I went into the Failing Test phase.

Really what I should have done was have at least a list of possible tests and pick from which one I want to do next. Frankly this sounds a lot better than what I was doing. It was hard to think up a new thing to test whenever I got to that phase.

So I’m spending a little time right now to come up with more possible tests, not actually writing them, but writing down what I actually might want to test for this Form Auditor.

A List:

  • Easily load the form auditor object into a form.
  • The form auditor keeps track of any changes to the form as the form is changed
  • If the form changes are canceled before we find them (BeforeUpdate is canceled before finding changes) then don’t record any changes
  • If the form changes are canceled after we find them by a subsequent BeforeUpdate hooked call, we don’t want those changes to appear in the list either.
  • OR, instead of the above, maybe we do track the changes anyway and just have an indication of whether the update was canceled or not.
  • Test whether this is a bound form.
  • Test which controls are bound and whether they were updated.
  • Maybe have a list of non-bound controls to make the user of this class aware of things that aren’t being tracked
  • Consider if there are any good ways to track them (control events)
  • Make sure the auditor descends into subform controls and audits those forms as well
  • Create different change reports via a single change report interface.
  • Report for an end user
  • Report for the developer
  • Report for a log format to a database
  • Report for a log format to a text string

Wow, ok, so I cheated a little because I started thinking about a particular form auditing class I already have built without TDD. I noticed right away that my brain probably isn’t working quite right as these are more behavior type requirements rather than a list of tests, however, I’m thinking this is the direction I probably want to go in. I want to be able to categorize my tests and these could definitely provide categories and series of tests for me to think about and develop.

I’m considering that a success. I will stick that list into the comments of another module for reference.

So far I have 5 tests that are still standing at the moment after the smoke has cleared. GivenFormAuditor:

  1. WhenNoFieldIsChangedThenReturnEmptyListOfChanges
  2. WhenOneFieldIsChangedThenReturnSingleListOfChanges
  3. WhenTwoFieldsAreChangedThenReturnTwoEntryListOfChanges
  4. WhenOneFieldIsChangedToSameValueThenReturnNoListOfChanges
  5. WhenFieldChangesFromNullToEmptyStringThenReturnOneEntryListOfChanges

So far I have categorized these as “Count Changes” tests. I think they are much smaller in scope than the list of possible test subjects I have above. I guess we will see how this starts to further develop: tomorrow…

Sign up For a Daily Email Adventure in Microsoft Access

Every business day (typically M-F), I'll send you an email with information about my ongoing journey as an advanced Access application developer. It will be loaded with my tips and musings.

    We won't send you spam. Unsubscribe at any time.