diff --git a/libpldmresponder/test/libpldmresponder_bios_attribute_test.cpp b/libpldmresponder/test/libpldmresponder_bios_attribute_test.cpp
index f7b9d50..305e7be 100644
--- a/libpldmresponder/test/libpldmresponder_bios_attribute_test.cpp
+++ b/libpldmresponder/test/libpldmresponder_bios_attribute_test.cpp
@@ -4,6 +4,7 @@
 
 #include <gtest/gtest.h>
 
+using namespace pldm::utils;
 using namespace pldm::responder::bios;
 
 class TestAttribute : public BIOSAttribute
diff --git a/libpldmresponder/test/libpldmresponder_bios_config_test.cpp b/libpldmresponder/test/libpldmresponder_bios_config_test.cpp
index 00ec927..da90689 100644
--- a/libpldmresponder/test/libpldmresponder_bios_config_test.cpp
+++ b/libpldmresponder/test/libpldmresponder_bios_config_test.cpp
@@ -13,6 +13,8 @@
 #include <gtest/gtest.h>
 
 using namespace pldm::bios::utils;
+using namespace pldm::responder::bios;
+using namespace pldm::utils;
 
 using ::testing::_;
 using ::testing::ElementsAreArray;
diff --git a/libpldmresponder/test/libpldmresponder_bios_enum_attribute_test.cpp b/libpldmresponder/test/libpldmresponder_bios_enum_attribute_test.cpp
index 08d960d..bb0f652 100644
--- a/libpldmresponder/test/libpldmresponder_bios_enum_attribute_test.cpp
+++ b/libpldmresponder/test/libpldmresponder_bios_enum_attribute_test.cpp
@@ -9,6 +9,9 @@
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
 
+using namespace pldm::responder::bios;
+using namespace pldm::utils;
+
 using ::testing::_;
 using ::testing::ElementsAreArray;
 using ::testing::Return;
diff --git a/libpldmresponder/test/libpldmresponder_bios_integer_attribute_test.cpp b/libpldmresponder/test/libpldmresponder_bios_integer_attribute_test.cpp
index fe1d6a8..5301c77 100644
--- a/libpldmresponder/test/libpldmresponder_bios_integer_attribute_test.cpp
+++ b/libpldmresponder/test/libpldmresponder_bios_integer_attribute_test.cpp
@@ -9,6 +9,9 @@
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
 
+using namespace pldm::utils;
+using namespace pldm::responder::bios;
+
 using ::testing::_;
 using ::testing::ElementsAreArray;
 using ::testing::Return;
diff --git a/libpldmresponder/test/libpldmresponder_bios_string_attribute_test.cpp b/libpldmresponder/test/libpldmresponder_bios_string_attribute_test.cpp
index d1c1703..c945a68 100644
--- a/libpldmresponder/test/libpldmresponder_bios_string_attribute_test.cpp
+++ b/libpldmresponder/test/libpldmresponder_bios_string_attribute_test.cpp
@@ -10,6 +10,7 @@
 #include <gtest/gtest.h>
 
 using namespace pldm::responder::bios;
+using namespace pldm::utils;
 using ::testing::_;
 using ::testing::ElementsAreArray;
 using ::testing::Return;
diff --git a/libpldmresponder/test/libpldmresponder_pdr_effecter_test.cpp b/libpldmresponder/test/libpldmresponder_pdr_effecter_test.cpp
index 4f3df87..cefda3a 100644
--- a/libpldmresponder/test/libpldmresponder_pdr_effecter_test.cpp
+++ b/libpldmresponder/test/libpldmresponder_pdr_effecter_test.cpp
@@ -13,6 +13,7 @@
 using namespace pldm::responder::platform;
 using namespace pldm::responder::pdr;
 using namespace pldm::responder::pdr_utils;
+using namespace pldm::utils;
 
 using ::testing::_;
 using ::testing::Return;
diff --git a/libpldmresponder/test/libpldmresponder_platform_test.cpp b/libpldmresponder/test/libpldmresponder_platform_test.cpp
index accdb60..0fb88a1 100644
--- a/libpldmresponder/test/libpldmresponder_platform_test.cpp
+++ b/libpldmresponder/test/libpldmresponder_platform_test.cpp
@@ -13,6 +13,7 @@
 
 #include <iostream>
 
+using namespace pldm::pdr;
 using namespace pldm::utils;
 using namespace pldm::responder;
 using namespace pldm::responder::platform;
diff --git a/libpldmresponder/test/mocked_bios.hpp b/libpldmresponder/test/mocked_bios.hpp
index 6741306..c93d788 100644
--- a/libpldmresponder/test/mocked_bios.hpp
+++ b/libpldmresponder/test/mocked_bios.hpp
@@ -4,9 +4,8 @@
 #include <gtest/gtest.h>
 
 using testing::ElementsAreArray;
-using namespace pldm::responder::bios;
 
-class MockBIOSStringTable : public BIOSStringTable
+class MockBIOSStringTable : public pldm::responder::bios::BIOSStringTable
 {
   public:
     MockBIOSStringTable() : BIOSStringTable({})
@@ -17,18 +16,21 @@
     MOCK_METHOD(std::string, findString, (const uint16_t), (const override));
 };
 
-void checkHeader(const Table& attrEntry, const Table& attrValueEntry)
+void checkHeader(const pldm::responder::bios::Table& attrEntry,
+                 const pldm::responder::bios::Table& attrValueEntry)
 {
-    auto attrHeader = table::attribute::decodeHeader(
+    auto attrHeader = pldm::responder::bios::table::attribute::decodeHeader(
         reinterpret_cast<const pldm_bios_attr_table_entry*>(attrEntry.data()));
-    auto attrValueHeader = table::attribute_value::decodeHeader(
-        reinterpret_cast<const pldm_bios_attr_val_table_entry*>(
-            attrValueEntry.data()));
+    auto attrValueHeader =
+        pldm::responder::bios::table::attribute_value::decodeHeader(
+            reinterpret_cast<const pldm_bios_attr_val_table_entry*>(
+                attrValueEntry.data()));
 
     EXPECT_EQ(attrHeader.attrHandle, attrValueHeader.attrHandle);
 }
 
-void checkEntry(Table& entry, Table& expectedEntry)
+void checkEntry(pldm::responder::bios::Table& entry,
+                pldm::responder::bios::Table& expectedEntry)
 {
     /** backup the attr handle */
     auto attr0 = entry[0], eAttr0 = expectedEntry[0];
@@ -45,11 +47,12 @@
     entry[1] = attr1, expectedEntry[1] = eAttr1;
 }
 
-void checkConstructEntry(BIOSAttribute& attribute, BIOSStringTable& stringTable,
-                         Table& expectedAttrEntry,
-                         Table& expectedAttrValueEntry)
+void checkConstructEntry(pldm::responder::bios::BIOSAttribute& attribute,
+                         pldm::responder::bios::BIOSStringTable& stringTable,
+                         pldm::responder::bios::Table& expectedAttrEntry,
+                         pldm::responder::bios::Table& expectedAttrValueEntry)
 {
-    Table attrEntry, attrValueEntry;
+    pldm::responder::bios::Table attrEntry, attrValueEntry;
     attribute.constructEntry(stringTable, attrEntry, attrValueEntry);
 
     checkHeader(attrEntry, attrValueEntry);
