diff --git a/test/DocTest.thrift b/test/DocTest.thrift
index c93ac3b..9d19855 100644
--- a/test/DocTest.thrift
+++ b/test/DocTest.thrift
@@ -155,7 +155,7 @@
 typedef i32 TrivialMultiLine
 
 /**
- * This is the cannonical example
+ * This is the canonical example
  * of a multiline docstring.
  */
 typedef i32 StandardMultiLine
diff --git a/test/README.md b/test/README.md
index 5e3e5d5..a3b75fc 100755
--- a/test/README.md
+++ b/test/README.md
@@ -9,7 +9,7 @@
 with different transports, protocols and languages.
 
 Unit tests for languages ar usually located under lib/<lang>/test/
-cross language tests acording to [ThriftTest.thrift](ThriftTest.thrift) shall be
+cross language tests according to [ThriftTest.thrift](ThriftTest.thrift) shall be
 provided for every language including executables with the following command
 line interface for servers:
 
diff --git a/test/ThriftTest.thrift b/test/ThriftTest.thrift
index 061a570..057db91 100644
--- a/test/ThriftTest.thrift
+++ b/test/ThriftTest.thrift
@@ -172,7 +172,7 @@
   double       testDouble(1: double thing),
 
   /**
-   * Prints 'testStruct("{%s}")' where thing has been formatted into a string of comma seperated values
+   * Prints 'testStruct("{%s}")' where thing has been formatted into a string of comma separated values
    * @param Xtruct thing - the Xtruct to print
    * @return Xtruct - returns the Xtruct 'thing'
    */
@@ -187,7 +187,7 @@
 
   /**
    * Prints 'testMap("{%s")' where thing has been formatted into a string of  'key => value' pairs
-   *  seperated by commas and new lines
+   *  separated by commas and new lines
    * @param map<i32,i32> thing - the map<i32,i32> to print
    * @return map<i32,i32> - returns the map<i32,i32> 'thing'
    */
@@ -195,7 +195,7 @@
 
   /**
    * Prints 'testStringMap("{%s}")' where thing has been formatted into a string of  'key => value' pairs
-   *  seperated by commas and new lines
+   *  separated by commas and new lines
    * @param map<string,string> thing - the map<string,string> to print
    * @return map<string,string> - returns the map<string,string> 'thing'
    */
@@ -203,7 +203,7 @@
 
   /**
    * Prints 'testSet("{%s}")' where thing has been formatted into a string of  values
-   *  seperated by commas and new lines
+   *  separated by commas and new lines
    * @param set<i32> thing - the set<i32> to print
    * @return set<i32> - returns the set<i32> 'thing'
    */
@@ -211,7 +211,7 @@
 
   /**
    * Prints 'testList("{%s}")' where thing has been formatted into a string of  values
-   *  seperated by commas and new lines
+   *  separated by commas and new lines
    * @param list<i32> thing - the list<i32> to print
    * @return list<i32> - returns the list<i32> 'thing'
    */
diff --git a/test/go/src/common/printing_handler.go b/test/go/src/common/printing_handler.go
index e93621f..6cc1507 100644
--- a/test/go/src/common/printing_handler.go
+++ b/test/go/src/common/printing_handler.go
@@ -91,7 +91,7 @@
 	return thing, nil
 }
 
-// Prints 'testStruct("{%s}")' where thing has been formatted into a string of comma seperated values
+// Prints 'testStruct("{%s}")' where thing has been formatted into a string of comma separated values
 // @param Xtruct thing - the Xtruct to print
 // @return Xtruct - returns the Xtruct 'thing'
 //
@@ -115,7 +115,7 @@
 }
 
 // Prints 'testMap("{%s")' where thing has been formatted into a string of  'key => value' pairs
-//  seperated by commas and new lines
+//  separated by commas and new lines
 // @param map<i32,i32> thing - the map<i32,i32> to print
 // @return map<i32,i32> - returns the map<i32,i32> 'thing'
 //
@@ -137,7 +137,7 @@
 }
 
 // Prints 'testStringMap("{%s}")' where thing has been formatted into a string of  'key => value' pairs
