As an example, we describe the debugging of some strategies. We implemented some multilevel queuing strategies. These used LRU policy between queues, and LFU within a particular queue. Another policy did the reverse, maintaining LFU between queues and LRU within them. Many problems were caught by proper use of the boundary cases here. Observe that if the queue size is one, the policy becomes pure LRU in one case and pure LFU in the other. Similarly, if there is only one queue, then the policies become equivalent to pure LFU and pure LRU respectively.
We also created random access traces to test our strategies. We generated of the order of test cases for debugging purposes. In this regard, it was found useful to have artificial values of cache parameters (e.g. a 8 byte cache with line size 1) to help us understand what was going on. This was very useful for debugging. We used shell scripts heavily to carry out the extensive testing.