diff --git a/tests/test_glance.py b/tests/test_glance.py
index 85d070d..1b6f973 100644
--- a/tests/test_glance.py
+++ b/tests/test_glance.py
@@ -6,6 +6,9 @@
 import time
 
 import utils
+from utils import helpers
+
+from texttable import Texttable
 
 logger = logging.getLogger(__name__)
 
@@ -40,7 +43,8 @@
     subprocess.call('rm -f /tmp/image_mk_framework.download', shell=True)
 
 
-def test_speed_glance(create_image, openstack_clients, record_property):
+def test_speed_glance(create_image, openstack_clients,
+                      request, html_report):
     """
     Simplified Performance Tests Download / upload Glance
     1. Create file with random data (dd)
@@ -48,6 +52,9 @@
     3. Download image.
     4. Measure download/upload speed and print them into stdout
     """
+    result_table = Texttable(max_width=120)
+    table_rows = [["Test Speed Glance", "Image Size", "Time Consumed",
+                   "Result"]]
     image_size_megabytes = utils.get_configuration().get("IMAGE_SIZE_MB")
     if not is_parsable(image_size_megabytes, int):
         pytest.fail("Can't convert IMAGE_SIZE_MB={} to 'int'".format(
@@ -80,7 +87,12 @@
                     "Occurred error: {}".format(e))
     end_time = time.time()
 
-    speed_upload = image_size_megabytes / (end_time - start_time)
+    time_diff = end_time - start_time
+    speed_upload = image_size_megabytes / time_diff
+    table_rows.append(["Upload",
+                       "{} MB".format(image_size_megabytes),
+                       "{} s".format(round(time_diff, 3)),
+                       "{} MB/s".format(round(speed_upload, 2))])
 
     logger.info("Testing download file speed...")
     start_time = time.time()
@@ -89,13 +101,18 @@
             image_file.write(item)
     end_time = time.time()
 
-    speed_download = image_size_megabytes / (end_time - start_time)
+    time_diff = end_time - start_time
+    speed_download = image_size_megabytes / time_diff
+    table_rows.append(["Download",
+                       "{} MB".format(image_size_megabytes),
+                       "{} s".format(round(time_diff, 3)),
+                       "{} MB/s".format(round(speed_download, 2))])
     logger.info("Deleted image {}.".format(image.id))
     openstack_clients.image.images.delete(image.id)
-    record_property("Upload", speed_upload)
-    record_property("Download", speed_download)
 
-    sys.stdout.write("\n++++++++++++++++++++++++++++++++++++++++")
-    sys.stdout.write(('\nupload - {} MB/s'.format(speed_upload)))
-    sys.stdout.write(('\ndownload - {} MB/s'.format(speed_download)))
-    sys.stdout.write("\n++++++++++++++++++++++++++++++++++++++++\n")
+    result_table.add_rows(table_rows)
+    sys.stdout.write('\n{}\n'.format(result_table.draw()))
+
+    # Send the results to CSV file at reports/ directory
+    helpers.create_test_result_table_csv_file(
+        table_rows, request.node.name)
