diff --git a/tests/test_kiss.py b/tests/test_kiss.py
index 452a7e88ef544a1ccb01fbfa530f60ff444662f0..80fc6e06301326fe1db934feda82ff277ef59050 100644
--- a/tests/test_kiss.py
+++ b/tests/test_kiss.py
@@ -8,6 +8,7 @@ from __future__ import absolute_import
 from __future__ import division
 from __future__ import print_function
 
+import array
 import sys
 import unittest
 
@@ -29,16 +30,28 @@ class KissUtilTestCase(unittest.TestCase):
 
     """Test class for KISS Python Module."""
 
+    # KG6WTF>S7TSUV,MTOSO-2,WIDE2*,qAR,KF6FIR-10:`17El#X-/kg6wtf@gosselinfamily.com
+    RAW_FRAME = [192, 0, 75, 71, 54, 87, 84, 70, 62, 83, 55, 84, 83, 85, 86, 44, 77, 84, 79, 83, 79, 45, 50, 44, 87, 73,
+                 68, 69, 50, 42, 44, 113, 65, 82, 44, 75, 70, 54, 70, 73, 82, 45, 49, 48, 58, 96, 49, 55, 69, 108, 35,
+                 88, 45, 47, 107, 103, 54, 119, 116, 102, 64, 103, 111, 115, 115, 101, 108, 105, 110, 102, 97, 109, 105,
+                 108, 121, 46, 99, 111, 109, 192]
+    DECODED_FRAME = [75, 71, 54, 87, 84, 70, 62, 83, 55, 84, 83, 85, 86, 44, 77, 84, 79, 83, 79, 45, 50, 44, 87, 73, 68,
+                     69, 50, 42, 44, 113, 65, 82, 44, 75, 70, 54, 70, 73, 82, 45, 49, 48, 58, 96, 49, 55, 69, 108, 35,
+                     88, 45, 47, 107, 103, 54, 119, 116, 102, 64, 103, 111, 115, 115, 101, 108, 105, 110, 102, 97, 109,
+                     105, 108, 121, 46, 99, 111, 109]
+
     # All other tests only work on python2
     if sys.version_info < (3, 0):
         def setUp(self):
             """Setup."""
             self.test_frames = open(constants.TEST_FRAMES, 'r')
             self.test_frame = self.test_frames.readlines()[0].strip()
+            self.kiss_mock = KissMock()
 
         def tearDown(self):
             """Teardown."""
             self.test_frames.close()
+            self.kiss_mock.clear_interface()
 
         def test_escape_special_codes_fend(self):
             """
@@ -55,6 +68,49 @@ class KissUtilTestCase(unittest.TestCase):
             fesc = apex.kiss.Kiss._Kiss__escape_special_codes([apex.kiss.constants.FESC])  # pylint: disable=E1101
             self.assertEqual(fesc, apex.kiss.constants.FESC_TFESC)
 
+        def test_read(self):
+            self.kiss_mock.clear_interface()
+            self.kiss_mock.add_read_from_interface(self.RAW_FRAME)
+            translated_frame = self.kiss_mock.read()
+            self.assertEqual(self.DECODED_FRAME, translated_frame)
+
+        def test_write(self):
+            self.kiss_mock.clear_interface()
+            self.kiss_mock.write(self.DECODED_FRAME)
+            all_raw_frames = self.kiss_mock.get_sent_to_interface()
+            self.assertEqual(self.RAW_FRAME, all_raw_frames[0])
+
+
+
+class KissMock(apex.kiss.Kiss):
+
+    frame_buffer = []
+
+    def __init__(self,
+                 strip_df_start=True):
+        super(KissMock, self).__init__(strip_df_start)
+        self.read_from_interface = []
+        self.sent_to_interface = []
+
+    def _read_interface(self):
+        if not len(self.read_from_interface):
+            return None
+        raw_frame = self.read_from_interface[0]
+        del self.read_from_interface[0]
+        return raw_frame
+
+    def _write_interface(self, data):
+        self.sent_to_interface.append(data)
+
+    def clear_interface(self):
+        self.read_from_interface = []
+        self.sent_to_interface = []
+
+    def add_read_from_interface(self, raw_frame):
+        self.read_from_interface.append(raw_frame)
+
+    def get_sent_to_interface(self):
+        return self.sent_to_interface
 
 
 if __name__ == '__main__':