-//  seperated by commas and new lines
+//  separated by commas and new lines
 // @param map<string,string> thing - the map<string,string> to print
 // @return map<string,string> - returns the map<string,string> 'thing'
 //
@@ -159,7 +159,7 @@
 }
 
 // Prints 'testSet("{%s}")' where thing has been formatted into a string of  values
-//  seperated by commas and new lines
+//  separated by commas and new lines
 // @param set<i32> thing - the set<i32> to print
 // @return set<i32> - returns the set<i32> 'thing'
 //
@@ -181,7 +181,7 @@
 }
 
 // Prints 'testList("{%s}")' where thing has been formatted into a string of  values
-//  seperated by commas and new lines
+//  separated by commas and new lines
 // @param list<i32> thing - the list<i32> to print
 // @return list<i32> - returns the list<i32> 'thing'
 //
diff --git a/test/haxe/src/TestServerHandler.hx b/test/haxe/src/TestServerHandler.hx
index f067bde..9fc7d14 100644
--- a/test/haxe/src/TestServerHandler.hx
+++ b/test/haxe/src/TestServerHandler.hx
@@ -118,7 +118,7 @@
 
     /**
     * Prints 'testStruct("{%s}")' where thing has been formatted
-    *  into a string of comma seperated values
+    *  into a string of comma separated values
     * @param Xtruct thing - the Xtruct to print
     * @return Xtruct - returns the Xtruct 'thing'
     *
@@ -158,7 +158,7 @@
     /**
     * Prints 'testMap("{%s")' where thing has been formatted
     *  into a string of  'key => value' pairs
-    *  seperated by commas and new lines
+    *  separated by commas and new lines
     * @param map<i32,i32> thing - the map<i32,i32> to print
     * @return map<i32,i32> - returns the map<i32,i32> 'thing'
     *
@@ -183,7 +183,7 @@
     /**
     * Prints 'testStringMap("{%s}")' where thing has been formatted
     *  into a string of  'key => value' pairs
-    *  seperated by commas and new lines
+    *  separated by commas and new lines
     * @param map<string,string> thing - the map<string,string> to print
     * @return map<string,string> - returns the map<string,string> 'thing'
     *
@@ -208,7 +208,7 @@
     /**
     * Prints 'testSet("{%s}")' where thing has been formatted
     *  into a string of  values
-    *  seperated by commas and new lines
+    *  separated by commas and new lines
     * @param set<i32> thing - the set<i32> to print
     * @return set<i32> - returns the set<i32> 'thing'
     *
@@ -233,7 +233,7 @@
     /**
     * Prints 'testList("{%s}")' where thing has been formatted
     *  into a string of  values
-    *  seperated by commas and new lines
+    *  separated by commas and new lines
     * @param list<i32> thing - the list<i32> to print
     * @return list<i32> - returns the list<i32> 'thing'
     *
diff --git a/test/rb/core/transport/test_transport.rb b/test/rb/core/transport/test_transport.rb
index 52755c1..37afa85 100644
--- a/test/rb/core/transport/test_transport.rb
+++ b/test/rb/core/transport/test_transport.rb
@@ -51,7 +51,7 @@
   
   # TODO:
   # This doesn't necessarily test he right thing.
-  # It _looks_ like read isn't guarenteed to return the length
+  # It _looks_ like read isn't guaranteed to return the length
   # you ask for and read_all is. This means our test needs to check
   # for blocking. -- Kevin Clark 3/27/08
   def test_read_all
diff --git a/test/test.py b/test/test.py
index a7e6105..c04ff8d 100644
--- a/test/test.py
+++ b/test/test.py
@@ -42,9 +42,9 @@
     dest="verbose", const=0,
     help="minimal output")
 parser.add_option("--server", type="string", dest="servers", default="",
-    help="list of servers to test seperated by commas, eg:- --server=cpp,java")
+    help="list of servers to test separated by commas, eg:- --server=cpp,java")
 parser.add_option("--client", type="string", dest="clients", default="",
-    help="list of clients to test seperated by commas, eg:- --client=cpp,java")
+    help="list of clients to test separated by commas, eg:- --client=cpp,java")
 parser.set_defaults(verbose=1)
 options, args = parser.parse_args()
 
