diff --git a/tests/Makefile b/tests/Makefile
index b14f74f..80a7c6a 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -2,6 +2,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+TOP ?= ../
 CC ?= gcc
 CFLAGS ?= -Wall -DNDEBUG -O3 -Werror
 INCLUDES += -I./include \
diff --git a/tests/big_firmware_tests.c b/tests/big_firmware_tests.c
index 44328ea..eb45114 100644
--- a/tests/big_firmware_tests.c
+++ b/tests/big_firmware_tests.c
@@ -33,7 +33,7 @@
   RSAPublicKey* root_key = RSAPublicKeyFromFile(kRootKeyPublicFile);
   uint8_t* root_key_blob = BufferFromFile(kRootKeyPublicFile, &len);
   uint8_t* firmware_sign_key_buf= BufferFromFile(kFirmwareKeyPublicFile, &len);
-  fprintf(stderr, "Generating Big FirmwareImage...");
+  debug("Generating Big FirmwareImage...");
   FirmwareImage* image =
       GenerateTestFirmwareImage(0, /* RSA1024/SHA1 */
                                 firmware_sign_key_buf,
@@ -47,7 +47,7 @@
     error_code = 1;
     goto cleanup;
   }
-  fprintf(stderr, "Done.\n");
+  debug("Done.\n");
   TEST_EQ(VerifyFirmwareImage(root_key, image),
           VERIFY_FIRMWARE_SUCCESS,
           "Big FirmwareImage Verification");
diff --git a/tests/big_kernel_tests.c b/tests/big_kernel_tests.c
index c78f622..a7bbcd8 100644
--- a/tests/big_kernel_tests.c
+++ b/tests/big_kernel_tests.c
@@ -33,7 +33,7 @@
   RSAPublicKey* firmware_key = RSAPublicKeyFromFile(kFirmwareKeyPublicFile);
   uint8_t* firmware_key_blob = BufferFromFile(kFirmwareKeyPublicFile, &len);
   uint8_t* kernel_sign_key_buf = BufferFromFile(kKernelKeyPublicFile, &len);
-  fprintf(stderr, "Generating Big KernelImage...");
+  debug("Generating Big KernelImage...");
   KernelImage* image =
       GenerateTestKernelImage(3,  /* RSA2048/SHA1 */
                               0,  /* RSA1024/SHA1 */
@@ -48,7 +48,7 @@
     error_code = 1;
     goto cleanup;
   }
-  fprintf(stderr, "Done.\n");
+  debug("Done.\n");
   TEST_EQ(VerifyKernelImage(firmware_key, image, 0),
           VERIFY_FIRMWARE_SUCCESS,
           "Big KernelImage Verification");
diff --git a/tests/firmware_verify_benchmark.c b/tests/firmware_verify_benchmark.c
index 3d06dc9..c69ada7 100644
--- a/tests/firmware_verify_benchmark.c
+++ b/tests/firmware_verify_benchmark.c
@@ -60,7 +60,7 @@
   snprintf(file_name, FILE_NAME_SIZE, "testkeys/key_rsa%d.keyb", key_size);
   firmware_sign_key = BufferFromFile(file_name, &len);
   if (!firmware_sign_key) {
-    fprintf(stderr, "Couldn't read pre-processed firmware signing key.\n");
+    debug("Couldn't read pre-processed firmware signing key.\n");
     error_code = 1;
     goto cleanup;
   }
@@ -75,7 +75,7 @@
                                                  "testkeys/key_rsa8192.pem",
                                                  firmware_sign_key_file);
     if (!firmware_blobs[i]) {
-      fprintf(stderr, "Couldn't generate test firmware images.\n");
+      debug("Couldn't generate test firmware images.\n");
       error_code = 1;
       goto cleanup;
     }
@@ -84,7 +84,7 @@
   /* Get pre-processed key used for verification. */
   root_key_blob = BufferFromFile("testkeys/key_rsa8192.keyb", &len);
   if (!root_key_blob) {
-    fprintf(stderr, "Couldn't read pre-processed rootkey.\n");
+    debug("Couldn't read pre-processed rootkey.\n");
     error_code = 1;
     goto cleanup;
   }
