diff --git a/fw-update/test/device_updater_test.cpp b/fw-update/test/device_updater_test.cpp
index bd1d684..6190953 100644
--- a/fw-update/test/device_updater_test.cpp
+++ b/fw-update/test/device_updater_test.cpp
@@ -46,26 +46,13 @@
     EXPECT_EQ(packageSize, testPkgSize);
 
     package.seekg(0);
-    std::vector<uint8_t> packageHeader(sizeof(pldm_package_header_information));
-    package.read(new (packageHeader.data()) char,
-                 sizeof(pldm_package_header_information));
-
-    auto pkgHeaderInfo =
-        reinterpret_cast<const pldm_package_header_information*>(
-            packageHeader.data());
-    auto pkgHeaderInfoSize = sizeof(pldm_package_header_information) +
-                             pkgHeaderInfo->package_version_string_length;
-    packageHeader.clear();
-    packageHeader.resize(pkgHeaderInfoSize);
-    package.seekg(0);
-    package.read(new (packageHeader.data()) char, pkgHeaderInfoSize);
+    std::vector<uint8_t> packageHeader(testPkgSize);
+    package.read(new (packageHeader.data()) char, testPkgSize);
 
     auto parser = parsePkgHeader(packageHeader);
     EXPECT_NE(parser, nullptr);
 
     package.seekg(0);
-    packageHeader.resize(parser->pkgHeaderSize);
-    package.read(new (packageHeader.data()) char, parser->pkgHeaderSize);
 
     parser->parse(packageHeader, packageSize);
     const auto& fwDeviceIDRecords = parser->getFwDeviceIDRecords();
diff --git a/fw-update/test/package_parser_test.cpp b/fw-update/test/package_parser_test.cpp
index 4984ffd..6dba8be 100644
--- a/fw-update/test/package_parser_test.cpp
+++ b/fw-update/test/package_parser_test.cpp
@@ -7,6 +7,20 @@
 
 using namespace pldm::fw_update;
 
+void imageGenerate(std::vector<uint8_t>& image, size_t size)
+{
+    for (size_t i = 1; i <= size; ++i)
+    {
+        image.push_back(static_cast<uint8_t>(i));
+    }
+}
+
+void imageInsert(std::vector<uint8_t>& fwPkgHdr, std::vector<uint8_t>& image)
+{
+    // Insert the image at the end of the package header
+    fwPkgHdr.insert(fwPkgHdr.end(), image.begin(), image.end());
+}
+
 TEST(PackageParser, ValidPkgSingleDescriptorSingleComponent)
 {
     std::vector<uint8_t> fwPkgHdr{
@@ -24,11 +38,16 @@
         0x6E, 0x67, 0x33, 0x4F, 0x96, 0xAE, 0x56};
 
     constexpr uintmax_t pkgSize = 166;
+    constexpr uintmax_t pkgHeaderSize = 139;
+    constexpr uintmax_t pkgImageSize = pkgSize - pkgHeaderSize;
+    std::vector<uint8_t> compImage;
+    imageGenerate(compImage, pkgImageSize);
+    imageInsert(fwPkgHdr, compImage);
     constexpr std::string_view pkgVersion{"VersionString1"};
     auto parser = parsePkgHeader(fwPkgHdr);
     auto obj = parser.get();
     EXPECT_EQ(typeid(*obj).name(), typeid(PackageParserV1).name());
-    EXPECT_EQ(parser->pkgHeaderSize, fwPkgHdr.size());
+    EXPECT_EQ(parser->pkgHeaderSize, pkgHeaderSize);
     EXPECT_EQ(parser->pkgVersion, pkgVersion);
 
     parser->parse(fwPkgHdr, pkgSize);
@@ -84,11 +103,20 @@
         0x9C, 0x71};
 
     constexpr uintmax_t pkgSize = 407;
+    constexpr uintmax_t pkgHeaderSize = 326;
+    constexpr uintmax_t pkgImageSize = (pkgSize - pkgHeaderSize) / 3;
+    std::vector<uint8_t> compImage1, compImage2, compImage3;
+    imageGenerate(compImage1, pkgImageSize);
+    imageGenerate(compImage2, pkgImageSize);
+    imageGenerate(compImage3, pkgImageSize);
+    imageInsert(fwPkgHdr, compImage1);
+    imageInsert(fwPkgHdr, compImage2);
+    imageInsert(fwPkgHdr, compImage3);
     constexpr std::string_view pkgVersion{"VersionString1"};
     auto parser = parsePkgHeader(fwPkgHdr);
     auto obj = parser.get();
     EXPECT_EQ(typeid(*obj).name(), typeid(PackageParserV1).name());
-    EXPECT_EQ(parser->pkgHeaderSize, fwPkgHdr.size());
+    EXPECT_EQ(parser->pkgHeaderSize, pkgHeaderSize);
     EXPECT_EQ(parser->pkgVersion, pkgVersion);
 
     parser->parse(fwPkgHdr, pkgSize);
@@ -173,11 +201,10 @@
         0x6E, 0x67, 0x33, 0x4F, 0x96, 0xAE, 0x57};
 
     constexpr uintmax_t pkgSize = 166;
-    constexpr std::string_view pkgVersion{"VersionString1"};
-    auto parser = parsePkgHeader(fwPkgHdr);
-    auto obj = parser.get();
-    EXPECT_EQ(typeid(*obj).name(), typeid(PackageParserV1).name());
-    EXPECT_EQ(parser->pkgHeaderSize, fwPkgHdr.size());
-    EXPECT_EQ(parser->pkgVersion, pkgVersion);
-    EXPECT_THROW(parser->parse(fwPkgHdr, pkgSize), std::exception);
+    constexpr uintmax_t pkgHeaderSize = 139;
+    constexpr uintmax_t pkgImageSize = pkgSize - pkgHeaderSize;
+    std::vector<uint8_t> compImage;
+    imageGenerate(compImage, pkgImageSize);
+    imageInsert(fwPkgHdr, compImage);
+    EXPECT_EQ(parsePkgHeader(fwPkgHdr), nullptr);
 }
