diff --git a/tests/validation/Helpers.cpp b/tests/validation/Helpers.cpp
index 71a674b..31d6bfa 100644
--- a/tests/validation/Helpers.cpp
+++ b/tests/validation/Helpers.cpp
@@ -110,22 +110,24 @@
 
 SimpleTensor<float> convert_from_asymmetric(const SimpleTensor<uint8_t> &src)
 {
-    const QuantizationInfo &quantization_info = src.quantization_info();
-    SimpleTensor<float>     dst{ src.shape(), DataType::F32, 1, QuantizationInfo(), src.data_layout() };
+    const UniformQuantizationInfo &quantization_info = src.quantization_info().uniform();
+    SimpleTensor<float>            dst{ src.shape(), DataType::F32, 1, QuantizationInfo(), src.data_layout() };
 
     for(int i = 0; i < src.num_elements(); ++i)
     {
-        dst[i] = quantization_info.dequantize(src[i]);
+        dst[i] = dequantize_qasymm8(src[i], quantization_info);
     }
     return dst;
 }
 
 SimpleTensor<uint8_t> convert_to_asymmetric(const SimpleTensor<float> &src, const QuantizationInfo &quantization_info)
 {
-    SimpleTensor<uint8_t> dst{ src.shape(), DataType::QASYMM8, 1, quantization_info };
+    SimpleTensor<uint8_t>          dst{ src.shape(), DataType::QASYMM8, 1, quantization_info };
+    const UniformQuantizationInfo &qinfo = quantization_info.uniform();
+
     for(int i = 0; i < src.num_elements(); ++i)
     {
-        dst[i] = quantization_info.quantize(src[i], RoundingPolicy::TO_NEAREST_UP);
+        dst[i] = quantize_qasymm8(src[i], qinfo);
     }
     return dst;
 }
@@ -267,8 +269,8 @@
 {
     ARM_COMPUTE_ERROR_ON_MSG(min > max, "min must be lower equal than max");
 
-    const int min_bound = quant_info.quantize(min, RoundingPolicy::TO_NEAREST_UP);
-    const int max_bound = quant_info.quantize(max, RoundingPolicy::TO_NEAREST_UP);
+    const int min_bound = quantize_qasymm8(min, quant_info.uniform());
+    const int max_bound = quantize_qasymm8(max, quant_info.uniform());
     return std::pair<int, int> { min_bound, max_bound };
 }
 
