diff --git a/components/service/locator/test/component.cmake b/components/service/locator/test/component.cmake
index 04e98f3..fb8928f 100644
--- a/components/service/locator/test/component.cmake
+++ b/components/service/locator/test/component.cmake
@@ -10,4 +10,5 @@
 
 target_sources(${TGT} PRIVATE
 	"${CMAKE_CURRENT_LIST_DIR}/sn_tests.cpp"
+	"${CMAKE_CURRENT_LIST_DIR}/service_locator_tests.cpp"
 	)
diff --git a/components/service/locator/test/service_locator_tests.cpp b/components/service/locator/test/service_locator_tests.cpp
new file mode 100644
index 0000000..5ffc886
--- /dev/null
+++ b/components/service/locator/test/service_locator_tests.cpp
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2023, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <CppUTest/TestHarness.h>
+#include <mock_assert.h>
+#include <protocols/rpc/common/packed-c/encoding.h>
+#include <service_locator.h>
+#include <string.h>
+
+struct service_context *mock_query(const char *sn, int *status)
+{
+	return NULL;
+}
+
+rpc_caller_session *mock_service_context_open(void *contex)
+{
+	return NULL;
+}
+
+TEST_GROUP(ServiceLocatorTests){
+
+};
+
+TEST(ServiceLocatorTests, locatorQueryInvalidServiceName)
+{
+	struct service_context *ctx = service_locator_query("sn:trustedfirmware.org");
+
+	POINTERS_EQUAL(NULL, ctx);
+}
+
+TEST(ServiceLocatorTests, locatorQueryNoResultForValidServiceName)
+{
+	struct service_context *ctx =
+		service_locator_query("sn:trustedfirmware.org:secure-storage.1.0:0");
+
+	POINTERS_EQUAL(NULL, ctx);
+}
+
+TEST(ServiceLocatorTests, serviceContextOpenFails)
+{
+	struct service_context ctx {
+		.open = mock_service_context_open
+	};
+
+	struct rpc_caller_session *session = service_context_open(&ctx);
+
+	POINTERS_EQUAL(NULL, session);
+}
diff --git a/components/service/locator/test/sn_tests.cpp b/components/service/locator/test/sn_tests.cpp
index 50cce75..372dfe7 100644
--- a/components/service/locator/test/sn_tests.cpp
+++ b/components/service/locator/test/sn_tests.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2023, Arm Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -38,6 +38,15 @@
 
     const char *sn2 = "trustedfirmware.org:secure-storage.1.0:0";
     CHECK(!sn_is_valid(sn2));
+
+    const char *sn3 = "urn:trustedfirmware.org:tpm";
+    CHECK(!sn_is_valid(sn3));
+
+    const char *sn4 = "sn:";
+    CHECK(!sn_is_valid(sn4));
+
+    const char *sn5 = "sn";
+    CHECK(!sn_is_valid(sn5));
 }
 
 TEST(ServiceNameTests, checkFields) {
@@ -63,6 +72,23 @@
     const char *sn4 = "sn:ffa:d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0";
     CHECK(sn_is_valid(sn4));
     CHECK_EQUAL(0, sn_get_service_instance(sn4));
+
+    /* Check instance is zero when contains non-number characters */
+    const char *sn5 = "sn:trustedfirmware.org:secure-storage.1.0:0xbeef9";
+    CHECK(sn_is_valid(sn5));
+    CHECK_EQUAL(0, sn_get_service_instance(sn5));
+
+    /* Checks with invalid service names */
+    const char *sn6 = "trustedfirmware.org:secure-storage";
+    CHECK(!sn_check_authority(sn6, "trustedfirmware.org"));
+    CHECK(!sn_check_service(sn6, "secure-storage"));
+    CHECK_EQUAL(0, sn_get_service_instance(sn6));
+
+    const char *sn7 = "sn::secure-storage";
+    CHECK(!sn_check_authority(sn7, ""));
+
+    const char *sn8 = "sn:trustedfirmware.org:";
+    CHECK(!sn_check_service(sn8, ""));
 }
 
 TEST(ServiceNameTests, readService) {
@@ -88,4 +114,14 @@
     CHECK_EQUAL(UUID_CANONICAL_FORM_LEN, sn_read_service(sn4, buf, sizeof(buf)));
     CHECK(memcmp(buf, "d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0", UUID_CANONICAL_FORM_LEN + 1) == 0);
     CHECK_EQUAL(UUID_CANONICAL_FORM_LEN, strlen(buf));
+
+    /* Checks with invalid service name */
+    const char *sn5 = "trustedfirmware.org:crypto.1.7.0";
+    CHECK_EQUAL(0, sn_read_service(sn5, buf, sizeof(buf)));
+
+    /* Check when buffer is smaller than service name */
+    static size_t SIZE = 4;
+    char buf2[SIZE];
+    const char *sn6 = "sn:trustedfirmware.org:crypto.1.7.0:2";
+    CHECK_EQUAL(0, sn_read_service(sn6, buf2, SIZE));
 }