@@ -95,7 +95,7 @@
     for (j = 0; j < NUM_OPERATIONS; ++j) {
       if (VERIFY_FIRMWARE_SUCCESS !=
           VerifyFirmware(root_key_blob, firmware_blobs[i]))
-        fprintf(stderr, "Warning: Firmware Verification Failed.\n");
+        debug("Warning: Firmware Verification Failed.\n");
     }
     StopTimer(&ct);
     msecs = (float) GetDurationMsecs(&ct) / NUM_OPERATIONS;
diff --git a/tests/kernel_rollback_tests.c b/tests/kernel_rollback_tests.c
index 08f874c..c821ee8 100644
--- a/tests/kernel_rollback_tests.c
+++ b/tests/kernel_rollback_tests.c
@@ -58,7 +58,7 @@
    * the full blown kernel boot logic. Updates to the kernel attributes
    * in the paritition table are not tested.
    */
-  fprintf(stderr, "Kernel A boot priority(15) > Kernel B boot priority(1)\n");
+  debug("Kernel A boot priority(15) > Kernel B boot priority(1)\n");
   TEST_EQ(VerifyKernelDriver_f(firmware_key_pub,
                                &valid_kernelA, &valid_kernelB,
                                DEV_MODE_DISABLED),
@@ -84,7 +84,7 @@
           "(Corrupt Kernel A (current version)\n"
           " Corrupt Kernel B (current version) runs Recovery):");
 
-  fprintf(stderr, "\nSwapping boot priorities...\n"
+  debug("\nSwapping boot priorities...\n"
          "Kernel B boot priority(15) > Kernel A boot priority(1)\n");
   valid_kernelA.boot_priority = corrupt_kernelA.boot_priority = 1;
   valid_kernelB.boot_priority = corrupt_kernelB.boot_priority = 15;
@@ -113,7 +113,7 @@
           "(Corrupt Kernel A (current version)\n"
           " Corrupt Kernel B (current version) runs Recovery):");
 
-  fprintf(stderr, "\nUpdating stored version information. Obsoleting "
+  debug("\nUpdating stored version information. Obsoleting "
           "exiting kernel images.\n");
   g_kernel_key_version = 2;
   g_kernel_version = 2;
@@ -124,7 +124,7 @@
           "(Valid Kernel A (old version)\n"
           " Valid Kernel B (old version) runs Recovery):");
 
-  fprintf(stderr, "\nGenerating updated Kernel A blob with "
+  debug("\nGenerating updated Kernel A blob with "
           "new version.\n");
   Free(valid_kernelA.kernel_blob);
   valid_kernelA.kernel_blob = GenerateRollbackTestKernelBlob(3, 3, 0);
diff --git a/tests/kernel_verify_benchmark.c b/tests/kernel_verify_benchmark.c
index 369785c..9ee508c 100644
--- a/tests/kernel_verify_benchmark.c
+++ b/tests/kernel_verify_benchmark.c
@@ -73,7 +73,7 @@
            kernel_key_size);
   kernel_sign_key = BufferFromFile(file_name, &len);
   if (!kernel_sign_key) {
-    fprintf(stderr, "Couldn't read pre-processed public kernel signing key.\n");
+    debug("Couldn't read pre-processed public kernel signing key.\n");
     error_code = 1;
     goto cleanup;
   }
@@ -89,7 +89,7 @@
                                              firmware_sign_key_file,
                                              kernel_sign_key_file);
     if (!kernel_blobs[i]) {
-      fprintf(stderr, "Couldn't generate test firmware images.\n");
+      debug("Couldn't generate test firmware images.\n");
       error_code = 1;
       goto cleanup;
     }
@@ -100,7 +100,7 @@
            firmware_key_size);
   firmware_key_blob = BufferFromFile(file_name, &len);
   if (!firmware_key_blob) {
-    fprintf(stderr, "Couldn't read pre-processed firmware public key.\n");
+    debug("Couldn't read pre-processed firmware public key.\n");
     error_code = 1;
     goto cleanup;
   }
@@ -111,7 +111,7 @@
     for (j = 0; j < NUM_OPERATIONS; ++j) {
       if (VERIFY_KERNEL_SUCCESS !=
           VerifyKernel(firmware_key_blob, kernel_blobs[i], 0))
-        fprintf(stderr, "Warning: Kernel Verification Failed.\n");
+        debug("Warning: Kernel Verification Failed.\n");
     }
     StopTimer(&ct);
     msecs = (float) GetDurationMsecs(&ct) / NUM_OPERATIONS;
