让我们说我正在使用基于打包的方法成像的Mac,并有一个新的成像机(或更好的,几种不同types的机器)准备testing。 我如何执行自动化testing?
编辑:
我主要关心客户端机器的图像。 我想到的testing是这样的:
也许更根本的是:
我见过很多次Eggplant提供了一种自动化testing的方法 – 特别是使用GUI应用程序。
也可以使用一个简短的shell脚本,在第一次启动时运行,然后自行删除,以确保configuration设置已设置(例如绑定到Open Directory,可以访问服务器,使用PlistBuddy或默认值读取某些首选项,检查MCXCache是否正确,等等。)
通过“testing”你的意思是“validation某些软件包和程序是否存在,并且运行正常”?
如果是这样,我不能说Mac的具体部分,但我的做法是将一个小的XML-RPC程序作为图像的一部分。 它不一定是XML-RPC,但这是我以前发现有用的一种方法。
该程序会暴露一个API的框进行各种testing。 默认情况下,它将在机器启动时运行,监听(比如)端口8080.你的控制脚本将连接并运行一系列命令,unit testing样式。 您可以控制曝光的级别,从“这个目录是否存在”到“当您运行photoshop时会发生什么”。
就像我说的,这不是Mac精通的,但将是一个简单和便携的解决scheme。
PS通过testing后,软件包可以响应最后的命令从图像中删除自己:)
AppleScript似乎是明显的select。 这里有一个快速入门(有关应用程序的一些注意事项,我没有在最小的testing中发挥作用)(注意:用更相关的东西replacereportEvent …):
my TestApp("Address Book") #my testApp("Aperture") # Aperture doesn't seem to understand activate -- WTF? #my testApp("Automator") # Automator brings up a sheet when launched -- not sure how to dismiss my TestApp("Calculator") my TestApp("Chess") my TestApp("Dictionary") # etc... my reportEvent("OS", "FinishedTest") on TestApp(appName) tell application appName to activate delay 1 tell application "System Events" to count (application processes whose name is appName) if result is 0 then my reportEvent(appName, "QuitUnexpectedly") end if tell application appName to quit delay 1 tell application "System Events" to count (application processes whose name is appName) if result is not 0 then my reportEvent(appName, "FailedToQuit") end if end TestApp on reportEvent(appName, eventDesc) do shell script "curl 'http://server/eventtracker.php?app=" & sanitizeSpaces(appName) & "&event=" & sanitizeSpaces(eventDesc) & "'" end reportEvent on sanitizeSpaces(dangerousString) set AppleScript's text item delimiters to " " set safeString to text items of dangerousString set AppleScript's text item delimiters to "_" return safeString as Unicode text end sanitizeSpaces
…将其保存为AppleScript编辑器以外的应用程序(打开时运行),然后将其添加到testing帐户的login项目列表(系统首选项 – >帐户窗格 – >login项目选项卡)。
我会推迟在启动时获取networking帐户自动login的问题。 我怀疑有一个不太困难的方法来做到这一点(也许通过pipe理的首选项,或者只是放在相关的设置文件“手” – 即后恢复脚本),但我没有一个有用的testing设置现在得心应手。
我想这将取决于你想要testing的东西。 我会假设你可以使用苹果脚本来自动化你想要testing的任何操作。