Case Study 2 — animalFarm_02

A person sitting at a table with a laptop.


The goal of animalFarm_02 is to show how a test platform operates, both visually and behaviorally. It does so without interfacing with an external “system under test”; animalFarm_02 is completely self-contained.

The following text duplicates some of the videos.

Overall Operation

Let’s talk about what’s going on in the program: We have farms that own animals; in this case, the animals are cows and chickens.

At any point in time, an animal can have one of two operations performed on it. The animal can be “tended to,” or it can be “raised.”

“Tending to” an animal causes it to produce according to the type of animal that it is: cows produce milk, and chickens produce eggs. That’s what happens when you tend to an animal.

“Raising” an animal, on the other hand, causes another animal of the same type to be created (which happens most of the time), or, at times, the selected animal is sent to market and eliminated from the farm. That’s what happens when you raise an animal.

User Interface Operation

The program lets the user generate “background tasks” that either tend to or raise animals. The program keeps track of the animals and their output, all on several farms in several counties.

The program runs in either interactive or batch mode. If started with no command-line parameters, it runs interactively; however, in interactive mode, it can “make a test run” of some specified length. If started with command line parameters (identical to the interactive command set), it can be made to perform a test run of some specified length and with some specified set of animal tending/raising operations.

The test platform runs in cycles, counting how many animals it either creates or eliminates and how much milk or eggs are produced. At the end of the cycle, it performs a verification check that (always) succeeds (this is not a real system with bugs in it). In order to occasionally fail a verification, the user can “inject” an additional animal or animal product (milk or eggs) that then causes the verification to fail.

As animals are eliminated during a cycle, they are not erased from the gDS data store. Instead, they are marked as “Erased” under a system lock and purged at the end of a cycle after verification has been completed.


Play Video