diff --git a/test/test_fru-utils.cpp b/test/test_fru-utils.cpp
index 78f3bba..094e3f9 100644
--- a/test/test_fru-utils.cpp
+++ b/test/test_fru-utils.cpp
@@ -13,90 +13,90 @@
 TEST(ValidateHeaderTest, InvalidFruVersionReturnsFalse)
 {
     // Validates the FruVersion is checked for the only legal value.
-    constexpr std::array<uint8_t, I2C_SMBUS_BLOCK_MAX> fru_header = {
+    constexpr std::array<uint8_t, I2C_SMBUS_BLOCK_MAX> fruHeader = {
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
 
-    EXPECT_FALSE(validateHeader(fru_header));
+    EXPECT_FALSE(validateHeader(fruHeader));
 }
 
 TEST(ValidateHeaderTest, InvalidReservedReturnsFalse)
 {
     // Validates the reserved bit(7:4) of first bytes.
-    constexpr std::array<uint8_t, I2C_SMBUS_BLOCK_MAX> fru_header = {
+    constexpr std::array<uint8_t, I2C_SMBUS_BLOCK_MAX> fruHeader = {
         0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
 
-    EXPECT_FALSE(validateHeader(fru_header));
+    EXPECT_FALSE(validateHeader(fruHeader));
 }
 
 TEST(ValidateHeaderTest, InvalidPaddingReturnsFalse)
 {
     // Validates the padding byte (7th byte).
-    constexpr std::array<uint8_t, I2C_SMBUS_BLOCK_MAX> fru_header = {
+    constexpr std::array<uint8_t, I2C_SMBUS_BLOCK_MAX> fruHeader = {
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00};
 
-    EXPECT_FALSE(validateHeader(fru_header));
+    EXPECT_FALSE(validateHeader(fruHeader));
 }
 
 TEST(ValidateHeaderTest, InvalidChecksumReturnsFalse)
 {
     // Validates the checksum, check for incorrect value.
-    constexpr std::array<uint8_t, I2C_SMBUS_BLOCK_MAX> fru_header = {
+    constexpr std::array<uint8_t, I2C_SMBUS_BLOCK_MAX> fruHeader = {
         0x01, 0x00, 0x01, 0x02, 0x03, 0x04, 0x00, 0x00};
 
-    EXPECT_FALSE(validateHeader(fru_header));
+    EXPECT_FALSE(validateHeader(fruHeader));
 }
 
 TEST(ValidateHeaderTest, ValidChecksumReturnsTrue)
 {
     // Validates the checksum, check for correct value.
-    constexpr std::array<uint8_t, I2C_SMBUS_BLOCK_MAX> fru_header = {
+    constexpr std::array<uint8_t, I2C_SMBUS_BLOCK_MAX> fruHeader = {
         0x01, 0x00, 0x01, 0x02, 0x03, 0x04, 0x00, 0xf5};
 
-    EXPECT_TRUE(validateHeader(fru_header));
+    EXPECT_TRUE(validateHeader(fruHeader));
 }
 
 TEST(VerifyOffsetTest, EmptyFruDataReturnsFalse)
 {
     // Validates the FruData size is checked for non empty.
-    std::vector<uint8_t> fru_data = {};
+    std::vector<uint8_t> fruData = {};
 
-    EXPECT_FALSE(verifyOffset(fru_data, fruAreas::fruAreaChassis, 0));
+    EXPECT_FALSE(verifyOffset(fruData, fruAreas::fruAreaChassis, 0));
 }
 
 TEST(VerifyOffsetTest, AreaOutOfRangeReturnsFalse)
 {
     // Validates the FruArea value, check if it is within range.
-    const std::vector<uint8_t> fru_data = {0x01, 0x00, 0x00, 0x00, 0x00,
-                                           0x00, 0x00, 0x00, 0x00};
+    const std::vector<uint8_t> fruData = {0x01, 0x00, 0x00, 0x00, 0x00,
+                                          0x00, 0x00, 0x00, 0x00};
 
     unsigned int areaOutOfRange = 8;
     EXPECT_FALSE(
-        verifyOffset(fru_data, static_cast<fruAreas>(areaOutOfRange), 0));
+        verifyOffset(fruData, static_cast<fruAreas>(areaOutOfRange), 0));
 }
 
 TEST(VerifyOffsetTest, OverlapNextAreaReturnsFalse)
 {
     // Validates the Overlap of offsets with overlapped values.
-    const std::vector<uint8_t> fru_data = {0x01, 0x00, 0x01, 0x02, 0x03,
-                                           0x04, 0x00, 0x00, 0x00};
+    const std::vector<uint8_t> fruData = {0x01, 0x00, 0x01, 0x02, 0x03,
+                                          0x04, 0x00, 0x00, 0x00};
 
-    EXPECT_FALSE(verifyOffset(fru_data, fruAreas::fruAreaChassis, 2));
+    EXPECT_FALSE(verifyOffset(fruData, fruAreas::fruAreaChassis, 2));
 }
 
 TEST(VerifyOffsetTest, OverlapPrevAreaReturnsFalse)
 {
     // Validates the Overlap of offsets with overlapped values.
-    const std::vector<uint8_t> fru_data = {0x01, 0x00, 0x01, 0x03, 0x02,
-                                           0x07, 0x00, 0x00, 0x00};
+    const std::vector<uint8_t> fruData = {0x01, 0x00, 0x01, 0x03, 0x02,
+                                          0x07, 0x00, 0x00, 0x00};
 
-    EXPECT_FALSE(verifyOffset(fru_data, fruAreas::fruAreaProduct, 2));
+    EXPECT_FALSE(verifyOffset(fruData, fruAreas::fruAreaProduct, 2));
 }
 
 TEST(VerifyOffsetTest, ValidInputDataNoOverlapReturnsTrue)
 {
     // Validates all inputs with expected value and no overlap.
-    const std::vector<uint8_t> fru_data = {0x01, 0x00, 0x01, 0x02, 0x03,
-                                           0x04, 0x00, 0x00, 0x00};
+    const std::vector<uint8_t> fruData = {0x01, 0x00, 0x01, 0x02, 0x03,
+                                          0x04, 0x00, 0x00, 0x00};
 
-    EXPECT_TRUE(verifyOffset(fru_data, fruAreas::fruAreaChassis, 1));
+    EXPECT_TRUE(verifyOffset(fruData, fruAreas::fruAreaChassis, 1));
 }
