diff --git a/test_ndnping/README.md b/test_ndnping/README.md
new file mode 100644
index 0000000..46a5ebb
--- /dev/null
+++ b/test_ndnping/README.md
@@ -0,0 +1,12 @@
+Test Case - ndnping
+===================
+
+## Objective ##
+
+To test the ndnping application on a single host.
+
+## Description ##
+
+This test case will run NFD, ndnping and ndnpingserver.
+This will report SUCCESS if one ping interest/data is successfully exchanged between the ndnping and ndnpingserver.
+In all other scenarios, the test case will report FAILURE
diff --git a/test_ndnping/__init__.py b/test_ndnping/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test_ndnping/__init__.py
diff --git a/test_ndnping/test_ndnping.py b/test_ndnping/test_ndnping.py
new file mode 100644
index 0000000..131b71f
--- /dev/null
+++ b/test_ndnping/test_ndnping.py
@@ -0,0 +1,51 @@
+#!/usr/bin/python2
+# -*- Mode:python; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+#
+# Copyright (C) 2014 University of Arizona
+# Author: Jerald Paul Abraham <jeraldabraham@email.arizona.edu>
+# See COPYING for copyright and distribution information.
+#
+
+import time
+import unittest
+import process_manager
+
+class test_ndnping(unittest.TestCase, process_manager.ProcessManager):
+    """Test case for testing ndnping application"""
+
+    def setUp(self):
+        print "\nTesting ndnping"
+        print "********************"
+
+    def tearDown(self):
+        self.killNfd()
+        self.killProcess("ndnpingserver")
+        self.killProcess("ndnping")
+        self.cleanupProcesses()
+
+    def test_ping(self):
+        self.startNfd()
+        time.sleep(1)
+        self.startNrd()
+        time.sleep(1)
+        self.startProcess("ndnpingserver",
+            ["ndnpingserver", "-p1", "/test/ndnping"], "-> Starting Ping Server")
+        time.sleep(1)
+        self.startProcess("ndnping",
+            ["ndnping", "-c1", "/test/ndnping"], "-> Starting Ping Client")
+        time.sleep(1)
+        self.waitForProcessCompletion("ndnping", 10)
+        self.waitForProcessCompletion("ndnpingserver", 10)
+        if self.hasProcessCompleted("ndnping"):
+            if self.getProcessReturnCode("ndnping") != 0:
+                print self.getProcessError("ndnping")
+                self.fail(">> TEST FAILED - received non-zero return code from ndnping")
+        else:
+            self.fail(">> TEST FAILED - ndnping failed to complete")
+        if self.hasProcessCompleted("ndnpingserver"):
+            if self.getProcessReturnCode("ndnpingserver") != 0:
+                print self.getProcessError("ndnpingserver")
+                self.fail(">> TEST FAILED - received non-zero return code from ndnpingserver")
+        else:
+            self.fail(">> TEST FAILED - ndnpingserver failed to complete")
+        print ">> TEST SUCCESSFUL"