diff --git a/tests/rollback_index_mock.c b/tests/rollback_index_mock.c
index 37dde48..9d67e1f 100644
--- a/tests/rollback_index_mock.c
+++ b/tests/rollback_index_mock.c
@@ -17,7 +17,7 @@
 
 void SetupTPM(void) {
 #ifndef NDEBUG
-  fprintf(stderr, "Rollback Index Library Mock: TPM initialized.\n");
+  debug("Rollback Index Library Mock: TPM initialized.\n");
 #endif
 }
 
@@ -55,13 +55,13 @@
       break;
   }
 #ifndef NDEBUG
-  fprintf(stderr, "Rollback Index Library Mock: Stored Version written.\n");
+  debug("Rollback Index Library Mock: Stored Version written.\n");
 #endif
   return 1;
 }
 
 void LockStoredVersion(int type) {
 #ifndef NDEBUG
-  fprintf(stderr, "Rollback Index Library Mock: Version Locked.\n");
+  debug("Rollback Index Library Mock: Version Locked.\n");
 #endif
 }
diff --git a/tests/rsa_verify_benchmark.c b/tests/rsa_verify_benchmark.c
index ccd6eaf..2b003ff 100644
--- a/tests/rsa_verify_benchmark.c
+++ b/tests/rsa_verify_benchmark.c
@@ -36,7 +36,7 @@
   snprintf(file_name, FILE_NAME_SIZE, "testkeys/key_rsa%d.keyb", key_size);
   key = RSAPublicKeyFromFile(file_name);
   if (!key) {
-    fprintf(stderr, "Couldn't read RSA Public key from file: %s\n", file_name);
+    debug("Couldn't read RSA Public key from file: %s\n", file_name);
     error_code = 1;
     goto failure;
   }
@@ -46,7 +46,7 @@
            sha_strings[algorithm]);
   digest = BufferFromFile(file_name, &digest_len);
   if (!digest) {
-    fprintf(stderr, "Couldn't read digest file.\n");
+    debug("Couldn't read digest file.\n");
     error_code = 1;
     goto failure;
   }
@@ -56,7 +56,7 @@
            key_size, sha_strings[algorithm]);
   signature = BufferFromFile(file_name, &sig_len);
   if (!signature) {
-    fprintf(stderr, "Couldn't read signature file.\n");
+    debug("Couldn't read signature file.\n");
     error_code = 1;
     goto failure;
   }
@@ -64,7 +64,7 @@
   StartTimer(&ct);
   for (i = 0; i < NUM_OPERATIONS; i++) {
     if (!RSAVerify(key, signature, sig_len, algorithm, digest))
-      fprintf(stderr, "Warning: Signature Check Failed.\n");
+      debug("Warning: Signature Check Failed.\n");
   }
   StopTimer(&ct);
 
diff --git a/tests/test_common.c b/tests/test_common.c
index 2591310..5fcdc5e 100644
--- a/tests/test_common.c
+++ b/tests/test_common.c
@@ -67,13 +67,13 @@
 
   /* Generate and populate signatures. */
   if (!AddFirmwareKeySignature(image, root_key_file)) {
-    fprintf(stderr, "Couldn't create key signature.\n");
+    debug("Couldn't create key signature.\n");
     FirmwareImageFree(image);
     return NULL;
   }
 
   if (!AddFirmwareSignature(image, firmware_key_file)) {
-    fprintf(stderr, "Couldn't create firmware and preamble signature.\n");
+    debug("Couldn't create firmware and preamble signature.\n");
     FirmwareImageFree(image);
     return NULL;
   }
@@ -178,13 +178,13 @@
 
   /* Generate and populate signatures. */
   if (!AddKernelKeySignature(image, firmware_key_file)) {
-    fprintf(stderr, "Couldn't create key signature.\n");
+    debug("Couldn't create key signature.\n");
     KernelImageFree(image);
     return NULL;
   }
 
   if (!AddKernelSignature(image, kernel_key_file)) {
-    fprintf(stderr, "Couldn't create kernel option and kernel signature.\n");
+    debug("Couldn't create kernel option and kernel signature.\n");
     KernelImageFree(image);
     return NULL;
   }
