diff --git a/src/proto/grpc/testing/control.proto b/src/proto/grpc/testing/control.proto
index 8cffca5f2c8fbac6b5498757ca389ff24e00aca6..83c41508a7a9d01ba2056c08273cbee7c31fb87c 100644
--- a/src/proto/grpc/testing/control.proto
+++ b/src/proto/grpc/testing/control.proto
@@ -219,6 +219,7 @@ message ScenarioResultSummary
   double latency_99 = 10;
   double latency_999 = 11;
 
+  // Number of requests that succeeded/failed
   int64 successful_requests = 12;
   int64 failed_requests = 13;
 }
diff --git a/test/cpp/qps/driver.cc b/test/cpp/qps/driver.cc
index fea94a3cb2548bebeb37514d4b50ab5f8ad53803..29e53f383ddc9dd2ffcf803b4eb59e36200b4056 100644
--- a/test/cpp/qps/driver.cc
+++ b/test/cpp/qps/driver.cc
@@ -169,6 +169,8 @@ static void postprocess_scenario_result(ScenarioResult* result) {
         failures += rrc.count();
       }
     }
+    result->mutable_summary()->set_successful_requests(successes);
+    result->mutable_summary()->set_failed_requests(successes);
   }
 }
 
diff --git a/test/cpp/qps/qps_json_driver.cc b/test/cpp/qps/qps_json_driver.cc
index 1524ebbc38957756af3aad4def1c0e8d8eae4b2e..4a9745c66e1c2b73f8476bf9ac2bad9149b2bdc5 100644
--- a/test/cpp/qps/qps_json_driver.cc
+++ b/test/cpp/qps/qps_json_driver.cc
@@ -110,6 +110,11 @@ static bool QpsDriver() {
     GetReporter()->ReportLatency(*result);
     GetReporter()->ReportTimes(*result);
 
+    if (result->mutable_summary()->failed_requests()) {
+      std::cerr << "# failed requests: "
+                << result->mutable_summary()->failed_requests() << "\n";
+    }
+
     for (int i = 0; success && i < result->client_success_size(); i++) {
       success = result->client_success(i);
     }