自动图像testing

让我们说我正在使用基于打包的方法成像的Mac,并有一个新的成像机(或更好的,几种不同types的机器)准备testing。 我如何执行自动化testing?

编辑:

我主要关心客户端机器的图像。 我想到的testing是这样的:

  • 运行所有安装的应用程序(在/ Applicaions中),一次一个。 有什么事会发生? 应用程序是否要求许可证代码(这是否是预期的)?
  • 更好的办法是在不同的应用程序中testing加载和保存文件。
  • 在networking帐户下login时,更好的办法是执行上述操作。 [许多程序对于networking用户都很有趣。]
  • 如果可能的话,知道应用程序的响应是多么的高效(但是这可能超出了可以合理testing的范围)。

也许更根本的是:

  • 系统是否启动?
  • 它连接到我们的networking?
  • 检查期望的服务(ARD,SSH)是否正常运行也是很好的。
  • 是否安装了所需的软件?
  • 硬盘驱动器是否正常工作?

我见过很多次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的任何操作。