diff --git a/computepipe/tests/PipeQueryTest.cpp b/computepipe/tests/PipeQueryTest.cpp
index 634ebd0..c3c614a 100644
--- a/computepipe/tests/PipeQueryTest.cpp
+++ b/computepipe/tests/PipeQueryTest.cpp
@@ -100,30 +100,30 @@
 
 // Check retrieval of inserted entries
 TEST_F(PipeQueryTest, GetGraphListTest) {
-    std::shared_ptr<IPipeRunner> dummy1 = ndk::SharedRefBase::make<FakeRunner>();
-    addFakeRunner("dummy1", dummy1);
-    std::shared_ptr<IPipeRunner> dummy2 = ndk::SharedRefBase::make<FakeRunner>();
-    addFakeRunner("dummy2", dummy2);
+    std::shared_ptr<IPipeRunner> stub1 = ndk::SharedRefBase::make<FakeRunner>();
+    addFakeRunner("stub1", stub1);
+    std::shared_ptr<IPipeRunner> stub2 = ndk::SharedRefBase::make<FakeRunner>();
+    addFakeRunner("stub2", stub2);
 
     std::vector<std::string>* outNames = new std::vector<std::string>();
     std::shared_ptr<PipeQuery> qIface = ndk::SharedRefBase::make<PipeQuery>(mRegistry);
     ASSERT_TRUE(qIface->getGraphList(outNames).isOk());
 
     ASSERT_NE(outNames->size(), 0);
-    EXPECT_THAT(std::find(outNames->begin(), outNames->end(), "dummy1"),
+    EXPECT_THAT(std::find(outNames->begin(), outNames->end(), "stub1"),
                 testing::Ne(outNames->end()));
-    EXPECT_THAT(std::find(outNames->begin(), outNames->end(), "dummy2"),
+    EXPECT_THAT(std::find(outNames->begin(), outNames->end(), "stub2"),
                 testing::Ne(outNames->end()));
 }
 
 // Check successful retrieval of runner
 TEST_F(PipeQueryTest, GetRunnerTest) {
-    std::shared_ptr<IPipeRunner> dummy1 = ndk::SharedRefBase::make<FakeRunner>();
-    addFakeRunner("dummy1", dummy1);
+    std::shared_ptr<IPipeRunner> stub1 = ndk::SharedRefBase::make<FakeRunner>();
+    addFakeRunner("stub1", stub1);
 
     std::shared_ptr<PipeQuery> qIface = ndk::SharedRefBase::make<PipeQuery>(mRegistry);
     std::shared_ptr<IClientInfo> info = ndk::SharedRefBase::make<FakeClientInfo>();
     std::shared_ptr<IPipeRunner> runner;
-    ASSERT_TRUE(qIface->getPipeRunner("dummy1", info, &runner).isOk());
+    ASSERT_TRUE(qIface->getPipeRunner("stub1", info, &runner).isOk());
     EXPECT_THAT(runner, testing::NotNull());
 }
diff --git a/computepipe/tests/PipeRegistrationTest.cpp b/computepipe/tests/PipeRegistrationTest.cpp
index 1caf07b..4af8440 100644
--- a/computepipe/tests/PipeRegistrationTest.cpp
+++ b/computepipe/tests/PipeRegistrationTest.cpp
@@ -50,17 +50,17 @@
 
 // Valid registration succeeds
 TEST_F(PipeRegistrationTest, RegisterFakeRunner) {
-    std::shared_ptr<IPipeRunner> dummy = ndk::SharedRefBase::make<FakeRunner>();
+    std::shared_ptr<IPipeRunner> fake = ndk::SharedRefBase::make<FakeRunner>();
     std::shared_ptr<IPipeRegistration> rIface =
         ndk::SharedRefBase::make<PipeRegistration>(this->mRegistry);
-    EXPECT_TRUE(rIface->registerPipeRunner("dummy", dummy).isOk());
+    EXPECT_TRUE(rIface->registerPipeRunner("fake", fake).isOk());
 }
 
 // Duplicate registration fails
 TEST_F(PipeRegistrationTest, RegisterDuplicateRunner) {
-    std::shared_ptr<IPipeRunner> dummy = ndk::SharedRefBase::make<FakeRunner>();
+    std::shared_ptr<IPipeRunner> fake = ndk::SharedRefBase::make<FakeRunner>();
     std::shared_ptr<IPipeRegistration> rIface =
         ndk::SharedRefBase::make<PipeRegistration>(this->mRegistry);
-    ASSERT_TRUE(rIface->registerPipeRunner("dummy", dummy).isOk());
-    EXPECT_FALSE(rIface->registerPipeRunner("dummy", dummy).isOk());
+    ASSERT_TRUE(rIface->registerPipeRunner("fake", fake).isOk());
+    EXPECT_FALSE(rIface->registerPipeRunner("fake", fake).isOk());
 }
diff --git a/computepipe/tests/runner/graph/GrpcGraphTest.cpp b/computepipe/tests/runner/graph/GrpcGraphTest.cpp
index 883ef6f..2effb00 100644
--- a/computepipe/tests/runner/graph/GrpcGraphTest.cpp
+++ b/computepipe/tests/runner/graph/GrpcGraphTest.cpp
@@ -44,12 +44,12 @@
 namespace graph {
 namespace {
 
-constexpr char kGraphName[] = "Dummy graph name";
-constexpr char kSetGraphConfigMessage[] = "Dummy set config message";
-constexpr char kSetDebugOptionMessage[] = "Dummy set debug option message";
-constexpr char kStartGraphMessage[] = "Dummy start graph message";
-constexpr char kStopGraphMessage[] = "Dummy stop graph message";
-constexpr char kOutputStreamPacket[] = "Dummy output stream packet";
+constexpr char kGraphName[] = "Stub graph name";
+constexpr char kSetGraphConfigMessage[] = "Stub set config message";
+constexpr char kSetDebugOptionMessage[] = "Stub set debug option message";
+constexpr char kStartGraphMessage[] = "Stub start graph message";
+constexpr char kStopGraphMessage[] = "Stub stop graph message";
+constexpr char kOutputStreamPacket[] = "Stub output stream packet";
 constexpr char kResetGraphMessage[] = "ResetGraphMessage";
 
 // This is a barebones synchronous server implementation. A better implementation would be an
