diff --git a/test/pid_zone_unittest.cpp b/test/pid_zone_unittest.cpp
index b494896..5155971 100644
--- a/test/pid_zone_unittest.cpp
+++ b/test/pid_zone_unittest.cpp
@@ -57,7 +57,7 @@
     const char* objPath = "/path/";
     int64_t zone = 1;
     double minThermalOutput = 1000.0;
-    double failSafePercent = 0;
+    double failSafePercent = 100;
     conf::CycleTime cycleTime;
 
     double d;
@@ -130,7 +130,7 @@
     sdbusplus::SdBusMock sdbus_mock_enable;
     int64_t zoneId = 1;
     double minThermalOutput = 1000.0;
-    double failSafePercent = 0;
+    double failSafePercent = 100;
     double setpoint = 50.0;
     bool defer = true;
     bool accSetPoint = false;
@@ -298,45 +298,45 @@
     EXPECT_EQ(zone->getMinThermalSetPoint(), zone->getMaxSetPointRequest());
 }
 
-TEST_F(PidZoneTest, GetFailSafePercent_ReturnsExpected)
+TEST_F(PidZoneTest, GetFailSafePercent_SingleFailedReturnsExpected)
 {
-    // Verify the value used to create the object is stored.
-    // when the final failsafe percent is zero , it indicate
-    // no failsafe percent is configured  , set it to 100% as
-    // the default setting.
+    // Tests when only one sensor failed and the sensor's failsafe duty is zero,
+    // and verify that the sensor name is empty and failsafe duty is PID zone's
+    // failsafe duty.
 
+    std::vector<std::string> input1 = {"temp1"};
+    std::vector<std::string> input2 = {"temp2"};
+    std::vector<std::string> input3 = {"temp3"};
     std::vector<double> values = {0, 0, 0};
-    int64_t defaultPercent = 100;
 
-    zone->addPidFailSafePercent("temp1", values[0]);
-    zone->addPidFailSafePercent("temp2", values[1]);
-    zone->addPidFailSafePercent("temp3", values[2]);
+    zone->addPidFailSafePercent(input1, values[0]);
+    zone->addPidFailSafePercent(input2, values[1]);
+    zone->addPidFailSafePercent(input3, values[2]);
 
-    zone->initPidFailSafePercent();
+    zone->markSensorMissing("temp1");
 
-    EXPECT_EQ(defaultPercent, zone->getFailSafePercent());
+    EXPECT_EQ(failSafePercent, zone->getFailSafePercent());
 }
 
-TEST_F(PidZoneTest, GetFailSafePercent_VerifyReturnsExpected)
+TEST_F(PidZoneTest, GetFailSafePercent_MultiFailedReturnsExpected)
 {
-    // Tests adding PID controller with FailSafePercent to the zone,
-    // and verifies it's returned as expected.
+    // Tests when multi sensor failed, and verify the final failsafe's sensor
+    // name and duty as expected.
 
+    std::vector<std::string> input1 = {"temp1"};
+    std::vector<std::string> input2 = {"temp2"};
+    std::vector<std::string> input3 = {"temp3"};
     std::vector<double> values = {60, 80, 70};
-    double max_value = 0;
 
-    for (const auto& value : values)
-    {
-        max_value = std::max(max_value, value);
-    }
+    zone->addPidFailSafePercent(input1, values[0]);
+    zone->addPidFailSafePercent(input2, values[1]);
+    zone->addPidFailSafePercent(input3, values[2]);
 
-    zone->addPidFailSafePercent("temp1", values[0]);
-    zone->addPidFailSafePercent("temp2", values[1]);
-    zone->addPidFailSafePercent("temp3", values[2]);
+    zone->markSensorMissing("temp1");
+    zone->markSensorMissing("temp2");
+    zone->markSensorMissing("temp3");
 
-    zone->initPidFailSafePercent();
-
-    EXPECT_EQ(max_value, zone->getFailSafePercent());
+    EXPECT_EQ(80, zone->getFailSafePercent());
 }
 
 TEST_F(PidZoneTest, ThermalInputs_FailsafeToValid_ReadsSensors)
diff --git a/test/zone_mock.hpp b/test/zone_mock.hpp
index 4e34890..a5f105b 100644
--- a/test/zone_mock.hpp
+++ b/test/zone_mock.hpp
@@ -41,7 +41,7 @@
 
     MOCK_CONST_METHOD0(getManualMode, bool());
     MOCK_CONST_METHOD0(getFailSafeMode, bool());
-    MOCK_CONST_METHOD0(getFailSafePercent, double());
+    MOCK_METHOD0(getFailSafePercent, double());
     MOCK_CONST_METHOD0(getZoneID, int64_t());
 
     MOCK_CONST_METHOD0(getCycleIntervalTime, uint64_t());
