diff --git a/redfish-core/lib/ut/service_root_test.cpp b/redfish-core/lib/ut/service_root_test.cpp
index 06a7c21..ab0e660 100644
--- a/redfish-core/lib/ut/service_root_test.cpp
+++ b/redfish-core/lib/ut/service_root_test.cpp
@@ -104,7 +104,7 @@
     EXPECT_EQ(json.size(), 21);
 }
 
-TEST(ServiceRootTest, ServiceRootConstructor)
+TEST(HandleServiceRootGet, ServiceRootStaticAttributesAreExpected)
 {
     auto shareAsyncResp = std::make_shared<bmcweb::AsyncResp>();
 
diff --git a/redfish-core/ut/configfile_test.cpp b/redfish-core/ut/configfile_test.cpp
index 7e9c785..2c68c0b 100644
--- a/redfish-core/ut/configfile_test.cpp
+++ b/redfish-core/ut/configfile_test.cpp
@@ -10,61 +10,42 @@
 namespace ibm_mc
 {
 
-TEST(ConfigFileTest, FileNameValidChar)
+TEST(IsValidConfigFileName, FileNameValidCharReturnsTrue)
 {
     crow::Response res;
 
-    const std::string fileName = "GoodConfigFile";
-    EXPECT_TRUE(isValidConfigFileName(fileName, res));
+    EXPECT_TRUE(isValidConfigFileName("GoodConfigFile", res));
 }
-TEST(ConfigFileTest, FileNameInvalidChar)
+TEST(IsValidConfigFileName, FileNameInvalidCharReturnsFalse)
 {
     crow::Response res;
 
-    const std::string fileName = "Bad@file";
-    EXPECT_FALSE(isValidConfigFileName(fileName, res));
+    EXPECT_FALSE(isValidConfigFileName("Bad@file", res));
 }
-TEST(ConfigFileTest, FileNameInvalidPath1)
+TEST(IsValidConfigFileName, FileNameInvalidPathReturnsFalse)
 {
     crow::Response res;
 
-    const std::string fileName = "/../../../../../etc/badpath";
-    EXPECT_FALSE(isValidConfigFileName(fileName, res));
+    EXPECT_FALSE(isValidConfigFileName("/../../../../../etc/badpath", res));
+    EXPECT_FALSE(isValidConfigFileName("/../../etc/badpath", res));
+    EXPECT_FALSE(isValidConfigFileName("/mydir/configFile", res));
 }
-TEST(ConfigFileTest, FileNameInvalidPath2)
+
+TEST(IsValidConfigFileName, EmptyFileNameReturnsFalse)
 {
     crow::Response res;
-
-    const std::string fileName = "/../../etc/badpath";
-    EXPECT_FALSE(isValidConfigFileName(fileName, res));
+    EXPECT_FALSE(isValidConfigFileName("", res));
 }
-TEST(ConfigFileTest, FileNameInvalidPath3)
+
+TEST(IsValidConfigFileName, SlashFileNameReturnsFalse)
 {
     crow::Response res;
-
-    const std::string fileName = "/mydir/configFile";
-    EXPECT_FALSE(isValidConfigFileName(fileName, res));
+    EXPECT_FALSE(isValidConfigFileName("/", res));
 }
-TEST(ConfigFileTest, FileNameNull)
+TEST(IsValidConfigFileName, FileNameMoreThan20CharReturnsFalse)
 {
     crow::Response res;
-
-    const std::string fileName;
-    EXPECT_FALSE(isValidConfigFileName(fileName, res));
-}
-TEST(ConfigFileTest, FileNameSlash)
-{
-    crow::Response res;
-
-    const std::string fileName = "/";
-    EXPECT_FALSE(isValidConfigFileName(fileName, res));
-}
-TEST(ConfigFileTest, FileNameMorethan20Char)
-{
-    crow::Response res;
-
-    const std::string fileName = "BadfileBadfileBadfile";
-    EXPECT_FALSE(isValidConfigFileName(fileName, res));
+    EXPECT_FALSE(isValidConfigFileName("BadfileBadfileBadfile", res));
 }
 
 } // namespace ibm_mc
diff --git a/redfish-core/ut/hex_utils_test.cpp b/redfish-core/ut/hex_utils_test.cpp
index 05bcb9e..619f6eb 100644
--- a/redfish-core/ut/hex_utils_test.cpp
+++ b/redfish-core/ut/hex_utils_test.cpp
@@ -5,7 +5,7 @@
 namespace
 {
 
-TEST(ToHexString, uint64)
+TEST(IntToHexString, ReturnsCorrectHexForUint64)
 {
     EXPECT_EQ(intToHexString(0xFFFFFFFFFFFFFFFFULL, 16), "FFFFFFFFFFFFFFFF");
 
@@ -27,12 +27,12 @@
     EXPECT_EQ(intToHexString(0xBEEF, 4), "BEEF");
 }
 
-TEST(BytesToHexString, Success)
+TEST(BytesToHexString, OnSuccess)
 {
     EXPECT_EQ(bytesToHexString({0x1a, 0x2b}), "1A2B");
 }
 
-TEST(HexCharToNibble, chars)
+TEST(HexCharToNibble, ReturnsCorrectNibbleForEveryHexChar)
 {
     for (char c = 0; c < std::numeric_limits<char>::max(); ++c)
     {
diff --git a/redfish-core/ut/ip_utils_test.cpp b/redfish-core/ut/ip_utils_test.cpp
index c27ec99..c7d600b 100644
--- a/redfish-core/ut/ip_utils_test.cpp
+++ b/redfish-core/ut/ip_utils_test.cpp
@@ -9,17 +9,25 @@
 
 using ::boost::asio::ip::make_address;
 
-TEST(IpToString, v4mapped)
+TEST(IpToString, ReturnsCorrectIpStringForIpv4Addresses)
 {
     EXPECT_EQ(toString(make_address("127.0.0.1")), "127.0.0.1");
     EXPECT_EQ(toString(make_address("192.168.1.1")), "192.168.1.1");
     EXPECT_EQ(toString(make_address("::1")), "::1");
+}
+
+TEST(IpToString, ReturnsCorrectIpStringForIpv6Addresses)
+{
     EXPECT_EQ(toString(make_address("fd03:f9ab:25de:89ec::0001")),
               "fd03:f9ab:25de:89ec::1");
     EXPECT_EQ(toString(make_address("fd03:f9ab:25de:89ec::1234:abcd")),
               "fd03:f9ab:25de:89ec::1234:abcd");
     EXPECT_EQ(toString(make_address("fd03:f9ab:25de:89ec:1234:5678:90ab:cdef")),
               "fd03:f9ab:25de:89ec:1234:5678:90ab:cdef");
+}
+
+TEST(IpToString, ReturnsCorrectIpStringForIpv4MappedIpv6Addresses)
+{
     EXPECT_EQ(toString(make_address("::ffff:127.0.0.1")), "127.0.0.1");
 }
 } // namespace
diff --git a/redfish-core/ut/json_utils_test.cpp b/redfish-core/ut/json_utils_test.cpp
index cd5504c..427ed21 100644
--- a/redfish-core/ut/json_utils_test.cpp
+++ b/redfish-core/ut/json_utils_test.cpp
@@ -10,7 +10,7 @@
 namespace
 {
 
-TEST(readJson, ValidElements)
+TEST(ReadJson, ValidElementsReturnsTrueResponseOkValuesUnpackedCorrectly)
 {
     crow::Response res;
     nlohmann::json jsonRequest = {{"integer", 1},
@@ -30,23 +30,26 @@
     EXPECT_TRUE((vec == std::vector<uint64_t>{1, 2, 3}));
 }
 
-TEST(readJson, ExtraElements)
+TEST(readJson, ExtraElementsReturnsFalseReponseIsBadRequest)
 {
     crow::Response res;
-    nlohmann::json jsonRequest = {{"integer", 1}, {"string0", "hello"}};
+    nlohmann::json jsonRequest = {{"integer", 1}, {"string", "hello"}};
 
-    int64_t integer = 0;
-    std::string str;
+    std::optional<int> integer;
+    std::optional<std::string> str;
+
     EXPECT_FALSE(readJson(jsonRequest, res, "integer", integer));
     EXPECT_EQ(res.result(), boost::beast::http::status::bad_request);
     EXPECT_FALSE(res.jsonValue.empty());
+    EXPECT_EQ(integer, 1);
 
-    EXPECT_FALSE(readJson(jsonRequest, res, "string0", str));
+    EXPECT_FALSE(readJson(jsonRequest, res, "string", str));
     EXPECT_EQ(res.result(), boost::beast::http::status::bad_request);
     EXPECT_FALSE(res.jsonValue.empty());
+    EXPECT_EQ(str, "hello");
 }
 
-TEST(readJson, WrongElementType)
+TEST(ReadJson, WrongElementTypeReturnsFalseReponseIsBadRequest)
 {
     crow::Response res;
     nlohmann::json jsonRequest = {{"integer", 1}, {"string0", "hello"}};
@@ -67,7 +70,7 @@
     EXPECT_FALSE(res.jsonValue.empty());
 }
 
-TEST(readJson, MissingElement)
+TEST(ReadJson, MissingElementReturnsFalseReponseIsBadRequest)
 {
     crow::Response res;
     nlohmann::json jsonRequest = {{"integer", 1}, {"string0", "hello"}};
@@ -87,7 +90,7 @@
     EXPECT_FALSE(res.jsonValue.empty());
 }
 
-TEST(readJson, JsonVector)
+TEST(ReadJson, JsonArrayAreUnpackedCorrectly)
 {
     crow::Response res;
     nlohmann::json jsonRequest = R"(
@@ -100,9 +103,10 @@
     EXPECT_TRUE(readJson(jsonRequest, res, "TestJson", jsonVec));
     EXPECT_EQ(res.result(), boost::beast::http::status::ok);
     EXPECT_TRUE(res.jsonValue.empty());
+    EXPECT_EQ(jsonVec, R"([{"hello": "yes"}, [{"there": "no"}, "nice"]])"_json);
 }
 
-TEST(readJson, JsonSubElementValue)
+TEST(ReadJson, JsonSubElementValueAreUnpackedCorrectly)
 {
     crow::Response res;
     nlohmann::json jsonRequest = R"(
@@ -118,7 +122,7 @@
     EXPECT_TRUE(res.jsonValue.empty());
 }
 
-TEST(readJson, JsonSubElementValueDepth2)
+TEST(ReadJson, JsonDeeperSubElementValueAreUnpackedCorrectly)
 {
     crow::Response res;
     nlohmann::json jsonRequest = R"(
@@ -136,7 +140,7 @@
     EXPECT_TRUE(res.jsonValue.empty());
 }
 
-TEST(readJson, JsonSubElementValueMultiple)
+TEST(ReadJson, MultipleJsonSubElementValueAreUnpackedCorrectly)
 {
     crow::Response res;
     nlohmann::json jsonRequest = R"(
@@ -161,7 +165,7 @@
     EXPECT_TRUE(res.jsonValue.empty());
 }
 
-TEST(readJson, ExtraElement)
+TEST(ReadJson, ExtraElement)
 {
     crow::Response res;
     nlohmann::json jsonRequest = {{"integer", 1}, {"string", "hello"}};
@@ -180,7 +184,7 @@
     EXPECT_EQ(str, "hello");
 }
 
-TEST(readJson, ValidMissingElement)
+TEST(ReadJson, ValidMissingElementReturnsTrue)
 {
     crow::Response res;
     nlohmann::json jsonRequest = {{"integer", 1}};
@@ -217,7 +221,7 @@
     EXPECT_EQ(str1, std::nullopt);
 }
 
-TEST(readJson, InvalidMissingElement)
+TEST(ReadJson, InvalidMissingElementReturnsFalse)
 {
     crow::Response res;
     nlohmann::json jsonRequest = {{"integer", 1}, {"string", "hello"}};
@@ -245,7 +249,7 @@
     EXPECT_FALSE(res.jsonValue.empty());
 }
 
-TEST(readJsonPatch, ValidElements)
+TEST(ReadJsonPatch, ValidElementsReturnsTrueResponseOkValuesUnpackedCorrectly)
 {
     crow::Response res;
     std::error_code ec;
@@ -259,7 +263,7 @@
     EXPECT_TRUE(res.jsonValue.empty());
 }
 
-TEST(readJsonPatch, EmptyObjectDisallowed)
+TEST(ReadJsonPatch, EmptyObjectReturnsFalseResponseBadRequest)
 {
     crow::Response res;
     std::error_code ec;
@@ -273,7 +277,7 @@
     EXPECT_FALSE(res.jsonValue.empty());
 }
 
-TEST(readJsonPatch, OdataIgnored)
+TEST(ReadJsonPatch, OdataIgnored)
 {
     crow::Response res;
     std::error_code ec;
@@ -287,7 +291,7 @@
     EXPECT_TRUE(res.jsonValue.empty());
 }
 
-TEST(readJsonPatch, OnlyOdataGivesNoOperation)
+TEST(ReadJsonPatch, OnlyOdataGivesNoOperation)
 {
     crow::Response res;
     std::error_code ec;
@@ -301,7 +305,7 @@
     EXPECT_FALSE(res.jsonValue.empty());
 }
 
-TEST(readJsonAction, ValidElements)
+TEST(ReadJsonAction, ValidElementsReturnsTrueResponseOkValuesUnpackedCorrectly)
 {
     crow::Response res;
     std::error_code ec;
@@ -313,9 +317,10 @@
     EXPECT_TRUE(readJsonAction(req, res, "integer", integer));
     EXPECT_EQ(res.result(), boost::beast::http::status::ok);
     EXPECT_TRUE(res.jsonValue.empty());
+    EXPECT_EQ(integer, 1);
 }
 
-TEST(readJsonAction, EmptyObjectAllowed)
+TEST(ReadJsonAction, EmptyObjectReturnsTrueResponseOk)
 {
     crow::Response res;
     std::error_code ec;
diff --git a/redfish-core/ut/registries_test.cpp b/redfish-core/ut/registries_test.cpp
index c324fee..758d8b3 100644
--- a/redfish-core/ut/registries_test.cpp
+++ b/redfish-core/ut/registries_test.cpp
@@ -7,7 +7,7 @@
 namespace
 {
 
-TEST(RedfishRegistries, fillMessageArgs)
+TEST(FillMessageArgs, ArgsAreFilledCorrectly)
 {
     std::string toFill("%1");
     fillMessageArgs({{"foo"}}, toFill);
diff --git a/redfish-core/ut/stl_utils_test.cpp b/redfish-core/ut/stl_utils_test.cpp
index 02a9c15..7242200 100644
--- a/redfish-core/ut/stl_utils_test.cpp
+++ b/redfish-core/ut/stl_utils_test.cpp
@@ -8,13 +8,16 @@
 {
 namespace
 {
-TEST(STLUtilesTest, RemoveDuplicates)
+TEST(FirstDuplicate, ReturnsIteratorToFirstDuplicate)
 {
     std::vector<std::string> strVec = {"s1", "s4", "s1", "s2", "", "s3", "s3"};
-
     auto iter = firstDuplicate(strVec.begin(), strVec.end());
     EXPECT_EQ(*iter, "s3");
+}
 
+TEST(RemoveDuplicates, AllDuplicatesAreRempvedInplace)
+{
+    std::vector<std::string> strVec = {"s1", "s4", "s1", "s2", "", "s3", "s3"};
     removeDuplicate(strVec);
 
     EXPECT_EQ(strVec.size(), 5);
