diff --git a/extended/test_uploadimage.robot b/extended/test_uploadimage.robot
index b0eeb00..a362e5c 100644
--- a/extended/test_uploadimage.robot
+++ b/extended/test_uploadimage.robot
@@ -1,14 +1,15 @@
 *** Settings ***
 Documentation         Test upload image with both valid and invalid images.
 ...                   This test expects there to be bad image tarballs named
-...                   pnor_bad_manifest.tar and pnor_no_image.tar on the TFTP
-...                   server and in the directory BAD_IMAGES_DIR_PATH.
+...                   pnor_bad_manifest.tar, pnor_no_image.tar,
+...                   bmc_bad_manifest.tar, and bmc_no_image.tar on the TFTP
+...                   server and in the BAD_IMAGES_DIR_PATH directory.
 ...                   Execution Method :
 ...                   python -m robot -v OPENBMC_HOST:<hostname>
 ...                   -v TFTP_SERVER:<TFTP server IP>
 ...                   -v TFTP_FILE_NAME:<filename.tar>
-...                   -v IMAGE_FILE_PATH:<path/*.tar> test_uploadimage.robot
-...                   -v BAD_IMAGES_DIR_PATH:<path>
+...                   -v IMAGE_FILE_PATH:<path/*.tar>
+...                   -v BAD_IMAGES_DIR_PATH:<path> test_uploadimage.robot
 
 Resource              ../lib/connection_client.robot
 Resource              ../lib/rest_client.robot
@@ -30,9 +31,9 @@
 
 *** Test Cases ***
 
-Upload Image Via REST
+Upload PNOR Image Via REST
     [Documentation]  Upload an image via REST.
-    [Tags]  Upload_Image_Via_REST
+    [Tags]  Upload_PNOR_Image_Via_REST
 
     OperatingSystem.File Should Exist  ${IMAGE_FILE_PATH}
     ${IMAGE_VERSION}=  Get Version Tar  ${IMAGE_FILE_PATH}
@@ -41,9 +42,9 @@
     ${ret}=  Verify Image Upload
     Should Be True  True == ${ret}
 
-Upload Image Via TFTP
+Upload PNOR Image Via TFTP
     [Documentation]  Upload an image via TFTP.
-    [Tags]  Upload_Image_Via_TFTP
+    [Tags]  Upload_PNOR_Image_Via_TFTP
 
     @{image}=  Create List  ${TFTP_FILE_NAME}  ${TFTP_SERVER}
     ${data}=  Create Dictionary  data=@{image}
@@ -51,67 +52,98 @@
     ...  ${SOFTWARE_VERSION_URI}/action/DownloadViaTFTP  data=${data}
     Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
     Sleep  1 minute
-    ${upload_file}=  Get Latest File  ${upload_dir_path}
-    ${image_version}=  Get Image Version
-    ...  ${upload_dir_path}${upload_file}/MANIFEST
+    ${image_version}=  Get Image Version From TFTP Server  ${TFTP_FILE_NAME}
     ${ret}=  Verify Image Upload
     Should Be True  True == ${ret}
 
-Upload Image With Bad Manifest Via REST
-    [Documentation]  Upload an image with a MANIFEST with an invalid
-    ...              purpose via REST and make sure the BMC does not unpack it.
-    [Tags]  Upload_Image_With_Bad_Manifest_Via_REST
 
-    ${bad_image_file_path}=  OperatingSystem.Join Path  ${BAD_IMAGES_DIR_PATH}
-    ...  pnor_bad_manifest.tar
-    OperatingSystem.File Should Exist  ${bad_image_file_path}
-    ...  msg=Invalid PNOR image pnor_bad_manifest.tar not found
-    ${bad_image_version}=  Get Version Tar  ${bad_image_file_path}
-    ${bad_image_data}=  OperatingSystem.Get Binary File  ${bad_image_file_path}
-    Upload Post Request  /upload/image  data=${bad_image_data}
-    Verify Image Not In BMC Uploads Dir  ${bad_image_version}
+Upload PNOR Image With Bad Manifest Via REST
+    # Image File Name
 
-Upload Image With Bad Manifest Via TFTP
-    [Documentation]  Upload an image with a MANIFEST with an invalid
-    ...              purpose via TFTP and make sure the BMC does not unpack it.
-    [Tags]  Upload_Image_With_Bad_Manifest_Via_TFTP
+    pnor_bad_manifest.tar
 
-    @{image}=  Create List  pnor_bad_manifest.tar  ${TFTP_SERVER}
-    ${data}=  Create Dictionary  data=@{image}
-    ${resp}=  OpenBMC Post Request
-    ...  ${SOFTWARE_VERSION_URI}/action/DownloadViaTFTP  data=${data}
-    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
-    ${bad_image_version}=  Get Image Version From TFTP Server
-    ...  pnor_bad_manifest.tar
-    Verify Image Not In BMC Uploads Dir  ${bad_image_version}
+    [Documentation]  Upload a PNOR image with a bad MANIFEST via REST and
+    ...              verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via REST And Verify Failure
+    [Tags]  Upload_PNOR_Image_With_Bad_Manifest_Via_REST
 
-Upload Image With No Squashfs Via REST
-    [Documentation]  Upload an image with no pnor.xz.suashfs file via REST and
-    ...              make sure the BMC does not unpack it.
-    [Tags]  Upload_Image_With_No_Squashfs_Via_REST
 
-    ${bad_image_file_path}=  OperatingSystem.Join Path  ${BAD_IMAGES_DIR_PATH}
-    ...  pnor_no_image.tar
-    OperatingSystem.File Should Exist  ${bad_image_file_path}
-    ...  msg=Invalid PNOR image pnor_no_image.tar not found
-    ${bad_image_version}=  Get Version Tar  ${bad_image_file_path}
-    ${bad_image_data}=  OperatingSystem.Get Binary File  ${bad_image_file_path}
-    Upload Post Request  /upload/image  data=${bad_image_data}
-    Verify Image Not In BMC Uploads Dir  ${bad_image_version}
+Upload PNOR Image With No Squashfs Via REST
+    # Image File Name
 
-Upload Image With No Squashfs Via TFTP
-    [Documentation]  Upload an image with no pnor.xz.suashfs file via TFTP and
-    ...              make sure the BMC does not unpack it.
-    [Tags]  Upload_Image_With_No_Squashfs_Via_TFTP
+    pnor_no_image.tar
 
-    @{image}=  Create List  pnor_no_image.tar  ${TFTP_SERVER}
-    ${data}=  Create Dictionary  data=@{image}
-    ${resp}=  OpenBMC Post Request
-    ...  ${SOFTWARE_VERSION_URI}/action/DownloadViaTFTP  data=${data}
-    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
-    ${bad_image_version}=  Get Image Version From TFTP Server
-    ...  pnor_no_image.tar
-    Verify Image Not In BMC Uploads Dir  ${bad_image_version}
+    [Documentation]  Upload a PNOR image with just a MANIFEST file via REST
+    ...              and verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via REST And Verify Failure
+    [Tags]  Upload_PNOR_Image_With_No_Squashfs_Via_REST
+
+
+Upload BMC Image With Bad Manifest Via REST
+    # Image File Name
+
+    bmc_bad_manifest.tar
+
+    [Documentation]  Upload a BMC image with a bad MANFIEST file via REST and
+    ...              verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via REST And Verify Failure
+    [Tags]  Upload_BMC_Image_With_Bad_Manifest_Via_REST
+
+
+Upload BMC Image With No Image Via REST
+    # Image File Name
+
+    bmc_no_image.tar
+
+    [Documentation]  Upload a BMC image with no just a MANIFEST file via REST
+    ...              and verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via REST And Verify Failure
+    [Tags]  Upload_BMC_Image_With_No_Image_Via_REST
+
+
+Upload PNOR Image With Bad Manifest Via TFTP
+    # Image File Name
+
+    pnor_bad_manifest.tar
+
+    [Documentation]  Upload a PNOR image with a bad MANIFEST file via TFTP and
+    ...              verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via TFTP And Verify Failure
+    [Tags]  Upload_PNOR_Image_With_Bad_Manifest_Via_TFTP
+
+
+Upload PNOR Image With No Squashfs Via TFTP
+    # Image File Name
+
+    pnor_no_image.tar
+
+    [Documentation]  Upload a PNOR image with just a MANIFEST file via TFTP and
+    ...              verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via TFTP And Verify Failure
+    [Tags]  Upload_PNOR_Image_With_No_Squashfs_Via_TFTP
+
+
+Upload BMC Image With Bad Manifest Via TFTP
+    # Image File Name
+
+    bmc_bad_manifest.tar
+
+    [Documentation]  Upload a BMC image with a bad MANIFEST file via TFTP and
+    ...              verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via TFTP And Verify Failure
+    [Tags]  Upload_BMC_Image_With_Bad_Manifest_Via_TFTP
+
+
+Upload BMC Image With No Image Via TFTP
+    # Image File Name
+
+    bmc_no_image.tar
+
+    [Documentation]  Upload a BMC image with just a MANIFEST file via TFTP and
+    ...              verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via TFTP And Verify Failure
+    [Tags]  Upload_BMC_Image_With_No_Image_Via_TFTP
+
 
 *** Keywords ***
 
@@ -145,20 +177,53 @@
     Run Keyword If  '${quiet}' == '${0}'  Log Response  ${ret}
     Should Be Equal As Strings  ${ret.status_code}  ${HTTP_OK}
 
-
 Get Image Version From TFTP Server
     [Documentation]  Get the version dfound in the MANIFEST file of
     ...              an image on the given TFTP server.
-    [Arguments]  ${image_file_path}
+    [Arguments]  ${tftp_image_file_path}
 
     # Description of argument(s):
-    # image_file_path  The path to the image on the TFTP server,
-    #                  ommitting a leading /.
+    # tftp_image_file_path  The path to the image on the TFTP server.
 
+    ${stripped_file_path}=  Strip String  ${tftp_image_file_path}  characters=/
     ${rc}=  OperatingSystem.Run And Return RC
-    ...  curl -s tftp://${TFTP_SERVER}/${image_file_path} > bad_image.tar
+    ...  curl -s tftp://${TFTP_SERVER}/${stripped_file_path} > tftp_image.tar
     Should Be Equal As Integers  0  ${rc}
     ...  msg=Could not download image to check version.
-    ${version}=  Get Version Tar  bad_image.tar
-    OperatingSystem.Remove File  bad_image.tar
+    ${version}=  Get Version Tar  tftp_image.tar
+    OperatingSystem.Remove File  tftp_image.tar
     [Return]  ${version}
+
+Upload Bad Image Via REST And Verify Failure
+    [Documentation]  Upload the given bad image to the BMC via REST and check
+    ...              that the BMC did not unpack the invalid image.
+    [Arguments]  ${bad_image_file_name}
+
+    # Description of argument(s):
+    # image_file_name  The name of the bad image to upload via REST.
+
+    ${bad_image_file_path}=  OperatingSystem.Join Path  ${BAD_IMAGES_DIR_PATH}
+    ...  ${bad_image_file_name}
+    OperatingSystem.File Should Exist  ${bad_image_file_path}
+    ...  msg=Bad image file ${bad_image_file_name} not found.
+    ${bad_image_version}=  Get Version Tar  ${bad_image_file_path}
+    ${bad_image_data}=  OperatingSystem.Get Binary File  ${bad_image_file_path}
+    Upload Post Request  /upload/image  data=${bad_image_data}
+    Verify Image Not In BMC Uploads Dir  ${bad_image_version}
+
+Upload Bad Image Via TFTP And Verify Failure
+    [Documentation]  Upload the given bad image to the BMC via TFTP and check
+    ...              that the BMC did not unpack the invalid image.
+    [Arguments]  ${bad_image_file_name}
+
+    # Description of argument(s):
+    # image_file_name  The name of the bad image to upload via TFTP.
+
+    @{image}=  Create List  ${bad_image_file_name}  ${TFTP_SERVER}
+    ${data}=  Create Dictionary  data=@{image}
+    ${resp}=  OpenBMC Post Request
+    ...  ${SOFTWARE_VERSION_URI}/action/DownloadViaTFTP  data=${data}
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
+    ${bad_image_version}=  Get Image Version From TFTP Server
+    ...  ${bad_image_file_name}
+    Verify Image Not In BMC Uploads Dir  ${bad_image_version}
