diff --git a/Lib/test/test_tk.py b/Lib/test/test_tk.py
index ab979fa..f993c53 100644
--- a/Lib/test/test_tk.py
+++ b/Lib/test/test_tk.py
@@ -2,15 +2,11 @@
 # Skip test if _tkinter wasn't built.
 support.import_module('_tkinter')
 
-import tkinter
-from tkinter.test import runtktests
-import unittest
+# Skip test if tk cannot be initialized.
+from tkinter.test.support import check_tk_availability
+check_tk_availability()
 
-try:
-    tkinter.Button()
-except tkinter.TclError as msg:
-    # assuming tk is not available
-    raise unittest.SkipTest("tk not available: %s" % msg)
+from tkinter.test import runtktests
 
 def test_main(enable_gui=False):
     if enable_gui:
diff --git a/Lib/test/test_ttk_guionly.py b/Lib/test/test_ttk_guionly.py
index bff4fc1..b8c1a4c 100644
--- a/Lib/test/test_ttk_guionly.py
+++ b/Lib/test/test_ttk_guionly.py
@@ -5,6 +5,10 @@
 # Skip this test if _tkinter wasn't built.
 support.import_module('_tkinter')
 
+# Skip test if tk cannot be initialized.
+from tkinter.test.support import check_tk_availability
+check_tk_availability()
+
 from _tkinter import TclError
 from tkinter import ttk
 from tkinter.test import runtktests
diff --git a/Lib/tkinter/test/support.py b/Lib/tkinter/test/support.py
index 97212fb..20bd412 100644
--- a/Lib/tkinter/test/support.py
+++ b/Lib/tkinter/test/support.py
@@ -1,6 +1,42 @@
+import subprocess
+import sys
+from test import support
 import tkinter
+import unittest
+
+_tk_available = None
+
+def check_tk_availability():
+    """Check that Tk is installed and available."""
+    global _tk_available
+
+    if _tk_available is not None:
+        return
+
+    if sys.platform == 'darwin':
+        # The Aqua Tk implementations on OS X can abort the process if
+        # being called in an environment where a window server connection
+        # cannot be made, for instance when invoked by a buildbot or ssh
+        # process not running under the same user id as the current console
+        # user.  Instead, try to initialize Tk under a subprocess.
+        p = subprocess.Popen(
+                [sys.executable, '-c', 'import tkinter; tkinter.Button()'],
+                stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+        stderr = support.strip_python_stderr(p.communicate()[1])
+        if stderr or p.returncode:
+            raise unittest.SkipTest("tk cannot be initialized: %s" % stderr)
+    else:
+        try:
+            tkinter.Button()
+        except tkinter.TclError as msg:
+            # assuming tk is not available
+            raise unittest.SkipTest("tk not available: %s" % msg)
+
+    _tk_available = True
+    return
 
 def get_tk_root():
+    check_tk_availability()     # raise exception if tk unavailable
     try:
         root = tkinter._default_root
     except AttributeError:
diff --git a/Misc/NEWS b/Misc/NEWS
index 401a8ea..fa9f4b8 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -35,6 +35,14 @@
 C-API
 -----
 
+Tests
+-----
+
+- Issue #8716: Avoid crashes caused by Aqua Tk on OSX when attempting to run
+  test_tk or test_ttk_guionly under a username that is not currently logged
+  in to the console windowserver (as may be the case under buildbot or ssh).
+
+
 What's New in Python 3.2.1 release candidate 2?
 ===============================================
 
