1. In a microcoded data processor having: an address port for providing instructions and data addresses; an operand port for receiving instructions and data operands; an instruction cache for temporarily storing instruction operands received via the operand port; and a tag cache for temporary storing the instruction addresses of each of the instruction operands stores in the instruction cache; a method for recursively testing the operation of the instruction and tag caches, comprising the steps of: providing as a data address a first value as one of said data addresses via said address port; receiving as a data operand a second value as one of said data operands via said operand port; using said second value to access said instruction cache via said tag cache; when on a first condition that an instruction address having said second value is not stored in said tag cache then; (1) providing said second value as an instruction address via said address port; (2) receiving a third value as one of said instruction operands via the operand port; (3) storing said third value in said instruction cache as one of said instruction operands concurrent with storing said second value in said tag cache as a respective instruction address; and (4) substituting said third value for said first value during the next recursion; and when on a second condition that an instruction address having said second value is stored in said tag cache, then; (1) substituting for said first value during the next recursion the third value stored as an instruction operand in said instruction cache which corresponds to the instruction address stored in the tag cache having said second value; whereby the instruction and tag caches may be tested by: (1) providing a predetermined sequence of said second and third values to said data processor via said operand port, and (2) comparing each of said first values provided by said data processor via said address port to selected ones of said second and third values via said operand port; so that the instruction and tag caches are tested by using only the address and operand ports.