专利名称:在计算机系统上安装软件和对其进行测试的方法
技术领域:
本发明所提示的是一种在计算机系统上安装软件和/或对其进行测试的方法。
本申请涉及共有未决的中国专利申请序列号98117364.0,在1998年8月21日递交,名称为“定制的计算机系统的软件安装与测试”,发明人为理查德.D.安伯格,罗杰.W.翁,迈克尔.A.布伦德里基。
本申请涉及共有未决的中国专利申请序列号98118805.2,在1998年8月28日递交,名称为“对定制计算机系统的软件安装和测试”。发明人为理查德.D.安伯格,罗杰.W.翁,迈克尔.A.布伦德里基。
本申请涉及共有未决的中国专利申请序列号98117654.2,在1998年8月28日递交,名称为“便于对定制计算机系统的软件安装和测试的数据库”。发明人为理查德.D.安伯格,罗杰.w.翁,迈克尔.A.布伦德里基。
这些共有未决的申请在此作为一整体参考使用,并被授权给本发明的受让人。
通用的个人计算机系统和特定的IBM兼容个人计算机系统在向社会的各领域提供计算能力得到了广泛的使用。个人计算机通常可被定义为桌上型、地上站立型或可移动的微型计算机,包括具有一个系统处理器的系统单元和相关的易失或非易失存储器,显示监视器、键盘、一个或多个磁盘驱动器,一个硬盘存储设备和一个可选的打印机。
众所周知,在将计算机系统发货给商业或个人客户之前要对它们安装软件和进行测试。进行软件安装和测试的目的是能有效地生产出有用的、可靠的、可被运送到商业或个人而又没有差错并能随时运行的计算机系统。一般地,测试要检测和分析在计算机系统中硬件和软件部分出现的差错。计算机系统硬件测试的部分清单包括对硬件组件如处理器、存储器、磁盘存储设备、声音设备、图形设备、键盘、鼠标和打印机的诊断。软件安装通常包括装载所需的软件包到计算机系统、为计算机提供各种相应的环境以及为该计算机准备相应的环境变量和为安装的软件准备相应的初始化文件。软件测试包括确保所需的软件版本已安装到计算机系统,并且在计算机系统上提供有相应的驱动器程序。
众所周知,在工业上计算机系统在被送往客户之前通过执行一固定的过程在制造期间安装软件并测试计算机系统。例如,生成针对某一特定类型计算机系统包含某个诊断测试的磁盘。该盘包括很长的、经常复杂的、指导软件安装和诊断过程的批处理文件。该盘包括对正购买的计算机系统执行测试的所有可执行文件。
每一个正被组装的计算机系统都设置有该盘的相应拷贝。根据在批处理文件中的命令,在制造过程和对各自的计算机系统测试期间,这些盘都要伴随在工厂内正进行组装的计算系统。如果对该过程需要做出修改,通过增加或删除部分批处理代码来相应地改变批处理文件。对批处理文件的改变导致正在被组装的每一个随后的计算机系统的测试参数的改变,因为每一个计算机系统共享同一个批处理文件诊断程序。
尽管这种诊断配置在计算机系统被运送前提高其可靠性方面显示出某种可用性,但还留下有待提高的空间。比如,随着测试的进行而变得更复杂和精确时,诊断测试的批处理文件和可执行文件经常超过磁盘的存储容量。而且,很难或不可能为单个定制的计算机系统或某一系列计算机系统定制测试和软件安装过程的命令而不必修改对某他系统或系列的测试,而且也不可能也很难针对一单个定制的计算机系统和对某一系列计算机系统修改软件安装或测试的指令而不必为其他系统或系列修改该指令。最终,当前批处理文件的结构的非常复杂的本质有时使制造商们很难快而有效地解决或维持测试和软件安装。
因此,所需要的是在一计算机系统上安装软件和对其进行测试的方法,以避免与先有技术相关的限制。
一个实施例相应地通过提供一个步骤序列提供了一种在计算机系统上安装软件的方法,该步骤序列包括多个以由该步骤序列的确定的顺序来执行的软件安装步骤,并且读取和执行该步骤序列的连续行。
图1是表示软件安装和测试的一个实施例的简要图;图2是根据另一实施例的软件安装和测试的简要图;图3A是说明根据本发明把一计算机定单转换成系统描述符记录的一实施例的流程图;图3B说明一示例计算机定单的一部分的一实施例,基本组件记录(BAR)文件和系统描述符记录;图4是说明用于生成和提供步骤序列的一实施例的流程图;图5A是示意性地说明图5B和图5C之间的关系;图5B是用于生成一步骤序列的更详细的流程图的第一部份;图5C是用于生成一步骤序列的更详细的流程图的第二部份;图6说明一个数据库结构的一实施例;图7是说明一步骤文件的部分的一实施例的举例;图8-13是说明用于执行一步骤序列的程序的运行的一实施例的流程图。
图1是在计算机系统制造区软件安装和测试系统90的简要图。在运行中,设置定单92以购买定制的目标计算机系统160。目标系统160将被制造成包含多个硬件和软件组件。例如,目标系统160可包括某一品牌的硬驱,某一型号的监视器,某种品牌的处理器和某一版本的操作系统。在目标系统160被送往客户之前,安装并测试多个组件。这种安装和测试确保在该系统被客户收到并准备运行时是一个可靠的、工作的计算机系统。
由于不同系列的计算机系统和不同的计算机组件要求有不同的软件安装和测试步骤,有必要确定需要对目标系统160运行哪些测试并以什么样的次序来进行这些测试以便取得一个有效的软件安装和测试过程。步骤生成器140是一个配置为排序要在目标系统160上运行的软件安装和测试步骤的计算机系统。为了排序软件安装和/或测试步骤,步骤生成器140、尤其是驻留在步骤生成器140上的排序程序204首先从描述符文件96读取多个组件的描述符信息。描述符文件96借助转换模块94通过将对应于具有希望的组件的所需的计算机系统的定单92转换成计算机可读的格式。
组件描述符是由定单92所定义的、计算机可读的目标系统160的组件的描述信息。在优选实施例中,组件描述符包含在称为系统描述符记录的描述符文件中,该系统描述符记录是包含要被安装到目标系统160上组件、硬件和/或软件清单的计算机可读的文件。在读取多个组件描述符后,排序程序204通过网络连接110从数据库100中检索对应于组件描述符的软件安装和测试步骤。网络连接110可以是任何已知的网络连接,如本地网、因特网、包含在数据库100中的信息可通过以箭头130指示的修改来更新。
在检索到与目标系统160相适应的软件安装和/或测试步骤后,排序程序204根据对应于每一步的序列号以预定的顺序排序这些步骤。在已经排序目标系统160所需要的步骤后,排序程序204写出一系列输出文件到步骤盘150。在图1所说明的实施例中,输出文件包括文本文件,该文本文件包含用于在目标系统160上执行相应的软件安装和/或测试步骤的命令行。根据对应于每一步的序列号以预定的次序来执行。在工厂里步骤盘150和目标系统160装在一起,在这里直接从步骤盘150或从通过网络连接180连到目标系统160的文件服务器190上运行该测试。最好网络连接180是插进目标计算机系统的相应网络端口的普通网络设备。随着软件安装和测试步骤的执行,其结果通过网络连接180被登记到文件服务器190。
图2是针对本发明的另一实施例的软件安装和测试系统192的简要图。一个客户设置定单92购买定制的目标计算机系统160。目标系统160将被制造成包含多个组件,而组件可包括硬件和/或软件组件。在目标系统160被送往客户之前,要安装多个组件和进行测试。这种安装和测试优先确保在客户接到后准备运行时是一个可靠,可工作的计算机系统。
为了排序软件安装和测试步骤,排序程序204从描述符文件96读取多个组件描述信息。定单92通过转换模块94被转换成描述符文件96。组件描述符是目标系统160的组件的计算机可读的说明。在优选实施例中,组件描述符包括在称为系统描述符记录的描述符文件中,包含每一个组件(硬件和软件)的清单的计算机可读文件被装到目标系统160。系统描述符记录可被直接存储在文件服务器202上。排序程序204从数据库100中检索对应于组件描述符的多个软件安装和/或测试步骤。在检索到针对目标系统160的相应软件安装和测试步骤后,排序程序204根据对应每一步的序列号按照预定的次序排序这些步骤。在排序完目标系统160所需的步骤后,排序程序204通过网络连接195和180以预定的次序指导在目标系统160上软件安装和测试的执行。希望网络连接200是插进目标系统160的相应部分的本地网络设备。网络195可以是大家熟知的任何通信连接。随着软件安装和测试步骤的执行。安装和测试的结果通过网络连接200登记到文件服务器202或存储在相应的数据库中。从说明中很明显看到,并不需要图1的分离的步骤生成器计算机系统140。另外,步骤盘150也不是必须的。而且,只有配置为引导目标系统160的引导盘220才需要在出厂时与目标系统160装在一起。
在大致地叙述了软件安装和测试系统之后,现在详细描述图1和图2中系统的运行。
图3A描述了该优选过程,其中对计算机系统的定单被转换成计算机可读的系统描述符记录。该定单可以是任何格式。例如,不同的定单格式也可以有不同的定单传送机制。例如,针对目标计算机系统的定单可以是通过电话、邮件或计算机网络(如internet)等发出。不管采取什么定单格式,该定单包括客户希望购买的计算机系统的类型、客户希望目标计算机系统包括的特定组件的清晰清单。在收到定单后,控制进到传输模块310,在该模块中目标计算机系统的定单通过计算机网络被传送到生产该计算机系统的生产系统(未示出)。该定单也被提供给软件安装和测试系统,在这里它被融合进模块320中的转换程序。在模块310中使用的计算机网络可以是目前已知的任何类型网络。
该转换程序把目标计算机系统的定单转换到用于生产过程的一个记录。尤其是,该转换程序把计算机订货单首先转换成在模块330中称为BAR文件的记录。最好,该BAR文件包含能识别正在生产的特定计算机系统的唯一标识符。该BAR文件也包含一份详细的组件清单,该清单包括包含在该目标系统中硬件和软件。而且希望该BAR文件包含特定生产商的组件号以及其他针对每一个组件的有用标识符。最后,该BAR文件包含与用户相关的信息,如姓名、地址和电话号码等。
在生成模块330中BAR文件之后,在模块340中生成系统描述符记录。在优选实施例中系统描述符记录描述与该目标计算机系统包含在一起的硬件和软件组件的计算机可读文件。在优选实施例中,系统描述符记录以包含硬件标签、软件标签、信息标签和注解的形形式包含目标系统的组件清单。硬件标签标识排序程序204在标签之后的信息是关于硬件组件的。同样软件标签标识在标签之后的信息是关于软件的组件的。信息标签指示随后是一般信息。注解允许各种声明被加进到系统描述符记录,但它被排序程序204忽略。希望系统描述符记录是人可读和易于理解的文本文文件。这种文件有利于软件安装和测试过程的疑难解决和维护。应明白,系统描述符记录可以是对应于唯一一套标志的唯一标识符清单,例如,举个简单例子,系统描述符可以是组件号的清单。
图3B表示目标计算机系统定单350、一个相应的BAR文件360和一个相应的系统描述符记录370的一个例子。目标计算机系统定单350包含计算机系列的名称,在本说明中为系列“X”。在目标计算机系统定单350中包含三个作为示例的硬件组件,包括一个奔腾处理器、一个硬驱和一个显示器。BAR文件360是通过在图3A的模块320中描述的转换程序运行目标计算机系统定单350而得到的。BAR文件360包含针对在系列X中的特定的目标计算机系统的唯一标识符。BAR文件360还包括在目标计算机系统定单中列出的针对每一个组件的与厂商相关的组件号码。而且,BAR文件360包含一个标识符,指示所要求的每个组件的质量以及包含在目标计算机系统中每一个组件的文字描述。系统90使用BAR文件360生成系统描述符记录370。
如所说明的,系统描述符记录370包括针对系列X中特定的目标计算机系统的唯一标识符。而且,系统描述符记录370包含相应的标签,在这里指示处理器、硬驱和显示器都是硬件组件而不是软件组件。系统描述符记录370以文本的形式描述这些组件。而且,作为举例的系统描述符记录370包含一个软件标签,指示对属于系列X的该目标计算机系统要安装或测试一定的软件。例如该软件标签可以指示适于此奔腾处理器的某操作系统总是被安装到属于系列X的目标计算机系统的硬驱上。
在图4中说明了用于排序软件安装和测试步骤的优选的通用方法。在模块400中为目标计算机系统160生成该目标计算机系统的唯一标识符。在图1描述的实施例中,位于步骤生成器计算机系统140的一个用户向步骤生成器140的排序程序204提供该唯一标识符(例如,作为跟踪码的BAR文件),相应地,在图2的实施例中,在收到目标计算机和系统定单后,唯一标识符被自动读进排序程序。
在模块410,定位一个对应于BAR文件标识符的系统描述符记录。在图1的实施例中,或者网络连接110或者网络连接195定位系统描述符记录。在图2的实施例中,网络连接195定位该系统描述符记录。在模块420,所定位的系统描述符记录被提供给排序程序204。在图1实施例中,排序程序驻留在步骤生成器计算机系统140中而在图2实施例中排序程序驻留在文件服务器202中。排序程序204与数据库100(图1和2中的)一起排序目标计算机系统160的软件安装和测试步骤。一旦排序完适应于该特定目标计算机系统的软件安装和测试步骤,排序程序生成如模块430中描述的输出文件。
在图1描述的实施例中,该输出文件最好以六个独立文件的形式写到步骤盘150(见图1)。这些文件包括(1)一个步骤文件,(2)一个Setenv.bat文件,(3)一个Qt.txt文件,(4)一个Et.txt文件,(5)一个Etlast.txt文件和(6)一个Ft.txt文件。希望该步骤文件是一个包含用于执行针对所定购的目标计算机系统的软件安装和测试步骤的相应命令行的清单的ASCⅡ文本文件。在优选实施例中该步骤文件也包含被循环的命令。尤其是该步骤文件允许命令被重复迭代一预定的次数或一预定的时间长度。这种格式优先地允许以计算的、预定的方式重复软件安装和测试步骤。Setenv.bat文件最好在目标计算机系统上设置的环境变量。应明白在操作模式下,仅此步骤文件和Setenv.bat文件是安装和测试所必须的。此Step文件和Setenv.bat文件是包含用于执行此目标计算机系统的软件安装和测试步骤的相应命令行的清单的ASCⅡ文本代码文件。Qt.txt、Et.txt、Etlast.txt和Ft.txt最好都是包含相应命令行的清单的ASCⅡ文本文件,这些命令行用于在该目标计算机系统生产中的Quick Test(Qt)、ExtendedTest1(ET1)、Extended Test2(ET2)、Software Install(SI)和Final Test(FT)阶段运行测试。
在图2的实施例中。另一方面,输出文件不写到图1所示的步骤盘。相反,输出文件驻留在文件服务器202或文件服务器190中,在此它们用于指示在目标计算机系统160上软件安装和/或测试步骤的运行。
图5更详细地描述了图1和图2中排序程序204的运行。
确定模块500确定一个定单的起始。这时只考虑左侧分支。如果需要,模块502施加一个或多个插入码到系统描述符记录。在优选实施例中,该插入码是标准组件,允许为某一特定的目标计算机系统、某计算机系统系列或为某一组件生成一个插入码。例如,如果一个生产商在某一天希望把某一个计算机系统系列的一种品牌的硬驱替换成另一个,就可以生成一个插入码,该插入码修改包含要被替换的硬驱系统操作符记录并在模块502中完成该替换。
然后模块504把对应于目标计算机系统160的系统操作符记录(被修补的)输入到排序程序204。在模块506,从系统描述符记录读取组件描述符。每一个组件描述符描述该目标计算机系统的一个相应的组件,硬件和软件。
参看图3B,在模块370中包含奔腾处理器的系统描述符记录的行是一个示例组件描述符。在模块508,排序程序204实例化分别对应此目标计算机系统160的多个组件的多个导出对象。在优选实施例中,这些导出对象用于存储需要在目标计算机系统160上运行的有关软件安装和测试步骤的信息(从数据库100获取)。相应地,存模块510中,每一个导出的对象与目标计算机系统160的各自组件相联系。
现在从模块500参照右侧分支。在这种情况下,假设定单被客户直接以Bill of Material的形式作为记录存储在数据库中,这种记录包括与目标计算机系统相关的组件描述符。当模块514从数据库读取Bill of Material(存储在该数据库以为排序程序204所用)时,模块512,与模块502一样,应用偏差(插入码)到Bill of Material。
在模块516,与目标计算机系统160的各自组件相关的软件安装和测试步骤被从数据库100中检索并存储在相应的导出对象中。在图1的实施例中,这些步骤被通过网络110检索而在图2实施例中这些步骤被直接从文件服务器202中检索。为了描述在优选实施例中这些步骤是如何从数据库100中检索的,需要描述该数据库的优选建立。
图6表示数据库100的设计。数据库100以预定的次序使软件安装和/或测试步骤的序列与计算机系统系列相关。而且,数据库100被配置为与计算机系统的组件相关。尤其是,数据库100使软件安装和/或测试步骤与计算机系统的组件相关。
数据库100最好是一个关系数据库,数据库100包含几个表,每一个表包含适用于生成上面提到的关联的属性。
数据库100包含Step表102、Family表104、FamilyStepSeq表106、Component表108、FamilyComponent表112、ComponentStep表114、StepDependency表116、StepParameter表118、ComponentClass表120、ComponentClassAttr表122和OperatorMsg表124。在优选实施例中,每一个表包含属性列表,被加下划线的属性作为主关键字。
Step表102包含所有计算机系列的所可能组件的软件安装和测试步骤。在优选的结构中,Step表102的属性包括StepID、Name、Command、CommandType、AfterActionType、MaxInstance、ClassID和DepMask。StepID是每一个软件安装或测试步骤的唯一标识号。Name是规定指示该步骤的名称的一个字符串。Command是指定用于在目标计算机系统160(在图1和2中所指示的)上执行软件安装或测试步骤的可执行命令行的字符串。AfterActionType是确定在软件安装或测试步骤完成后是否需要暂停或重启动(或其他动作)的标识符。MaxInstance是指示该步骤所允许执行的最大次数的标识符。ClassID标识与软件安装或测试步骤相关的某一类型或类的组件(如硬驱、CD-ROM等)。最后,DepMask记录有关一特定的步骤是否具有步骤从属性和/或步骤参数的信息并因此确定是否必须进入StepDependency表116和/或StepParameter表118。
Family表104用一个在属性FamilyID声明的标识整数来标识每一系列的计算机系统。而且在Family表中也包括一个标识该系列计算机的名称的字符串。
FamilyStepSeq表106是一个包含Step表102与Family表104之间的关系的关系表。FamilyStepSeq表106包含一个在属性FamilyID中声明的、针对一特定系列计算机系统(从Family表104)的系列标识整数,一个在属性StepID(从Step表102)中声明的、标识一套特定与该系列相适应的步骤的步骤标识整数,和一个序列号。该序列号包含在属性StepSeqNum,该属性表示一个在其中与一特定系列相关的步骤将要运行的预定的次序。测试工程师分配该序列号,它在每一个生产阶段都是唯一的,并以对某一特定目标系统是最有效的顺序来选择。应明白,可以使用其它分配序列号的方式。最后,FamilyStepSeq表106包含来自步骤表102的PhaseID。
Component表108包含包括在正在生产的计算机系统内的所有可能的组件。该表的属性是指定每一个组件标识符的ComponentID、指定每一个组件的字符串名称的Description和对每一组件类型(如,硬驱、CD-ROM)进行标注的ClassID。
FamilyComponent表112是一个包含每一系列计算机系统和一套包含在该系列中的组件的关系的关系表,FamilyComponent表112的属性包括一个在属性FamilyID(从Family表104)中声明的计算机系列标识整数和一个在属性ComponentID(从Component表108)声明的组件标识整数。
ComponentStep表114是一个包含每个组件和与该组件相适应的一套软件安装和测试步骤的关系的关系表。ComponentStep表114的属性包括一个在属性ComponentID(从Component表108)中声明的组件标识整数和一个在属性StepID(从Step表102)中声明的步骤标识整数。
StepDependency表116包含有关涉及可能冲突的数据。某些测试可能与某些组件类、或特定组件本身、或来自一些厂商的组件相冲突。要组装的目标计算机系统可能包括一个品牌A的硬驱和一个品牌B的CD-ROM。品牌A的硬驱通常可能运行测试C,但是可能测试C与品牌B的CD-ROM不兼容;所有这些从属性都被记录在StepDependency表116中。在该表中,StepID标识具有从属性的步骤,TypeID指示该从属性是否是关于组件类或一特定的组件,根据TypeID的状态ObjectID或者是一ClassID或者是一ComponentID,和DepTypeID指示是否一个特定的步骤被保持或在发生冲突时被清除。
StepParameter表118标识某些步骤可能所需要的参数;例如,可能要求一个步骤运行一定的时间,或运行一特定的循环数。在表118中,StepID唯一地标识特定的安装或测试步骤。ParameterID标识与该步骤相关的每一个参数;可能有不只一个与一特定步骤相关的参数并且每一个具有其自己的ParameterID。例如,同样的测试但具有不同的参数可用于不同品牌的硬驱。DataType标识要包含在各自参数中的数据类型。在上面的例子中,DataType可声明该数据是一个百分比或是一个硬驱ID代码。Content是一个如同在C编程语言所用的与命令如“printf”相关的命令行开关。例如,Content可以是“-%d”以指示一个数字值与此参数相适应。StepSeqNum和ClassID如上所述。
应当注意,StepParmeter表118仅存储与一特定的步骤相关的参数的特性和数量,并不实际存储这些参数的值。这样,在步骤文件创建期间,表118并不把参数值插进该步骤文件的命令行,而是排序程序204在执行期间计算参数值并把该值插入步骤文件命令行。该排序程序根据包含在此描述符记录中的信息进行计算。
表StepParameter118的优点是通过避免需要具有永久地与步骤相关的参数而允许更大的灵活性。这样表118允许工程师很容易地修改该参数而无须编辑Step表102。
ComponentClass表120仅是所有组件类型的列表(ClassID),如,硬驱,CD-ROM等,以及这些类型的简短的描述(ClassName,Description)。
ComponentClassAttr表122列出所有的类以及与每一个类相关的所有属性。AttrID是分配到每一个不同类型的属性如内存大小,运行速度、生产商等的代码,而AttrName是为了方便工程师这些属性更具描述性的名称。DataType是用于代表一特定属性的数据类型的指示,例如,在该属性是生产商的名称时它可以是一个字符串,或者如果该属性是一个内存的尺寸则它是一个整数。
ComponentClass表120和ComponentClassAttr表122并不被排序程序204实际使用,主要由开发工程师使用,这些表并不包含该属性的行何实际值。
最后,OperatorMsg表124根据所进行的测试和所测试的组件为测试操作者存储多个信息。例如,在测试磁盘设备驱动器之前发出一个提示符,提醒操作者把磁带放进磁带驱动器中。
在图3B中描述的示例目标计算机系统将用于说明上面勾画的数据库设计是如何被用于检索软件安装和测试步骤。在系统描述符记录中标识系列X的计算机系统标识符与对应于Family表104中的系列X的FamilyID相联系。Component表108被用于检查在目标计算系统定单中列出的目标计算机系统的组件是否是合法的。换句话说,排序程序和数据库确定包含在图3B的系统描述符记录中的处理器、硬驱、显示器和软件是否具有相应的入口和由表Component108中的ComponentID所声明的相应的整数。如果一个组件不是合法的(即,在系统描述符记录中的组件不包含在Component表108中),就会引起一个错误标志。FamilyComponent表112是一个包含来自Component表108和Family表104的映像的关系表。Family Component表112包含在属于系列X的目标计算机系统上所包括的所有合法组件。这样,Family Component表112可被用于检查是否所有的目标系统的组件是合法的。换句话,排序程序和数据库确定包含在图3B的系统描述符记录中的处理器、硬驱、显示器和软件是否具有FamilyComponent表112中的相应关系。如果一个组件是非法的(即,在系统描述符记录中的组件不被包含在属于系列X的目标系统),则引起一个错误标志。
在关系表FamilyStetpSeq106中驻留有来自Step表102和Family表104的映像。FamilyStepSeq表106包含可合法地在属于系列X的目标计算机系统上运行的所有的软件安装和测试步骤。而且,就在此Family Step Seq表106中序列和阶段号与每一个软件安装和测试步骤相关联。这些序列和阶段号代表针对一特定的系列的计算机系统这些步骤应该运行的正常顺序。因此,FamilyStepSeq表106包括要在系列X目标计算机系统上运行的步骤清单和代表步骤被执行的预定次序的序列和阶段号。
Component Step表114是一个包含来自Component表108和Step表102的映像的关系表。Component Step表114包含要为目标计算机系统的处理器、硬驱、显示器和软件运行的软件安装和测试步骤。
为了检索与包含在目标系统上的各自组件相关的软件安装和测试步骤,在FamilyComponet表112和ComponentStep表114上执行一个连接操作以获得在目标计算机系统160的组件上运行的中间清单步骤。
连接操作导致一个在图3B描述的系统描述符记录中列出的处理器、硬驱、显示器和软件上运行的步骤清单。FamilyComponent表112和ComponentStep表114的连接结果然后与包含系列X的所有步骤的FamilyStepSeq表106相连接。此连接操作的结果包括以序列号和阶段号形式的排序信息,此序列号在一特定的阶段内是唯一的。如此,Family Component表112和FamilyStepSeq表106的三表连接就生成了相应的软件安装和测试步骤以及以序列和阶段号的形式的排序信息以在目标计算机系统上160上安装和/或测试软件。
如果第一连接操作的结果(FamilyComponent表112和ComponentStep表114的连接)是一个空集,就会引起一个出错条件,对一个空集信号,包含在目标系统上的组件不属于在系统描述符记录中所列的系列。现在说明一个这样的例子。考虑到一个系统描述符记录正确地指示一个目标计算机系统属于系统Y。但是假定,系统描述符记录不正确地指示出属于系列X的目标系统的硬驱(硬驱Z)应当包含在系列Y中的目标系统上。在这种情况下,ComponentStep表114包含与硬驱Z相关连联的步骤。FamliyComponent表112包含与系列Y相关联的组件。这样,连接ComponentStep表114和FamilyComponent表112就会产生一个空集,因为硬驱Z并不是与系列Y相关联的组件(相反,它反与系列X相关联)。从上述例子很明显,该数据库的优选设计有利地使人确信某一系列的计算机系统仅包含与该系列相适应的组件。
再次参照图5,在检索与包含在目标系统内的组件相关的步骤之后,排序程序204的模块518通过为该步骤检查DepMask为每一步骤确定是否有步骤从属性。如果有,模块520从Step Dependency表116中读取从属性并且模块522根据DepTypeID解决此从属性。
下一步,模块524通过再次为该步骤检查DepMask确定是否此步骤要求参数。如果是,模块526从StepParameter表108中读取该参数数据,并且模块528计算此参数的实际值并把它插进此步骤的命令行。
模块530通过读取系统描述符记录和生成对应于包括在该目标系统上的组件的环境文件来为该目标计算机系统准备环境变量。例如,读取在图3B中描述的系统描述符记录,并且可以准备象对应于系统描述符记录的处理器硬件组件的“set cpu=pentium”这样的环境变量。
在模块532,多个被检索的软件安装和测试步骤(通过上述的三个表的连接检索的并且解决了从属性和加上了参数)被以预定的次序排序。这个排序过程是按照相应的序列号和阶段号以提供一个步骤序列。该排序本身是通过使用已知的任何一个排序算法来完成的。
在模块534,该排序程序204输出文件。这些文件包括(1)步骤文件,(2)Setenv.bat文件,(3)Qt.txt文件,(4)Et.txt文件,(5)Etlast.txt文件和(6)Ft.txt文件。希望该步骤文件是一个ASCⅡ文件。在一优选实施例中,该步骤文件还包括可被循环的命令。该步骤文件允许命令能被执行一确定的次数或一预定的时间长度。此Setenv.bat文件设置目标计算机系统上的环境变量。该步骤文件包含要在目标计算机系统生产的Quick Test(Qt)、Extended Test1(ET1)、Extended Test2(ET2)、Software Install(SI)和Final Test(FT)阶段分别执行的步骤。
如所示,对于图2的实施例,模块534按原样存储该输出文件或把它存在一个数据库中或存在文件服务器202上。写到文件服务器202上的输出文件可用于指导在目标计算机系统160上的软件安装和测试步骤的执行。
在模块536,如果需要,该步骤文件可以利用一步骤序列插入码来修改。在优选实施例中,该插入码是一个标准模块,允许为一特定的目标计算机系统、一特定系列的计算机系统或炒一特定的组件生成一个插入码。例如,如果一个厂商希望在某一天针对某一特定的组件在另一个测试步骤之前运行一个测试步骤,那么就可以形成一个插入码,该插入码修改包含其顺序要修改的步骤的所有步骤序列并且相应地改变在模块536中的执行顺序。在修补之后,模块538输出再次按原样或在数据库中或在文件服务器202上进行存储的修改文件。
最后,模块540给出写到磁盘150的选项,图1。如果要求有磁盘,而不是直接写到该磁盘上,则模块542在内存中生成一个“虚拟盘”并且随后模块544在一次操作中把整个虚拟盘写到该物理盘上,这减少了写到软驱的操作次数并由此极大地加快了整个程序的运行速度。
该虚拟盘是由下列程序通过分配一个内存块阵列而每一块与该物理盘的物理扇区大小相等来生成与该物理盘相当的内存而生成的。该文件系统是FAT12(由PC-DOS、MS-DOS、Windows95和WindowsNT操作系统使用的)。第一扇区是该磁盘的引导扇区。一个柱面是一组扇区的一个逻辑组成或单元。该数值在该文件系统一旦初始化完成后就是固定的。例如,一个柱面的大小是两个扇区。文件系统仅允许由柱面而不是由扇区来分配。在这种情况下,最小的文件将最少占据一个柱面(或2个扇区)。
开始生成一个内存块阵列。内存块的数量与给定文件系统的该磁盘上的物理扇区的数量相等。
初始化所有内存块的内容值为0。
通过只拷贝该引导区的外部映像来初始化引导区,此外部映像是存储在一个文件里。
初始化该FAT表(在该磁盘上由该文件系统定义的扇区)。
如果要求文件写操作读该文件分配所需的柱面如果有错误,因为没有足够的空间而退出函数。
更新所分配柱面的的目录和FAT表。
把所读的内容写到该柱面。
如果要求文件删除操作。
释放对给定文件所分配的柱面更新所释放柱面的目录和FAT表如果要求物理盘写操作从该盘的引导扇区的第四字节获取所存储的磁盘使用数如果该数>=最大数,返回一个错误代码以指示错误原因如果该数<最大数,将该数+1把该数写回到虚拟盘上的引导扇区的第三字节把内存块从虚拟盘写回到物理盘,当没有包含数据的内存块时停止结束参照图1和图2,箭头130指示可对数据库100进行修改。例如,如果生成了一个新的系列的计算机系统,就可相应地修改数据库100。尤其是,在Family表104的FamilyID该新的系列被赋予一个新的系列标识符并且该新系列的名称被赋予Family表104的Name属性。软件安装和测试步骤的清单被加到FamilyStepSeq表106,这些步骤代表在新的计算机系统系列中哪些步骤需要运行并以什么样的预定顺序。如果新的系列的计算机系统与已有的系列具有相似性,就有可能修改FamilyStepSeq表106中已有系列的入口以生成新的系列的入口。如果需要为新系列的计算机系统生成任何新的步骤,那么这些新的步骤要加到Step表102中。相似地,如果新系列的计算机系统配置有任何新的计算机组件,这些步骤也要加到Componenet表108中。更新ComponentStep表114以把新系列计算机系统中每一个组件与和其软件安装和测试相适当的步骤相关联。如果该新系列仅使用在数据库中已提供的组件,该表不需要修改。更新FamilyComponent表112以便包含在新系列中的所允许的组件的清单将位于数据库中。尤其是,需要把新计算机系统的SysID与每个所允许组件的CompID相关联。这可以通过拷贝并且随后修改一个旧系列计算机系统的已有入口来完成。
应明白,在按照该优选实施例创建数据库中,提供了某些重要的优点。尤其是,数据库的模块化设计使得对新系列的计算机系统容易设置软件安装和测试步骤。而且,可以独立于其他的软件安装和测试步骤修改针对一特定系列的计算机系统和一特定组件的软件安装和测试步骤。
现在注意在目标系统160上执行该步骤序列。使用读取、解释和执行对应于该目标计算机系统的步骤序列的程序,在目标计算机系统160上执行软件安装和测试步骤。在优选实施例中,该程序被称为RunStep,位于图1实施例中的步骤盘150或图2实施例的文件服务器202上。
图7表示在任何软件安装和测试步骤已执行之前的包含在一个步骤文件里的一段步骤序列。如以前提到的,该步骤序列包括用于安装软件和/或用于测试定制目标计算机系统的命令。而且,在该步骤文件中的该步骤序列允许命令能执行一规定的迭代数或一规定的时间长度,而且,该步骤文件可以包含被RunStep程序忽略的注释。在步骤文件中标号800用于分离该步骤序列的字段,810项是用于测试目标计算机系统160的命令,该命令包括例如用于测试内存和用于测试小型机接口(SCSI)设备的命令。从该图中可以看到,每个命令可以包括诸如与特定的测试环境相适应的‘-o’这样的开关。820项是一个被RunStep程序所忽略的注释。810c项是一个以时间循环的命令。在优选结构中,“begin_time_loop”命令指定循环的起始点,‘end_time_loop’命令与指定通过该循环进行重复迭代的时间长度的字段结合。在这里,例如,命令810c是运行1小时30分钟。810d是按照重复迭代的次数循环的命令。在优选实施例中,‘begin_iterate_loop’命令指示RunStep程序一个重复迭代就要执行。‘end_iterate_loop’命令指示循环命令的结束。在这里循环命令810d被运行三次。
图8-13表示RunStep程序的流程图。从整体看RunStep程序。从整体看RunStep一次一行地处理该步骤文件而不是一次一行地读整个步骤文件和不是把整个步骤文件读进存储器。在每一行,RunStep执行多项检查以评估它是否继续处理该行。例如,如果RunStep发现由于执行前面的行而注册有失败条件时,它就会知道继续执行程序已没有意义。相应地,RunStep会查看是否操作员已乱改动了该步骤文件(例如为了略过不必要的测试),如果是,将不会继续执行该程序并由此强迫操作员再重新开始一遍。这样,如果RunStep确定一个步骤文件中的一特定的行将要被执行时,就只读该行,没有必要读取该步骤文件中的行。很清楚,它具有省时的特点。
图8是RunStep的顶层流程图。第一模块900初始化该系统的状态,而这在读取一步骤文件的任何行之前执行。在这个阶段,RunStep读取可变的环境变量(从文件“progress.bat”,后面将描述)以便它子解该系统的精确状态,例如,是在执行最后一行时返回的失败吗 是必须要重新运行或RunStep可以接着读取下一行吗 图9更详细地描述了初始化阶段。第一模块902使控制中断功能无效-这防止操作者中断退出该程序以忽略一个步骤。在模块904然后初始化变量,和在模块906程序从该环境中读取环境变量。这些环境变量主要存储在叫作progress.bat的批处理文件中,该批处理文件位于内存中,并且当RunStep执行步骤文件中靠前的行时将已经写到此批处理文件。progress.bat包含当前系统的状态,并且如将要描述的(模块106.图3)更新从该步骤文件中读取的每一行。该环境变量将包含如最后执行的步骤的行号这样的信息;如果在一个时间循环中一个特定的命令正在被执行,预期要多长时间;要进行哪一个测试阶段。
如果该环境变量被成功地读取,这是由模块908所决定的,然后模块910把在本地驱动器上所有文件的目录清单读进RunStep正在运行的计算机160或202的内存中。这样当RunStep来检查一个文件是否在本地驱动器(模块1002,图13)上时,通过读取在存储器上的目录清单就可以做到这些,并且不必搜索本地驱动器本身,这节省了时间。
如果RunStep成功地读取了该目录清单,这是由模块912所决定的,那么模块914获取当前的过程状态。在此阶段,RunStep按照该系统的状态设置了很多的标志,即,失败、再运行等。就是这些标志将决定通过序列模块916、918、920的RunStep流。如所应用的,这些模块将引导RunStep进入子进程A、B、C,图l0。
参照图10(a)如果RunStep已经在模块916建立和该下一个步骤是正常的过程步骤则进入程序A。在程序A中的第一模块即模块922校正各种校验和,这样做的目的是确保对步骤文件没有乱改动,例如,RunStep读取某校验和并把它们与存储在progress.bat中的校验和进行相关处理-任何差异将表明一个未授权的人过去一直在改动此步骤文件。如果所有的校验和是正确的,这是由模块924所决定的,那么在模块926该程序就复位(清除)某些变量并读取当前的时间。
如果该环境指示最后一步需要被再次执行,这是由模块918所决定的,就进入程序B,图10(b)。程序B的目的是如果需要,给一个授权操作者一个中断进入程序的机会以避免再次执行该最后的一步。因此在模块928显示一条信息,即操作者可以在五秒时间内选择生成工具(MFGTools)或进行此再次运行。生成工具是一个改善的方法,由此,如果需要,一个具有相应密码的授权的操作者可以中断进入该步骤文件。模块930确定是否该最后的一步要运行,这取决于操作者的响应,并且如果是这样,模块932设置进程变量(progress.bat)以运行MFGTools。
图10(c)在模块934程序C简单地设置该进程变量(progress.bat)以运行MFGTools。
回到图9,模块936确定是否返回一个失败,如果不返回,模块938查看当前的阶段是否是合法的。
参照图8,一旦完成初始化模块900,并且如果返回“success”,这是由模块950所决定的,那么RunStep进到作为“process step file”的模块952。在RunStep到达此阶段时为止,它已经从该环境中读取了足够的信息以知道它是否应进到该步骤文件的下一行、再运行前一行或放弃等。
图11更详细地表示模块952,“process step file”。模块954确定该生成工具是否已被选择或是否要求再运行,如果任何一个条件为真,那么不必做进一步的设置并且这部份程序可以返回成功。如果没有条件是真的,(即,假定RunStep现在已进行到该步骤文件的下一行),那么在模块956打开相应阶段步骤文件。这意味着RunStep打开与正被引导的测试(即,快速测试、扩展测试等)的特定阶段相关联的步骤文件。
模块958确定是否有倒回阶段,倒回阶段是再运行的一种特殊情况,这时整个测试阶段在出现一个步骤失败时需要被重复,即,RunStep必须回到针对该阶段的步骤文件的开头。如果RunStep确定这是一个倒回阶段,那么相应地模块960设置环境并返回成功。
如果这是一个倒回阶段,那么模块962从步骤文件中读取下一行号,并通过将该行号与存储在progress.bat中、在初始化阶段由RunStep读取的行号进行匹配并进一步检查它刚刚读取的行号是它所希望读取的行-这是一个反乱改动设备。尤其是,当RunStep在运行时,progress.bat包含有关被执行的最后步骤的信息,即,诸如在步骤文件中的行号、被执行的命令的命令ID及其他检查和相关信息。在模块962,RunStep读取包含在内存中的progress.bat文件,并且如由progress.bat中的行号所确定的那样略过该步骤文件中的一些行,然后检查其实际所处的行号是否与它希望所处的行号相一致。它还检查位于该行的命令是否与被告知刚被执行的那个是同一个,即,RunStep证实它发现自己现在所处的行实际上是被运行的最后一步。
如果它是,这是由模块964决定的,那么,在模块966读取该步并为运行下一步而设置进程环境。模块968检查所读的该步的有效性,如果是,返回成功。如果没有读取一有效步骤,在模块970,RunStep查看是否它实际上已到达该最后阶段的该步骤文件的最后行。如果是这样,那么RunStep返回一个“all steps processed”的消息,表示所有的测试都完成。如果不是,则返回失败。
另一方面,如果RunStep的模块964显示它刚刚读取的行号并不与它所希望的相匹配,那么RunStep进入图12中所示的程序。第一模块972检查是否RunStep实际上已到达该最后阶段的步骤文件的最后行。如果是,则返回一个消息,指示所有的测试已完成。如果不是,模块974检查是否到达一步骤文件的最后一行。如果是,RunStep退回到模块956,并为下一阶段的测试打开该步骤文件。
另一方面,如果RunStep确定这不是此步骤文件的末尾,那么它在模块976查看它刚刚读取的行号是否超过它所希望读取的行(从内存中读)。
如果该行号被超过,其指示RunStep在步骤文件中存在手动乱改(例如,一个操作者从此步骤文件中消除一个步骤)并且RunStep返回失败。如果该行号没被超过,那么RunStep返回到模块962。
然后RunStep返回到模块990,图8,并且如果遇到此步骤文件的末尾,它就将其报告给该操作者。RunStep进一步查看是否在模块992返回有失败。如果是这样,就做报告并且RunStep退出。
在此阶段,RunStep已确定此系统的精确状态,知道是否将要再运行一步、倒回一个阶段或执行此步骤文件中下一行并且相应地设置内存。在继续之前,RunStep存储所有它在前期阶段中学习的信息,这在模块994中进行并在图13中更详细地说明。
首先,模块1000找时机清除不再需要的文件。然后模块1002确定将要发生的测试是否要脱离本地驱动器或通过网络而运行,并保存此信息。下一步,模块1004,1006,RunStep使用它在前期阶段中学习的信息来设置环境变量(在progress.bat)以便下次RunStep从开始运行时,所有的环境变量都被更新成代表该系统的当前状态。
在模块1008,RunStep检查此写操作是成功的之后,它在模块1010中写一个日志文件。如果成功,模块1012,在模块1014确定是否有再次运行的需要,如果需要,模块1016生成一个再次运行文件。
控制然后回到模块1020,图8,并且如果没有返回失败,该程序被退出,并以一个255错误级别指示应该执行从模块966的步骤文件读取的命令行。这发生在模块1022。然后RunStep返回到开始以处理下一步(在步骤文件中的行)。
应看出,RunStep程序是一个高安全性的系统,其中包括有各种检查以防止未授权的用户乱改此步骤文件以便去掉多余的测试或避免再运行。这通过使控制中断无效;以各种间隔校正此步骤文件的行号;把校验和放进系统中来达到。另一个安全的方面是不管何时发生失败,如在上面流程图中各点处由RunStep所确定的,RunStep退出,并且此项失败被写到一个只读隐藏文件中;一个业余操作者不会意识到到此文件并且不能找到它,因此也不能发现出了什么问题和如何忽略该错误,即,他将被迫拒绝该组件或再次运行该测试直到满意为止。
虽然已说明和描述了说明性的实施例,在前面的揭示中也考虑到更宽范围的修改、变化和替换。有此实施例的特点可以不必使用其他特点而得到利用。所以,应明白,所列的附属权利要求应被更广义地、并以一种与在此揭示的实施例的范围相一致的方式理解。
权利要求
1.一种在计算机系统上安装软件的方法,包括提供一步骤序列的步骤,该步骤序列包含多个按照由该步骤序列所确定的顺序来执行的软件安装步骤;以及读取和执行该步骤序列的连续步骤。
2.如权利要求1所述的方法,其特征是还包括对于所执行的每一步用有关该软件安装的当前状态的数据更新一个文件的步骤;以及在每一步执行前,从该文件确定是否该步骤正常地是该步骤序列中的下一个连续步骤。
3.一种测试计算机系统的方法,包括提供一步骤序列的步骤,该步骤序列包括按照由该步骤序列所确定的顺序来执行的多个测试步骤;以及读取和执行该步骤序列中的连续步骤。
4.如权利要求3所述的方法,其特征是还包括对于所执行的每一步用有关测试的当前状态的数据更新一个文件的步骤;以及在每一步执行前,从该文件确定是否该步骤正常地是该序列中的下一个连续步骤。
5.一种安装软件和测试计算机系统的方法,包括提供一步骤序列的步骤,该步骤序列包括按照由该步骤序列所确定的顺序来执行的多个软件安装和测试步骤;以及读取和执行该步骤序列中的连续步骤。
6.如权利要求5所述的方法,其特征是还包括对于所执行的每一步用有关该软件安装和测试的当前状态的数据更新一个文件的步骤;以及在每一步执行前,从该文件确定是否该步骤正常地是该序列中的下一个连续步骤。
7.一种在计算机系统上安装软件和/或对其进行测试的方法,该方法包括步骤提供一个步骤序列,该步骤序列包含按照由该步骤序列所确定的顺序来执行的多个软件安装和/或测试步骤;读取和执行该步骤序列的连续步骤;对于所执行的每一步,用有关该安装和/或测试的当前状态的数据更新一个进程文件;以及在执行每一步前,从该进程文件确定是否该步骤正常地是该步骤序列中下一个连续步骤。
8.如权利要求1所述的方法,其特征是该进程文件包含该步骤序列中所执行的最后一步的行号和在该步骤所执行的命令。
9.如权利要求1所述的方法,其特征是还包括步骤在执行每一步前,把执行该步骤序列的计算机的本地驱动器上的所有文件目录清单读进所述计算机的内存中。
10.如权利要求1所述的方法,其特征是还包括步骤在执行每一步前,使控制中断无效以防止操作者为了忽略一个步骤而中断退出该步骤序列。
11.如权利要求1所述的方法,其特征是提供一步骤序列的步骤包括步骤从一计算机可读文件中读取多个组件描述符,每个组件描述符描述了该计算机系统的一个组件,从一数据库中读取多个步骤,每个步骤与一组件描述符相关联并且包括一个序列号,以及按照该序列号以一预定的顺序排序该多个步骤以提供该步骤序列。
12.如权利要求1所述的方法,其特征是还包括步骤把该步骤序列写到一非易失性存储媒介,该媒介被配置为在制造期间就伴随该计算机系统。
13.如权利要求1所述的方法,其特征是调整该步骤序列以提供可重复一定的时间长度的命令。
14.如权利要求1所述的方法,其特征是调整该步骤序列以提供可重复一定的重复迭代次数的命令。
全文摘要
一种在计算机系统上安装软件和/或对其进行测试的方法包括:提供一个具有按照由一个步骤序列所确定的顺序来执行的多个软件安装和/或测试步骤的该步骤序列;读取和执行该步骤序列的连续步骤。该方法还包括:对于所执行的每一步,用有关该安装和/或测试的当前状态的数据更新一个文件,并且,在执行每一步前,从该文件确定是否该步骤正常地是该步骤序列中的下一个连续步骤。
文档编号G06F11/00GK1281182SQ9910961
公开日2001年1月24日 申请日期1999年6月30日 优先权日1999年6月30日
发明者理查德·D·安伯格, 罗杰·翁, 迈克尔·林奇 申请人:戴尔美国公司