diff --git a/tests/suites/test_suite_ssl.data b/tests/suites/test_suite_ssl.data
index 89dc548..efe2f56 100644
--- a/tests/suites/test_suite_ssl.data
+++ b/tests/suites/test_suite_ssl.data
@@ -59,16 +59,16 @@
 ssl_set_hostname_twice:"server0":"server1"
 
 SSL session serialization: Wrong major version
-ssl_session_serialize_version_check:1:0:0:0
+ssl_session_serialise_version_check:1:0:0:0
 
-SSL session serialization: Wrong minor version
-ssl_session_serialize_version_check:1:0:0:0
+SSL session serialisation: Wrong minor version
+ssl_session_serialise_version_check:0:1:0:0
 
-SSL session serialization: Wrong patch version
-ssl_session_serialize_version_check:1:0:0:0
+SSL session serialisation: Wrong patch version
+ssl_session_serialise_version_check:0:0:1:0
 
-SSL session serialization: Wrong config
-ssl_session_serialize_version_check:1:0:0:0
+SSL session serialisation: Wrong config
+ssl_session_serialise_version_check:0:0:0:1
 
 Record crypt, AES-128-CBC, 1.2, SHA-384
 depends_on:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_AES_C:MBEDTLS_SSL_PROTO_TLS1_2:MBEDTLS_SHA512_C
diff --git a/tests/suites/test_suite_ssl.function b/tests/suites/test_suite_ssl.function
index 80c0ab0..51f00f3 100644
--- a/tests/suites/test_suite_ssl.function
+++ b/tests/suites/test_suite_ssl.function
@@ -922,52 +922,52 @@
 }
 /* END_CASE */
 
-/* BEGIN_CASE depends_on:!MBEDTLS_SSL_SERIALIZED_STRUCTURES_LOCAL_ONLY */
-void ssl_session_serialize_version_check( int corrupt_major,
+/* BEGIN_CASE depends_on */
+void ssl_session_serialise_version_check( int corrupt_major,
                                           int corrupt_minor,
                                           int corrupt_patch,
                                           int corrupt_config )
 {
-    unsigned char serialized_session[ 2048 ];
-    size_t serialized_session_len;
+    unsigned char serialised_session[ 2048 ];
+    size_t serialised_session_len;
 
     mbedtls_ssl_session session;
     mbedtls_ssl_session_init( &session );
 
-    /* Infer length of serialized session. */
+    /* Infer length of serialised session. */
     TEST_ASSERT( mbedtls_ssl_session_save( &session,
-                                           serialized_session,
-                                           sizeof( serialized_session ),
-                                           &serialized_session_len ) == 0 );
+                                           serialised_session,
+                                           sizeof( serialised_session ),
+                                           &serialised_session_len ) == 0 );
 
     mbedtls_ssl_session_free( &session );
 
     /* Without any modification, we should be able to successfully
-     * de-serialize the session - double-check that. */
+     * de-serialise the session - double-check that. */
     TEST_ASSERT( mbedtls_ssl_session_load( &session,
-                                           serialized_session,
-                                           serialized_session_len ) == 0 );
+                                           serialised_session,
+                                           serialised_session_len ) == 0 );
     mbedtls_ssl_session_free( &session );
 
     if( corrupt_major )
-        serialized_session[0] ^= (uint8_t) 0x1;
+        serialised_session[0] ^= (uint8_t) 0x1;
 
     if( corrupt_minor )
-        serialized_session[1] ^= (uint8_t) 0x1;
+        serialised_session[1] ^= (uint8_t) 0x1;
 
     if( corrupt_patch )
-        serialized_session[2] ^= (uint8_t) 0x1;
+        serialised_session[2] ^= (uint8_t) 0x1;
 
     if( corrupt_config )
     {
-        serialized_session[3] ^= (uint8_t) 0x1;
-        serialized_session[4] ^= (uint8_t) 0x1;
-        serialized_session[5] ^= (uint8_t) 0x1;
+        serialised_session[3] ^= (uint8_t) 0x1;
+        serialised_session[4] ^= (uint8_t) 0x1;
+        serialised_session[5] ^= (uint8_t) 0x1;
     }
 
     TEST_ASSERT( mbedtls_ssl_session_load( &session,
-                                           serialized_session,
-                                           serialized_session_len ) ==
+                                           serialised_session,
+                                           serialised_session_len ) ==
                  MBEDTLS_ERR_SSL_BAD_INPUT_DATA );
 }
 /* END_CASE */
