diff --git a/Android.bp b/Android.bp
index e9b7b13..2e215c5 100644
--- a/Android.bp
+++ b/Android.bp
@@ -661,6 +661,7 @@
         "payload_generator/zip_unittest.cc",
         "testrunner.cc",
         "update_attempter_android_unittest.cc",
+        "update_status_utils_unittest.cc",
     ],
 }
 
diff --git a/BUILD.gn b/BUILD.gn
index 5e76bfb..5f5aa54 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -537,6 +537,7 @@
       "update_manager/update_time_restrictions_policy_impl_unittest.cc",
       "update_manager/variable_unittest.cc",
       "update_manager/weekly_time_unittest.cc",
+      "update_status_utils_unittest.cc",
     ]
 
     # //common-mk:test should be on the top.
diff --git a/update_status_utils.cc b/update_status_utils.cc
index a0aa2ed..0758314 100644
--- a/update_status_utils.cc
+++ b/update_status_utils.cc
@@ -27,6 +27,19 @@
 
 namespace chromeos_update_engine {
 
+namespace {
+
+// Note: Do not change these, autotest depends on these string variables being
+// exactly these matches.
+const char kCurrentOp[] = "CURRENT_OP";
+const char kIsInstall[] = "IS_INSTALL";
+const char kLastCheckedTime[] = "LAST_CHECKED_TIME";
+const char kNewSize[] = "NEW_SIZE";
+const char kNewVersion[] = "NEW_VERSION";
+const char kProgress[] = "PROGRESS";
+
+}  // namespace
+
 const char* UpdateStatusToString(const UpdateStatus& status) {
   switch (status) {
     case UpdateStatus::IDLE:
@@ -61,21 +74,21 @@
   KeyValueStore key_value_store;
 
 #if BASE_VER < 576279
-  key_value_store.SetString("LAST_CHECKED_TIME",
+  key_value_store.SetString(kLastCheckedTime,
                             base::Int64ToString(status.last_checked_time));
-  key_value_store.SetString("PROGRESS", base::DoubleToString(status.progress));
-  key_value_store.SetString("NEW_SIZE",
+  key_value_store.SetString(kProgress, base::DoubleToString(status.progress));
+  key_value_store.SetString(kNewSize,
                             base::Uint64ToString(status.new_size_bytes));
 #else
-  key_value_store.SetString("LAST_CHECKED_TIME",
+  key_value_store.SetString(kLastCheckedTime,
                             base::NumberToString(status.last_checked_time));
-  key_value_store.SetString("PROGRESS", base::NumberToString(status.progress));
-  key_value_store.SetString("NEW_SIZE",
+  key_value_store.SetString(kProgress, base::NumberToString(status.progress));
+  key_value_store.SetString(kNewSize,
                             base::NumberToString(status.new_size_bytes));
 #endif
-  key_value_store.SetString("CURRENT_OP", UpdateStatusToString(status.status));
-  key_value_store.SetString("NEW_VERSION", status.new_version);
-  key_value_store.SetBoolean("IS_INSTALL", status.is_install);
+  key_value_store.SetString(kCurrentOp, UpdateStatusToString(status.status));
+  key_value_store.SetString(kNewVersion, status.new_version);
+  key_value_store.SetBoolean(kIsInstall, status.is_install);
 
   return key_value_store.SaveToString();
 }
diff --git a/update_status_utils_unittest.cc b/update_status_utils_unittest.cc
new file mode 100644
index 0000000..dbd80d7
--- /dev/null
+++ b/update_status_utils_unittest.cc
@@ -0,0 +1,59 @@
+//
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include "update_engine/update_status_utils.h"
+
+#include <string>
+
+#include <gtest/gtest.h>
+
+using std::string;
+
+namespace chromeos_update_engine {
+
+TEST(UpdateStatusUtilsTest, UpdateEngineStatusToStringDefaultTest) {
+  string print =
+      R"(CURRENT_OP=UPDATE_STATUS_IDLE
+IS_INSTALL=false
+LAST_CHECKED_TIME=0
+NEW_SIZE=0
+NEW_VERSION=
+PROGRESS=0.0
+)";
+  EXPECT_EQ(print, UpdateEngineStatusToString({}));
+}
+
+TEST(UpdateStatusUtilsTest, UpdateEngineStatusToStringTest) {
+  update_engine::UpdateEngineStatus update_engine_status = {
+      .status = update_engine::UpdateStatus::CHECKING_FOR_UPDATE,
+      .is_install = true,
+      .last_checked_time = 156000000,
+      .new_size_bytes = 888,
+      .new_version = "12345.0.0",
+      .progress = 0.5,
+  };
+  string print =
+      R"(CURRENT_OP=UPDATE_STATUS_CHECKING_FOR_UPDATE
+IS_INSTALL=true
+LAST_CHECKED_TIME=156000000
+NEW_SIZE=888
+NEW_VERSION=12345.0.0
+PROGRESS=0.5
+)";
+  EXPECT_EQ(print, UpdateEngineStatusToString(update_engine_status));
+}
+
+}  // namespace chromeos_update_engine
