首页> 中国专利> 图像取得装置、图像取得方法及计算机程序

图像取得装置、图像取得方法及计算机程序

摘要

动作检验装置(100)包括:窗口显示位置取得部(602),针对包括显示网页的客户区域和不同于客户区域的附加区域的浏览器窗口,取得画面上的浏览器窗口的显示位置;客户区域确定部(606),按照画面上的浏览器窗口的显示位置、浏览器窗口中的附加区域的尺寸、以及浏览器窗口中的状态栏的尺寸,确定画面上的客户区域的显示位置;图像取得部(625),按照所确定的画面上的显示位置,对客户区域的显示图像进行抓图。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-09-28

    授权

    授权

  • 2012-09-05

    实质审查的生效 IPC(主分类):G06F15/00 申请日:20100928

    实质审查的生效

  • 2012-07-04

    公开

    公开

说明书

技术领域

本发明涉及取得画面上所显示的网页内容的图像的技术。

背景技术

在保证产品质量方面,产品出厂前的动作测试不可缺少。一般来说,多是通过测试工 程师手动操作产品并确认该操作的结果来执行动作测试的。但是,对于操作变化(Variation) 较丰富的多功能产品,手动的动作测试就难以满足要求了。

因此,多是通过用测试程序自动执行动作测试来谋求动作测试的省力化。例如,HP (Hewlett-Packard)公司提供的自动功能测试工具“QTP(Quick Test Professional)”就是通 过执行用户自制的测试程序来实现动作测试的自动化的。

〔在先技术文献〕

〔专利文献〕

〔专利文献1〕日本特开2004-227396号公报

发明内容

〔发明所要解决的课题〕

在对外部装置提供网页内容的网页服务器、以及在该网页服务器上工作的网页应用的 动作测试中,有时要对显示于外部装置上的网页内容的图像进行抓图。然后,通过由测试 工程师确认该抓图图像,来确认动作的正常性。

然而,在使用各种各样的网页浏览器进行产品的动作测试时,起动网页浏览器的窗口 (以下也称“浏览器窗口”)的显示形式因网页浏览器而异。因此,本发明人认识到在使不 同的网页浏览器显示相同的网页内容时,有时浏览器窗口整体看起来不一样,会降低动作 测试的效率。

本发明是基于本发明人的上述课题认识而完成的发明,其主要目的在于提供一种用于 取得在动作测试中便利性高的网页内容的显示图像的技术。

〔用于解决课题的手段〕

为解决上述课题,本发明一个方案的图像取得装置包括:窗口位置取得部,针对包括 显示网页的客户区域和不同于客户区域的附加区域的浏览器窗口,取得画面上的浏览器窗 口的显示位置;图像位置确定部,按照画面上的浏览器窗口的显示位置、浏览器窗口的附 加区域的尺寸、以及浏览器窗口的状态栏的尺寸,确定画面上的客户区域的显示位置;图 像取得部,按照图像位置确定部所确定的画面上的显示位置,对客户区域的显示图像进行 抓图。

本发明的另一方案是一种图像取得方法。该方法由图像取得装置来执行,包括:针对 包含显示网页的客户区域和不同于客户区域的附加区域的浏览器窗口,取得画面上的浏览 器窗口的显示位置的步骤;按照画面上的浏览器窗口的显示位置、浏览器窗口的附加区域 的尺寸、以及浏览器窗口的状态栏的尺寸,确定画面上的客户区域的显示位置的确定步骤; 按照在确定步骤中所确定的画面上的显示位置,对客户区域的显示图像进行抓图的步骤。

当然,将以上构成要素的任意组合、本发明的表现形式在装置、方法、系统、程序、 存储有程序的记录介质等之间变换后的实施方式,作为本发明的方案也是有效的。

〔发明效果〕

通过本发明,能取得在动作测试中便利性高的网页内容的显示图像。

附图说明

图1的(a)是入口站点第一画面的画面图。

图1的(b)是入口站点第二画面的画面图。

图2是表示执行词典测试时的日志的图。

图3是表示用于执行词典测试的程序的图。

图4是动作检验装置的功能框图。

图5是至取得日志并执行动作测试的示意图。

图6是日志画面的画面图。

图7是函数设定画面的画面图。

图8是程序画面的画面图。

图9是输入设定画面的画面图。

图10是事例设定画面的画面图。

图11是表示参考技术1的动作检验装置与参考技术2的动作检验装置各自的构成的 概要的图。

图12是表示参考技术1的动作检验装置与参考技术2的动作检验装置各自的动作的 概要的图。

图13是表示参考技术2的动作检验装置的功能构成的框图。

图14是在参考技术2中、至检测到用户的数据输入操作而执行动作测试的概要图。

图15是参考技术2中的函数设定画面的画面图。

图16是参考技术2中的函数设定画面的画面图。

图17是参考技术2中的输入设定画面的画面图。

图18是参考技术2中的事例设定画面的画面图。

图19是表示针对网页浏览器的两种操作方式的特征的图。

图20是示意性地表示在针对网页浏览器的两个操作方式下、功能间的调用关系的图。

图21是表示参考技术3的动作检验装置的功能构成的框图。

图22是表示图21的程序执行部的详细情况的框图。

图23是表示参考技术3的动作检验装置的动作的流程图。

图24是示意性地表示网页的动作测试中的功能间调用关系的图。

图25是表示Selenium窗口管理器中所存储的数据例子的图。

图26是表示针对图24的FF对话框的操作的方式的图。

图27是表示针对图24的Safari对话框的操作的方式的图。

图28是表示参考技术4的动作检验装置的功能构成的框图。

图29是表示图28的程序执行部的详细情况的框图。

图30是表示参考技术4的动作检验装置的动作的流程图。

图31是详细表示图30的S402的测试程序读入处理的流程图。

图32是详细表示图30的S419的网页浏览器起动处理的流程图。

图33是详细表示图30的S426的网页操作处理的流程图。

图34是详细表示图33的S452的Mac用操作处理的流程图。

图35是详细表示图33的S458的IE用操作处理的流程图。

图36是详细表示图33的S462的FF用操作处理的流程图。

图37是表示浏览器窗口中的网页内容的显示例的图。

图38是表示图37的浏览器窗口的抓图图像的图。

图39是表示第1实施方式中的与画面抓图处理相关的功能构成的框图。

图40是表示代理处理部向佐证物设定部提供的函数的图。

图41是表示动作检验装置中的图像抓图处理的动作的流程图。

图42是详细示出图41的S606的框架显示位置确定处理的流程图。

图43是表示浏览器窗口中的网页内容的显示例的图。

具体实施方式

在说明本实施方式的动作检验装置前,先通过参考技术1、参考技术2、参考技术3、 参考技术4来说明成为其前提的结构。

(参考技术1)

图1的(a)是入口站点第一画面300的画面图。

在参考技术1中,说明以入口站点“XYZ!”为对象的动作测试。入口站点第一画面300 包含编辑框302和检索链接304。检索链接304包括“网页”、“博客”、“图像”、“词典”这 四个链接。用户在编辑框302中输入字符串并鼠标点击检索链接304中的某一个后,就开 始输入字符串的检索了。例如在编辑框302中输入字符串“液晶”,并鼠标点击链接“网页” 时,包含字符串“液晶”的网站就成为检索对象。而如果在编辑框302中输入字符串“液晶” 并鼠标点击链接“博客”,则该入口站点内所开设的博客(Weblog)中包含字符串“液晶”的 博客页就成为检索对象。

在此,假定在编辑框302中输入了字符串“测试”,并且鼠标点击了链接“词典”。

图1的(b)是入口站点第二画面310的画面图。

在入口站点第一画面300中输入“测试”并鼠标点击“词典”后,图1的(b)所表示的入 口站点第二画面310就被显示出来。通过该入口站点所提供的“词典”服务,与该字符串“测 试”相关联的对象被罗列在检索结果栏306中。

这里,假定鼠标点击了检索结果栏306的最上面的链接“测试(test)”。

在上述过程中,以下所示的三个操作被进行。

A1.在入口站点第一画面300的编辑框302中输入字符串“测试”的操作。

A2.鼠标点击入口站点第一画面300的检索链接304中的链接“词典”的操作。

A3.鼠标点击入口站点第二画面310的检索结果栏306中的链接“测试(test)”的操 作。

以下,将通过上述A1~A3的操作而实现的动作过程称为“词典测试”。

图2是表示执行了词典测试时的日志320的图。

在操作被导入了HP公司的QTP的客户端终端来访问上述入口站点,并执行了A1~ A3的操作的情况下,QTP生成图2所示的日志320。操作A1~A3被作为预定格式的码 文记录在日志320中。

例如,操作A1被表达为

Browser(″XYZ!″).Page(″XYZ!″).WebEdit(″p″).Set″测试″

这样的码文。其意思是对“XYZ!”网站、名称为“XYZ!”的网页、名称为“p”的编辑框(相 当于图1的(a)、图1的(b)中所示的编辑框302)输入了字符串“测试”。

同样,操作A2被显示为

Browser(″XYZ!″).Page(″XYZ!″).Link(″词典″).Click

操作A3被显示为

Browser(″XYZ!″).Page(″XYZ!-所有词典-测试″).Link(″测试(test)″).Click

这样的码文。在参考技术1中,是基于QTP的语法进行说明的,但码文的格式并不限 于此。

QTP能够一边解释日志320的码文一边再现执行码文所表达的操作。因此,一旦生成 了日志320,就能任意次地重复执行同一内容的词典测试。另外,只要改写日志320的一 部分,就能以不同于手动操作时的内容来执行词典测试。例如,将

Browser(″XYZ!″).Page(″XYZ!″).WebEdit(″p″).Set″测试″

中所包含的字符串“测试”变更成其它字符串“测-试”,改写成

Browser(″XYZ!″).Page(″XYZ!″).WebEdit(″p″).Set″测-试″

而输入到QTP中,则能够自动执行仅改变了编辑框302的输入字符串的同内容的词典 测试。

但是,要改写日志320地执行动作测试,需要针对日志320的语法拥有某种程度的知 识。另外,在改写日志320时有可能会发生人为性的错误。

图3是表示用于执行词典测试的程序330的图。

也可以不通过日志320执行动作测试,而是通过用VB(Visual Basic)脚本等记述与 日志320同等的内容来执行测试程序。图3所示的程序330是参照图2的日志320而编制 成的测试程序。

例如,操作A1被表达为

WebEditSet(Browser(″XYZ!″).Page(″XYZ!″).WebEdit(″p″),DataTable (″p1,dtGlobalSheet″)

这样的VB函数。WebEditSet函数的具体逻辑如该图中部所记述的那样。

在程序330不包含字符串“测试”这样的输入数据这一点上,程序330不同于日志320。 作为替代手段,WebEditSet函数是从被表达为dtGlobalSheet的文件(下称“输入数据文件”) 接受输入数据的。即,逻辑与输入数据是分离的。通过输入数据文件的改写或替换,能够 基于各种各样的输入数据执行同一逻辑的词典测试。与基于手动的动作测试或基于日志 320的动作测试相比,基于程序330的动作测试具有易于增加输入数据的变化这样的优点。

但是,基于程序330的动作测试中存在以下问题。

D1.需要新花费编程的功夫。

D2.根据程序编制者不同,程序的内容会变化。例如,程序员P1针对操作A1编制 的WebEditSet函数和程序员P2针对操作A1编制的WebEditSet函数,即使函数名相同, 逻辑也未必相同。另外,程序本身也有可能混入了漏洞(bug)。因此,就需要用于确保程 序330自身的可靠性的措施。此外,程序330中还需要例外处理等与动作测试没有直接关 系的逻辑,但未必所有程序员都会编入考虑到例外处理的逻辑。例如在图3所示的 WebEditSet函数的情况下,编入了能应对输入数据为空字符的情况的逻辑,但其他程序员 在编制WebEditSet函数时可能会漏掉这样的考虑。

结果,动作测试的内容结果容易受到程序员的水平的影响。

图4是动作检验装置100的功能框图。

对于本说明书的框图所示的各功能块,硬件上可以用计算机的CPU等元件或机械装 置来实现,软件上可以通过计算机程序等来实现,在此,描述通过它们的结合来实现的功 能块。因此,本领域技术人员当理解这些功能块可以通过硬件、软件的组合以各种各样的 形式来实现。例如,各功能块可以作为计算机程序存储在记录介质中,通过安装到信息处 理装置的硬盘中,并适时地被读入到主存储器而被处理器执行。

动作检验装置100可以被形成为专用硬件,也可以被形成为网页浏览器等与用户接口 协作的软件模块。

作为参考技术1的动作检验装置100,说明其被形成为QTP的附加组件(add-on)的 软件模块的情况。

动作检验装置100包括IF(接口)部110、数据处理部130以及数据保持部140。

IF部110负责与用户、QTP的接口。数据处理部130基于从IF部110、数据保持部 140取得的数据执行各种数据处理。数据处理部130还发挥IF部110与数据保持部140间 的接口的作用。数据保持部140是用于保持各种数据的存储区域。

IF部110:

IF部110包括输入部112和输出部118。输入部112负责来自用户和QTP的输入处理, 输出部118负责向用户和QTP的输出处理。输入部112包括日志取得部114和输入数据 取得部116。日志取得部114从QTP取得日志。输入数据取得部116取得输入数据文件, 并从输入数据文件取得要提供给程序的输入数据。关于输入数据文件的详细情况,将结合 图5和图9详细叙述。

输出部118包括函数设定画面显示部120、输入设定画面显示部122、程序画面显示 部124以及事例设定画面显示部126。函数设定画面显示部120使得图7所示的函数设定 画面210显示出来。输入设定画面显示部122使得图9所示的输入设定画面230显示出来。 程序画面显示部124使得图8所示的程序画面220显示出来。事例设定画面显示部126使 得图10所示的事例设定画面240显示出来。

数据处理部130:

数据处理部130包括程序生成部132、程序执行部134以及测试事例登录部136。程 序生成部132自动生成动作测试用的程序。程序执行部134使所被生成的程序执行。在参 考技术1中,是使QTP执行程序。测试事例登录部136将执行集(set)登录在事例文件 中。关于执行集和事例文件,将结合图10进行详细叙述。

数据保持部140:

数据保持部140包括日志保持部142、程序保持部144、输入数据文件保持部146、事 例文件保持部148、函数保持部150以及结果保持部152(以下也称“测试结果保持部152”)。 日志保持部142保持日志。程序保持部144保持程序。输入数据文件保持部146保持输入 数据文件。事例文件保持部148保持事例文件。函数保持部150保持可被登录到动作测试 用的程序中的函数的函数库。结果保持部152保持动作测试的结果。

图5是在参考技术1中至取得日志并执行动作测试为止的示意图。

首先,手动操作动作测试的对象机器。在参考技术1中,操作客户端终端的网页浏览 器,访问入口站点“XYZ!”。QTP生成日志,日志取得部114从QTP取得日志。各种码 文预先与函数建立有对应关系。函数设定画面显示部120读取函数保持部150的函数库, 并使与日志中所包含的各码文对应的函数一览显示(S1)。在函数设定画面显示部120中, 用户能够根据需要追加、变更、删除函数。这样,应被包含在程序中的函数就被确定了。 关于S1,将与图7相结合地在后面详述。

接下来,设定应提供给该程序的输入数据(S2)。设定内容以输入数据文件的形式被 登录。关于S2,将结合图9在后面详述。基于在S1中设定的函数群自动生成程序(S3)。 关于S3,将结合图8在后面详述。

接下来,基于多种程序以及多种输入数据文件,将程序与输入数据文件的组合作为“执 行集”登录。也可以登录多个执行集(S4)。设定内容被以事例文件的形式登录。例如,当 想要使得在基于输入数据文件F2执行程序P1后再基于输入数据文件F6执行程序P2的情 况下,被以

执行集1:程序P1+输入数据文件F2

执行集2:程序P2+输入数据文件F6

的形式登录到事例文件中。关于S4,将结合图10详述。

最后,按照事例文件执行程序(S5)。在上述例子的情况下,程序执行部134使执行 集1和执行集2连续执行。程序执行部134将程序的执行结果、换言之是将测试结果登录 到结果保持部152中。

图6是日志画面200的画面图。

在日志取得部114取得日志后,输出部118使日志画面显示在日志画面200中的日志 显示区域202。用户也可以将QTP的日志复制并粘贴到日志显示区域202中。或者,也可 以是输出部118在日志画面200显示时取得QTP所生成的日志(文件),并使之画面显示 在日志显示区域202中。用户鼠标点击执行按钮204后,接下来的图7所示的函数设定画 面210被显示出来。

图7是函数设定画面210的画面图。

程序生成部132针对日志所包含的码文确定函数,并使确定的函数一览显示在函数设 定画面210的函数栏214中。编号栏212表示执行顺序,说明栏216表示函数的概要说明, 对象栏218表示操作对象的对象(object),变量栏219表示变量名,输入值栏217表示输 入数据。

对于前述的表示操作A1的码文

Browser(″XYZ!″).Page(″XYZ!″).WebEdit(″p″).Set″测试″

,WebEditSet函数在函数库中预先与其建立有对应关系。程序生成部132读出日志320 的第一个码文后,参照函数保持部150的函数库,确定WebEditSet函数。因为操作A1中 被作为操作对象的对象是“Browser(″XYZ!″).Page(″XYZ!″)”页,所以对象栏218中被 设定为“Browser(″XYZ!″).Page(″XYZ!″)”。WebEditSet函数是以设定在编辑框p(编 辑框302)中的输入数据为自变量的函数。虽然也可以在输入值栏217中设定应设定到编 辑框p中的输入数据,但这里假定在函数设定画面210中没有登录输入数据的情况来进行 说明。应设定到编辑框p中的输入数据在将结合图9详述的输入设定画面230中被设定。

由于日志320中对应于操作A1~A3地包含有三个码文,所以程序生成部132确定三 个函数。用户也可以在函数设定画面210中追加、删除、变更函数。图7中的第四个 TextCheck函数与第五个WebScreenCapture函数是用户追加选择的函数。

TextCheck函数是判定正在显示的网页中是否包含被赋值为变量q的字符串的函数。 WebScreenCapture函数是对正在显示的网页进行画面抓图的函数。在对动作测试的结果进 行证迹管理方面,WebScreenCapture函数是非常方便的函数。这样,函数库中不仅备有 WebEditSet函数那样的与用户的操作相对应的函数,还备有TestCheck函数这样的用于辅 助支持动作测试的函数。用户只要从函数库中选择所希望的函数,就能设定想要包含在动 作测试中的逻辑。

测试事例设定按钮215被点击时,图10的事例设定画面240被显示出来。输入数据 文件生成按钮213被点击时,图9的输入设定画面230被显示出来。程序生成按钮211被 点击时,图8的程序画面220被显示出来。

参考技术1的动作检验装置100具有如下优点。

m1.仅基于GUI(Graphical User Interface:图形用户接口)选择函数,就能选择想要 包含在程序中的逻辑。几乎不需要花费用于编制程序的功夫。

m2.被包含在程序中的函数是已被登录在函数库中的函数,所以很难因编制者不同而 出现程序质量的偏差。例外处理等必要的逻辑也被预先编入了各函数中。

图8是程序画面220的画面图。

在函数设定画面210中,若程序生成按钮211被鼠标点击,则程序生成部132生成程 序,程序画面显示部124使其源代码显示在程序画面220中的程序显示区域222内。程序 被保持在程序保持部144中。

图9是输入设定画面230的画面图。

在函数设定画面210中,若输入数据文件生成按钮213被鼠标点击,则输入设定画面 显示部122使输入设定画面230显示出来。在函数设定画面210中,变量p和q被定义了。 编号栏232表示输入顺序,变量栏234表示对变量p的输入数据,变量栏236表示对变量 q的输入数据。在输入设定画面230中,设定要赋值给该变量p和q的输入数据。各输入 数据被作为输入数据文件保持在输入数据文件保持部146中。

例如若给与程序330图9所示的格式的输入数据文件,则如

1.将字符串“测试”输入到编辑框302中检索词典,并判定表示执行结果的画面中是否 包含有字符串“试验”的测试

2.将字符串“test”输入到编辑框302中检索词典,并判定表示执行结果的画面中是否 包含有字符串“试验”的测试

3.将字符串“测试事例”输入到编辑框302中检索词典,并判定表示执行结果的画面中 是否包含有字符串“试验”的测试

这样,连续执行基于不同的输入数据的多个词典测试。

图10是事例设定画面240的画面图。

在函数设定画面210中,若测试事例设定按钮215被鼠标点击,则事例设定画面显示 部126使事例设定画面240显示出来。编号栏244表示执行顺序,执行集栏245表示执行 集的概要,程序栏246表示成为执行对象的程序,输入数据文件栏247表示成为输入数据 的提取对象的输入数据文件。

这里,以网络证券的网站为动作测试对象进行说明。

在该图中,1.登入(login)、2.查看新闻、3.卖出股票、4.卖出债券、5.住所变 更、6.退出(logout)这六个执行集被登录了。首先,QTP基于程序“login.vbs”生成“login” 项目。这里所谓“项目”,是包含QTP的执行格式文件群的目录。QTP以“login”项目为输 入来执行login.vbs和login.xls中预定义的处理。若用户鼠标点击执行按钮248,则先是执 行集“登入”的“login”项目被执行。第一个执行集“登入”完成后,作为执行集“查看新闻”, “ncheck”项目被执行。

这样,在执行按钮248被鼠标点击后,1.登入(login)、2.查看新闻、3.卖出股票、 4.卖出债券、5.住所变更、6.退出(logout)这六个执行集被连续执行。由此,能够将 基于“先登入,在查看新闻后指示卖出所持股票和所持债券,再在变更住所后退出”这样一 个测试剧本(scenario)的动作测试自动化。

用户能够在事例设定画面240中自由制作测试剧本。例如可以登录执行集“买入股票” 来取代执行集“卖出股票”,另外,作为执行集“卖出股票”的输入数据文件,也可以不登录 “stock1.xls”而是登录其它输入数据文件。在事例设定画面240中所登录的测试剧本被作为 事例文件记录,并被保持在事例文件保持部148中。

通过一点点地改变测试剧本的构成或输入数据文件等,易于扩展动作测试的变化。

以上说明了参考技术1的动作检验装置100。

通过动作检验装置100,能够分离程序与输入数据,即能够使处理与变量相分离。并 且,能够基于GUI界面的设定自动生成其所要使用的程序。由此,能够既确保包含在程 序中的逻辑的多样性,又能简单地生成质量稳定的程序。另外,由于仅改变输入数据文件 的内容就能变更动作测试的内容,所以易于扩展动作测试的变化。

进而,通过将执行集登录在事例文件中制作测试剧本,能够组合既有程序地实现各种 各样状况下的动作测试。另外,由于不仅备有WebEditSet函数这样的用于操作测试对象 机器的函数,还备有WebScreenCapture函数这样的用于辅助动作测试的函数,所以易于进 一步提高动作测试的效率和可靠性。

(参考技术2)

在参考技术2中,提出一种对上述参考技术1改良后的动作检验装置100。

首先,比较参考技术1中的动作检验装置100和参考技术2的动作检验装置100来说 明参考技术2的动作检验装置100的概要。

图11表示参考技术1的动作检验装置100和参考技术2的动作检验装置100各自中 的构成的概要。如图11的(a)所示,参考技术1的动作检验装置100具有作为动作测试 的执行引擎的QTP模块102和用于使利用了QTP模块102的网页服务器400的动作测试 高效化的包装器(Wrapper)模块104。该包装器模块104包含图4所示的各功能块。

在图11的(a)中,用户通过QTP模块102操作作为动作确认的对象装置的网页服务 器400(S100)。包装器模块104从QTP模块102取得记录有其操作内容的日志,将函数 设定画面210提供给用户(S102)。用户在动作测试执行时,使得在包装器模块104中生 成QTP模块可读的动作测试用程序,并使QTP模块102执行该程序(S104)。

与此不同,图11的(b)所示的参考技术2的动作检验装置100具有统合了动作测试 的执行引擎的功能和包装器模块104的功能的统合检验模块106。用户通过统合检验模块 106操作网页服务器400时(S200),统合检验模块106逐次检测出其操作内容,设定函 数设定画面210的数据,并将函数设定画面210提供给用户(S202)。用户在执行动作测 试的时候,使得在统合检验模块106中生成并执行动作测试用程序(S204)。

图12表示参考技术1的动作检验装置100和参考技术2的动作检验装置100各自中 的动作的概要。图12的(a)表示出参考技术1的动作检验装置100中的动作的概要。用 户执行对网页服务器400的数据输入操作(S110),QTP模块102输出记录了其操作内容 的日志(S112)。用户将该日志的数据复制到QTP模块102的预定的输入区域(S114)。 包装器模块104基于被设定在预定的输入区域中的日志的数据,设定函数设定画面并使之 显示(S116),用户通过该函数设定画面设定应追加、变更的函数输入数据(S118)。

包装器模块104基于函数设定画面的数据生成用于动作测试的QTP用程序(S120)。 用户将QTP用程序复制到QTP模块102的预定的输入区域(S122)。用户在事例设定画 面中设定以QTP用程序和输入数据文件为集(set)而指定的动作测试的剧本(S124)。包 装器模块104基于该剧本,将QTP用程序和输入数据文件的集交给QTP模块102,按每 个集来使动作测试执行(S126)。

图12的(b)表示出参考技术2的动作检验装置100中的动作的概要。用户执行对网 页服务器400的数据输入操作(S210)。统合检验模块106逐次检测出其数据输入操作, 将与数据输入操作对应的函数记录到操作内容文件中,并在函数设定画面中显示该操作内 容文件的记录数据(S212)。用户通过该函数设定画面将应追加、变更的函数和输入数据 设定在操作内容文件中(S214)。然后,用户在事例设定画面中设定以操作内容文件和输 入数据文件为集而指定的动作测试的剧本(S216)。统合检验模块106基于该剧本生成集 约了剧本内的一个以上集的动作测试用程序并执行(S218)。

这样,在参考技术1的动作检验装置100中,QTP模块102和包装器模块104是分离 的。因此,为使两模块联系起来,需要用户自己来执行中介作业。另外,包装器模块104 需要针对剧本内的每个集来调用QTP模块102,需要按每个集来使测试用程序执行。

与此不同,在参考技术2的动作检验装置100中,动作测试的执行引擎和实现其高效 利用的包装器并不相分离,而是被无缝地统合在一起。因此,与参考技术1的动作检验装 置100相比,原本为使相分离的模块联系起来而所需的用户作业变得不再需要,用于动作 测试的用户的作业量降低了。另外,由于是生成将剧本内的多个集集约起来的动作测试用 程序,并通过该程序的执行而执行一连串剧本,所以能实现迅速的动作测试。

图13是表示参考技术2的动作检验装置100的功能构成的框图。该图的功能块被包 含在图11的(b)所示的统合检验模块106中。参考技术2的功能块中与参考技术1的功 能块对应的功能块被标注了相同的标号。关于赋予了与参考技术1的功能块相同标号的功 能块,仅在其功能不同于参考技术1中已述的内容时进行说明,对于同样的功能省略其说 明。

数据保持部140具有操作内容文件保持部143、程序保持部144、输入数据文件保持 部146、事例文件保持部148、函数保持部150。操作内容文件保持部143用于存储记录 有应设定在动作测试用程序中的函数的操作内容文件。程序保持部144存储按操作内容文 件而生成的动作测试用程序。

IF部110的输入部112具有操作检测部115和用户设定受理部117。操作检测部115 逐次检测出用户对网页服务器400的数据输入操作。用户设定受理部117检测用户对函数 设定画面210、输入设定画面230、事例设定画面240的设定信息。

IF部110的输出部118具有函数设定画面显示部120、输入设定画面显示部122、事 例设定画面显示部126。函数设定画面显示部120使函数设定画面210显示在预定的显示 装置中,该函数设定画面210用于显示被记录在操作内容文件保持部143中的操作内容文 件的内容。

数据处理部130具有程序生成部132、程序执行部134、测试事例登录部136、操作记 录部137、输入数据记录部138。操作记录部137参照函数保持部150来确定与在操作检 测部115中被检测出的数据输入操作对应的函数,将该函数记录在操作内容文件中。另外, 操作记录部137将用户对函数设定画面210的设定信息记录在操作内容文件中。输入数据 记录部138将用户通过输入设定画面230输入的输入数据记录在输入数据文件中。程序生 成部132根据被记录在操作内容文件中的函数而生成动作测试用程序。程序执行部134 作为动作测试的执行引擎而执行动作测试用程序,并将其结果记录到结果保持部152中。

图14是参考技术2中至检测出用户的数据输入操作并执行动作测试为止的示意图。 首先,用户操作客户端终端的网页浏览器访问网页服务器400,执行对网页服务器400的 各种操作,典型的是执行对网页服务器400所提供的网页的数据输入操作。操作检测部115 逐次检测用户的数据输入操作,操作记录部137读取函数保持部150的函数库,将与该数 据输入操作对应的函数逐次记录到操作内容文件中(S220)。

接下来,函数设定画面显示部120读取操作内容文件保持部143的操作内容文件,使 一览显示与用户的操作对应的函数的函数设定画面显示出来。在函数设定画面中,用户能 够根据需要追加、变更、删除函数,并且能够设定应静态地设定在动作测试用程序中的输 入数据。这样,应包含在动作测试用程序中的函数就被确定了。关于函数设定画面,将结 合图15和图16在后面叙述。

接下来,输入设定画面显示部122使输入设定画面230显示出来。用户通过输入设定 画面230设定应在动作测试执行时动态地提供给动作测试用程序的输入数据。用户所设定 的输入数据被记录在输入数据文件中(S222)。关于输入设定画面230,将结合图17在后 面叙述。

接下来,事例设定画面显示部126使事例设定画面240显示出来。用户基于多种操作 内容文件以及多种输入数据文件,将操作内容文件和输入数据文件的组合登录为执行集。 测试事例登录部136将一个以上的执行集记录在事例文件中(S224)。例如,在测试事例 1中,若要在基于输入数据文件F12使操作内容文件F01的设定内容执行后,再基于输入 数据文件F16使操作内容文件F02的设定内容执行,则以

测试事例1:

执行集1:操作内容文件F01+输入数据文件F12

执行集2:操作内容文件F02+输入数据文件F16

的形式登录到事例文件中。关于事例设定画面240,将结合图18在后面叙述。

接下来,程序生成部132基于事例文件和操作内容文件生成动作测试用程序(S226)。 具体来说,可以将被依次记录在执行集所设定的操作内容文件中的函数,依次设定为动作 测试用程序的程序代码。另外,在一个测试事例中设定有多个执行集时,程序生成部132 将被记录在各执行集的操作内容文件中的函数集约设定成一个动作测试用程序。

另外,在针对操作内容文件的函数设定有输入数据本身的情况下,程序生成部132将 该输入数据静态地设定到动作测试用程序中。例如,在生成动作测试用程序时,预先设定 输入数据作为该程序代码中的函数的自变量。另外,在针对操作内容文件的函数指定有输 入数据文件的情况下,进行设定使得在程序执行时读入该输入数据文件的数据。

最后,程序执行部134执行动作测试用程序,再现用户对网页服务器400执行的一连 串操作(S228)。对于需要输入数据文件的数据的函数,将动作测试用程序执行时所读入 的输入数据文件的数据作为自变量传递给它。即,基于从输入数据文件动态地取得的输入 数据来执行函数。

图15是函数设定画面210的画面图。该图表示了显示将在后面的图18中叙述的“检 索记入.xls”的函数设定画面210。数据文件列名(column name)栏250是用于指定输入数 据文件的列名的区域,该输入数据文件记录有要设定给变量的输入数据。用户可以在输入 值栏217中记述输入数据本身,也可以不这样,而是在数据文件列名栏250中指定输入数 据文件的列名。当数据文件列名栏250内有输入数据文件的列名被指定时,在动作测试用 程序执行时,被设定在该输入数据文件的列中的一个以上的输入数据会被读取并传递给函 数。

图16是参考技术2中的函数设定画面210的画面图。在该图的“检索部署名”变量的输 入值栏217中,输入数据的候选被用下拉列表252一览显示。下拉列表252中所显示的输 入数据候选,是在用户对网页进行数据输入时被显示在该网页的下拉列表中的输入数据候 选。用户可以从下拉列表252中选择输入数据,能减轻用户在设定输入数据过程中的负担。

为设定下拉列表252,操作检测部115取得在用户对网页进行数据输入操作时显示在 该网页的下拉列表中的输入数据的候选。例如,基于从网页服务器400取得的网页的数据、 例如HTML数据,取得下拉列表中的输入数据候选。操作记录部137将该输入数据候选 记录在操作内容文件的输入值栏217中。函数设定画面显示部120在输入值栏217有输入 时,使被记录在操作内容文件中的输入数据候选以下拉列表的形式一览显示出来。

图17是参考技术2中的输入设定画面230的画面图。图17的(a)表示了输入设定 画面230,该输入设定画面230显示在图15和图16的函数设定画面210中被指定了列名 的输入数据文件“检索记入数据.xls”。在图15和图16中,图17的(a)的“姓名汉字”列和 “姓名读音”列被指定了。图17的(b)表示了显示另一输入数据文件“登入数据2.xls”的输 入设定画面230。关于该图的输入数据文件,将结合图18在后面叙述。

图18是参考技术2中的事例设定画面240的画面图。执行编号栏253中被设定各执 行集的基本的执行顺序,测试事例ID栏254中被设定测试事例的识别信息。组(group) ID栏256中被设定表示执行集的重复处理的组的识别信息,行编号栏258中被设定动作 测试中的输入数据文件的参照范围。操作内容文件栏260被设定各执行集中的操作内容文 件,输入数据文件栏262被设定各执行集的输入数据文件。事例设定画面240中的设定内 容被作为事例文件存储在事例文件保持部148中。

在事例设定画面240中测试执行按钮264被按下时,程序生成部132按照事例文件和 操作内容文件生成动作测试用程序。具体来说,基于在事例文件中被设定相同测试事例ID 的一个以上的操作内容文件,生成各操作内容文件所记录的函数被设定为程序代码后的一 个动作测试用程序。例如,程序生成部132按照记录有图18的事例设定画面240的内容 的事例文件,生成用于执行登录事例的一个动作测试用程序和用于执行检索事例的一个动 作测试用程序。所谓“一个动作测试用程序”,意思是被作为一个执行单位来执行的程序, 换言之是在一次执行机会中被执行的程序,与其物理上的程序数量无关。

程序执行部134在执行各操作内容文件内所记录的一个函数时,将与该操作内容文件 相对应的输入数据文件的数据中、在操作内容文件中与该函数相对应的列的数据传递给该 函数。

另外,程序执行部134将在同一测试事例中被赋予相同组ID的多个执行集作为应执 行相同重复处理的相同组来处理。具体来说,重复进行被赋予相同组ID的多个执行集的 执行,在每次重复执行时,向被记录在各执行集的操作内容文件中的函数传递被记录在输 入数据文件中的预定数量的记录(record)。在参考技术2中,假定每次重复时将被记录在 输入数据文件中的一个记录(record)传递给函数。另外,也可以在程序生成部132中生 成已将用于执行上述处理的重复命令设定在程序代码中的动作测试用程序。

另外,针对被指定了行编号的执行集,程序执行部134将在输入数据文件中以该行编 号所确定的输入数据传递给该操作内容文件中所记录的函数。因此,在被指定了基于组ID 的重复处理,并进一步被指定了行编号的情况下,就重复执行行编号所指定的次数。例如, 在图18的登录事例中,没有设定跨执行集的组,在各执行集中被执行一个输入数据量的 处理。与此不同,在图18的检索事例中,各执行集中的一个输入数据量的处理被重复执 行三次。

具体来说,在第一次的重复中,登入数据2.xls的第35行的数据“t_yamada”被传递给 登入2.xls中所记录的函数。并且,检索记入数据.xls的第1行姓名汉字的数据“山田太郎” 被传递给检索记入.xls中所记录的函数、具体来说是图15的No1的函数。此外,检索记 入数据.xls的第1行姓名读音的数据“ャマダタロゥ”被传递给图15的No2的函数。

在第二次的重复中,登入数据2.xls的第36行的数据“h_yamada”被传递给登入2.xls 中所记录的函数。并且,检索记入数据.xls的第2行姓名汉字的数据“山田花子”被传递给 检索记入.xls中所记录的图15的No1的函数。此外,检索记入数据.xls的第2行姓名读音 的数据“ャマダハナコ”被传递给图15的No2的函数。

在第三次的重复中也是一样,递增后的行编号中的输入数据被传递给各函数。

在参考技术2的动作检验装置100中,也能发挥在参考技术1中说明过的效果。具体 来说,由于实现了处理与变量的分离以及基于GUI的设定,所以能够既确保包含在动作 测试用程序中的逻辑的多样性,又能简单地生成质量稳定的程序。此外,通过输入数据文 件的设定,容易扩展动作测试的变化。此外,通过事例文件的设定,能实现各种各样的剧 本下的动作测试。

在参考技术2的动作检验装置100中,执行动作测试用程序的执行引擎功能和实现执 行引擎的高效利用的包装器功能无缝地、不需要用户中介地联系在一起。由此,能够减轻 用于执行动作测试的用户的负担。此外,与参考技术1的动作检验装置100时不同,用户 无需熟悉QTP的项目等用于程序执行的环境。即,只要设定用户容易理解操作的形式的 操作内容文件和输入数据文件即可。由此,用户能够容易地实施动作测试。

在参考技术2的动作检验装置100中,是生成一个集约了同一测试事例的多个执行集 的动作测试用程序,并执行该一个动作测试用程序的。与参考技术1的动作检验装置100 中的按执行集、即按照基于执行集生成的每个QTP项目进行执行的情况相比,能够降低 在执行一个测试事例中的一连串动作测试时的系统开销(overhead),能实现迅速的动作测 试。

在参考技术2的动作检验装置100中,还能够设定跨多个执行集重复的组。由此,能 够灵活分割执行集,能够灵活设定动作测试的剧本。此外,还能够设定输入数据文件的参 照范围。由此,即使输入数据文件相同,也能够根据剧本灵活地变更参照范围,能够容易 地实现各种各样变化的动作测试。

在上述的参考技术2中,作为对函数设定画面210中的值设定进行辅助的例子,表示 出了下拉列表252。在变形例中,网页中的单选按钮、复选框、列表框等以可选方式显示 的输入数据候选也可以被以下拉列表252或其它形式可选地显示在函数设定画面210中。 即,在对动作确认对象机器进行数据输入操作时以各种各样的可选形式显示给用户的输入 数据候选,也可以在函数设定画面210中的值设定时被可选地显示出来。

在上述的参考技术1中,QTP受理用户对网页服务器400的操作,动作检验装置100 以生成了日志为条件生成动作测试用程序。另外,在上述参考技术2中,动作检验装置 100检测用户对网页服务器400的操作,来生成动作测试用程序。作为变形例,在动作检 验装置100中也可以在从网页服务器400取得了HTML文件的时点生成动作测试用程序。 在该情况下,动作检验装置100检索被包含在HTML文件中的表单(form)标签,确定 HTML文件中包含有什么样的输入接口。然后,只要选择用于将数据输入到各输入接口的 函数并将这些函数按各种顺序排列,即使没有用户明示的网页操作,也能生成测试用的程 序。

(参考技术3)

首先,说明参考技术3的概要。

目前公开有非常多的网页浏览器,用户的PC中也有多种网页浏览器被使用。因此, 作为动作检验装置,希望能够支持针对多种网页浏览器的网页的动作测试。此时,动作检 验装置需要根据网页浏览器的规格操作网页浏览器,其方法大致可分为以下两种。以下也 将成为动作测试对象的网页称为“测试对象页”。

方式1.来自外部的操作:

通过调用网页浏览器对外公开的API、即接受对正显示在网页浏览器中的测试对象页 的输入操作的接口(以下也称“操作IF”),来从外部操作网页浏览器。本参考技术3的操 作IF具体来说是用于对测试对象页输入数据、执行测试对象页的表单(form)、以及对网 页服务器的GET请求(Request)和POST请求(Request)的函数。

方式2.来自内部的操作:

向测试对象页的程序代码(即HTML文件)追记接受对测试对象页的输入操作,并使 网页浏览器执行该输入操作的脚本文件(以下也称“控制代码”)。然后,通过调用该控制 代码来从内部操作网页浏览器。换言之,通过被预先编入网页浏览器所表示的网页中的脚 本文件来操作该网页浏览器。

本参考技术3的控制代码是记述了包含接受外部对测试对象页的输入操作的接口功能 的函数的程序代码。并且还是记述了包含通过操作测试对象页的DOM树来更新测试对象 页的显示内容的功能、发送对网页服务器的GET请求和POST请求的功能的函数的程序 代码。控制代码也可以用预定的脚本语言(例如JAVA脚本(“JAVA”是注册商标))来记 述。

图19表示对网页浏览器的两种操作方式的特征。该图是来自外部的操作方式与来自 内部的操作方式的比较图。在被认为最重要的动作测试本身的可靠性方面,由于来自内部 的操作方式是改写测试对象页的操作,所以可以说来自外部的操作方式更佳。而在适合性 和通用性方面,由于来自外部的操作方式是依赖于网页浏览器中的操作IF的操作,所以 可以说来自内部的操作方式更佳。

因此,在本参考技术3中,提出一种如果动作测试所使用的网页浏览器的操作IF是公 开的,则从外部操作网页浏览器,而如果操作IF是非公开的,则从内部操作网页浏览器 的动作检验装置。由此,能够在尽可能地确保动作测试的可靠性的同时,支持基于各种各 样的网页浏览器的动作测试。

图20针对对网页浏览器的两种操作方式,示意性地示出了功能间的调用关系。网页 服务器400是提供测试对象页的信息处理装置。以浏览器402为总称的浏览器A402a、浏 览器B402b、浏览器C402c、浏览器D402d是作为HTTP用户代理而发挥功能的网页浏览 器,执行测试对象页的显示处理、操作处理等。另外,假定该图的浏览器A402a和浏览器 B402b将其操作IF对外公开,而浏览器C402c和浏览器D402d不公开其操作IF。

以个别浏览器用引擎404为总称的浏览器A用引擎404a和浏览器B用引擎404b分别 是调用浏览器A402a和浏览器B402b各自的操作IF的程序代码。通用IF406是用于调用 多种浏览器402各自的操作IF的接口,是具有不依赖于多种浏览器402各自不同的操作 IF的通用格式的接口的程序代码。以个别浏览器用引擎驱动器408为总称的浏览器A用 引擎驱动器408a、浏览器B用引擎驱动器408b通过将不依赖于浏览器402的种类的通用 IF406格式的数据变换成按各浏览器402而不同的操作IF格式的数据,来桥接动作测试用 程序和个别浏览器用引擎404。

代理(proxy)服务器410作为浏览器402的代理,发挥从网页服务器取得测试对象页 的反向代理的功能。代理服务器410在向测试对象页追加控制代码后,将该测试对象页提 供给浏览器C402c和浏览器D402d。内部操作引擎412介由代理服务器410调用被附加在 测试对象页中的控制代码。内部操作引擎驱动器414通过将通用IF406格式的数据变换成 用于调用控制代码的预定格式的数据,来桥接动作测试用程序和内部操作引擎412。

下面说明图20的动作。当显示测试对象页的网页浏览器是浏览器A402a或浏览器 B402b时,动作测试用程序调用通用IF406。伴随于此,网页浏览器的操作IF被介由个别 浏览器用引擎驱动器408和个别浏览器用引擎404而调用,由此,网页浏览器被操作,对 测试对象页的输入操作被实现。

另一方面,当显示测试对象页的网页浏览器是浏览器C402c或浏览器D402d时,代理 服务器410向测试对象页追加控制代码,并使该测试对象页显示在网页浏览器中。此时, 动作测试用程序也是调用通用IF406,被附加在测试对象页中的控制代码被介由内部操作 引擎驱动器414、内部操作引擎412、代理服务器410地调用。由此,网页浏览器被不介 由网页浏览器的操作IF地操作,对测试对象页的输入操作被实现。

通过图20的结构,网页浏览器的接口的差异被个别浏览器用引擎驱动器408和内部 操作引擎驱动器414所吸收。由此,动作测试用程序能够不依赖于网页的动作测试中所使 用的网页浏览器(以下也称“测试执行浏览器”)的种类,总是通过调用通用IF406来操作 测试执行浏览器。换言之,通过同一个动作测试用程序就能使基于多种网页浏览器的动作 测试自动执行。

图21是表示参考技术3的动作检验装置的功能构成的框图。对该图的功能块中的与 参考技术1和2所示的动作检验装置100的功能块对应的功能块标注相同的标号。关于标 注了相同标号的功能块,仅在其功能不同于参考技术1和2中已述的内容时再进行说明, 对于同样的功能,由于已经说明过了,故适当省略其说明。

动作检验装置100除图13所示的功能块外还具有浏览器处理部160。浏览器处理部 160对应于图20的浏览器402,作为网页浏览器而发挥功能。当然,也可以是一个动作检 验装置100具有多种浏览器处理部160。

程序执行部134在动作测试用程序的执行时,根据测试执行浏览器的种类、换言之根 据浏览器处理部160的形态来选择来自外部的操作方式或来自内部的操作方式而操作浏 览器处理部160。图22是表示图21的程序执行部134的详细情况的框图。程序执行部134 包括测试主体选择部162、外部操作执行部164、代理处理部166、内部操作执行部168、 佐证物设定部170。

测试主体选择部162从预定的设定文件或动作测试用程序取得表示测试执行浏览器的 种类的信息、换言之取得表示浏览器处理部160中的操作IF的公开状况的信息,按照该 信息决定动作测试的执行主体。例如,可以参照将各种网页浏览器与各自的操作IF的公 开状况建立起对应关系的表,来确定测试执行浏览器中的操作IF的公开状况。

当浏览器处理部160是对外公开操作IF的时,测试主体选择部162选择在后文中叙述 的外部操作执行部164作为动作测试的执行主体。另一方面,当浏览器处理部160不对外 公开操作IF时,选择在后文中叙述的代理处理部166和内部操作执行部168作为动作测 试的执行主体。

外部操作执行部164对应于图20的个别浏览器用引擎404,在动作测试用程序的执行 时检测动作测试用程序对通用IF406的调用。然后,通过调用浏览器处理部160所公开的 操作IF,来操作浏览器处理部160,执行对测试对象页的输入操作。

代理处理部166对应于图20的代理服务器410,从网页服务器400代理取得浏览器处 理部160所要求的测试对象页,在测试对象页的HTML代码内插入控制代码。然后,将 改变后的测试对象页的HTML代码发送给浏览器处理部160使之显示。此外,代理处理 部166从后文叙述的内部操作执行部168接受控制代码的调用,调用已追加到测试对象页 中的控制代码。代理处理部166与测试对象页的通信可以采用基于XMLHttpRequest的非 同步通信。

内部操作执行部168对应于图20的内部操作引擎412,在动作测试用程序的执行时, 检测动作测试用程序对通用IF406的调用。然后,通过介由代理处理部166地调用被追加 在测试对象页中的控制代码,来操作浏览器处理部160,执行对测试对象页的输入操作。 代理处理部166和内部操作执行部168可以采用被作为测试自动化工具而公开的Selenium (http://seleniumhq.org/)的库。

佐证物设定部170根据来自外部操作执行部164或内部操作执行部168的要求,设定 证明动作测试的结果的数据(以下也称“佐证物”),将该佐证物保存到结果保持部152中。 作为佐证物,可以取得通过浏览器处理部160而显示在显示器中的测试对象页的画面快 照,也可以取得在与网页服务器400的HTTP通信中所收发的数据。此外,画面快照的取 得功能可以由动作检验装置100的操作系统(以下也称“OS”)提供,HTTP通信数据的取 得功能可以由被安装在动作检验装置100中的抓包软件提供。

下面说明以上结构的动作。

图23是表示动作检验装置100的动作的流程图。该图表示在动作检验装置100中动 作测试用程序被执行时的动作。例如,是表示图12中的S218的详细情况的图,也是表示 图14中的S228的详细情况的图。

在测试对象页的动作测试开始时,测试主体选择部162根据浏览器处理部160中的操 作IF的公开状况选择动作测试的执行引擎(S300)。浏览器处理部160要求网页服务器400 提供测试对象页(S302)。当在浏览器处理部160中操作IF是非公开的时(S304为N), 代理处理部166代理取得测试对象页,在向其HTML代码追加控制代码后,将测试对象 页发送给浏览器处理部160(S306)。如果操作IF没有被公开(S304为Y),则S306被跳 过。浏览器处理部160使测试对象页显示在预定的显示器中(S308)。佐证物设定部170 通过取得测试对象页的画面快照等来设定动作测试的佐证物,并保存到结果保持部152中 (S310)。

如果应在动作测试中执行的所有操作都已执行完(S312为Y),则结束本图的流程。 如果还有未执行的操作(S312为N),当浏览器处理部160中操作IF是公开的时(S314 为Y),外部操作执行部164通过调用该操作IF来执行动作测试用程序对测试对象页的输 入操作(S316)。如果操作IF非公开(S314为N),则内部操作执行部168通过调用被追 加在测试对象页中的控制代码来执行动作测试用程序对测试对象页的输入操作(S318)。 当基于对测试对象页的操作而被要求提供新的网页时、例如发生基于GET请求或POST 请求等的画面转移时(S320为Y),回到S304。如果没有被要求提供新的网页(S320为 N),则回到S310。

参考技术3的动作检验装置100以参考技术1和参考技术2中所记载的动作检验装置 100的结构为前提,追加了用于支持多种网页浏览器中的网页的动作测试的结构。因此, 本参考技术3的动作检验装置100的构成不仅具有参考技术1和参考技术2所记载的效果, 还具有以下效果。

在动作检验装置100中,作为网页浏览器的操作方式,配置有来自内部的操作方式, 从而能够不论网页浏览器中的操作IF公开与否,都能执行多种网页浏览器中的网页的动 作测试。另外,在动作检验装置100中,作为网页浏览器的操作方式,还配置有来自外部 的操作方式,在网页浏览器公开操作IF的情况下,通过以来自外部的操作方式进行动作 测试,容易确保动作测试的可靠性。

以上说明了参考技术3的动作检验装置100。

在参考技术3中,与代理服务器410对应的代理处理部166是被内置在动作检验装置 100中的。在变形例中,代理处理部166也可以是被包含在动作检验装置100之外的其它 信息处理装置中。

如前面所说明的,既可以是单一的动作检验装置100中安装有多种网页浏览器,也可 以是动作检验装置100具有与多种网页浏览器对应的多个浏览器处理部160。此时,程序 执行部134可以在各个网页浏览器中执行测试对象页的动作测试。即,可以针对各网页浏 览器并行执行图23所示的处理。由于能够在单一的动作检验装置100中实施多种网页浏 览器中的动作测试,所以能实现高效率且低成本的动作测试。

在参考技术3中,是按照网页浏览器的种类而选择来自内部的操作方式或来自外部的 操作方式的。在变形例中,也可以在单一网页浏览器的动作测试中组合两种方式。例如, 对于针对测试对象页的操作中的、能利用已公开的操作IF来执行的操作,适用来自外部 的操作方式,即外部操作执行部164调用操作IF。而对于不能利用公开的操作IF来执行 的操作,适用来自内部的操作方式,即内部操作执行部168调用控制代码。由于网页内所 记述的脚本代码一般是被允许广泛的操作的,所以能够通过来自内部的操作方式来补足依 赖于操作IF的规格而造成的来自外部的操作方式下的制约。

(参考技术4)

在参考技术4中提出一种与上述参考技术3相关联、支持基于各种网页浏览器的网页 动作测试的动作检验装置100。以下说明中的“Windows”、“Internet Explorer(IE)”、“Firefox (火狐)”、“Mac”、“MacOS”、“Safari”、“JAVA”等名称是各公司的商标或注册商标。

图24示意性地表示网页的动作测试中的功能间的调用关系。该图的动作检验引擎500 表示了动作检验装置100中的用于网页动作测试的核心功能。Windows环境540表示 WindowsOS中的环境,Mac环境560表示了MacOS中的环境。当然,OS被装有Windows 的动作检验装置100也可以由动作检验引擎500和Windows环境540的组合来构成。此 外,OS被装有MacOS的动作检验装置100也可以由动作检验引擎500和Mac环境560 的组合来构成。

图24的IE浏览器542公开了能从外部的应用调用的操作IF,即COM550。因此,对 于IE浏览器542中所显示的网页的操作,采用参考技术3中的来自外部的操作方式。另 一方面,FF(火狐)浏览器546和Safari浏览器562没有公开能从外部应用调用的操作IF。 因此,针对这些浏览器上所显示的网页的操作就采用参考技术3中的来自内部的操作方 式。

在图24中,表示了用于来自内部的操作方式的Selenium模块530。Selenium模块530 对应于图20的内部操作引擎412和代理服务器410,是作为测试自动化工具而被公开的 Selenium(http://seleniumhq.org/)的服务器程序。Selenium模块530对显示网页的网页浏 览器的窗口(以下也称作“浏览器窗口”)分配独自的标识符。然后,当客户指定该标识符 时,就唯一识别应作为操作对象的浏览器窗口(换言之是网页)。

共通IF406对应于图20的共通IF406。IE驱动器502对应于图20的个别浏览器用引 擎驱动器408。IE驱动器502在使用IE浏览器542的网页动作测试中作为动作测试用程 序(以下也称作“测试程序”)与IE浏览器542的桥梁来发挥功能。IE驱动器502包含IE 窗口管理器504、IE浏览器操作部506、IE对话框操作部508。

IE窗口管理器504管理针对显示网页的浏览器窗口,由用户在测试程序中分配的标识 符(以下也称作“用户分配ID”)与OS所分配的标识符(以下称作“OS分配ID”)的对应 关系。

IE浏览器操作部506针对应进行网页操作的浏览器窗口(以下也称“操作对象窗口”), 确定与在测试程序中所指定的用户分配ID对应的OS分配ID。此外,还确定与在测试程 序中所指定的操作内容对应的COM550的函数。然后,通过指定OS分配ID并调用 COM550的函数,来从外部操作IE浏览器542,使IE浏览器542执行操作对象窗口中的 网页操作。根据网页的操作不同,IE浏览器542有时直接使用WindowsOS的资源来显示 对话框。以下将该对话框也称作“OS对话框”。

IE对话框操作部508操作IE浏览器542所显示的OS对话框544。具体来说,通过在 检测到OS对话框544被显示时调用与测试程序中所指定的对话框操作对应的 Win32API552的函数,来执行针对OS对话框544的操作。作为针对OS对话框544的典 型的操作内容,可以举出字符串的输入、显示项目的选择、按钮的按下等。针对后述的 FF对话框548及Safari对话框564的操作内容也是一样。

FF驱动器510对应于图20的内部操作引擎驱动器414,在使用FF浏览器546的网页 动作测试中,作为测试程序与FF浏览器546的桥梁来发挥功能。FF驱动器510包含FF 窗口管理器512、FF浏览器操作部514、FF对话框操作部516。

FF窗口管理器512管理由Selenium模块530分配给显示网页的浏览器窗口的标识符 (以下也称作“Selenium分配ID”)与针对该窗口的用户分配ID及OS分配ID的对应关系。

FF浏览器操作部514针对操作对象窗口,确定与在测试程序中所指定的用户分配ID 对应的Selenium分配ID。此外,还确定与测试程序中所指定的操作内容对应的Selenium 模块530的函数。然后,指定Selenium分配ID,调用Selenium模块530的函数。据此, Selenium模块530基于Selenium分配ID确定操作对象窗口,调用与该操作对象窗口所显 示的网页的控制代码中的、与被调用的函数对应的控制代码。由此,在操作对象的网页中, 确定的JAVA脚本动作,从内部操作FF浏览器546,从而实现测试程序所指定的网页操作。

在测试程序指定了应不介由Selenium模块530地操作的预定操作、典型的是浏览器窗 口的关闭处理时,FF浏览器操作部514抑制Selenium模块530的调用。取而代之,同IE 对话框操作部508一样,通过调用Win32API552来执行该操作。

根据网页的操作,FF浏览器546有时使OS对话框544显示,或者使利用FF浏览器 546独自的资源的对话框(以下也称“FF对话框”)显示。典型的是,在与文件的保存等 OS协作时使OS对话框544显示,而作为基于JAVA脚本的警告对话框,则使FF对话框 548显示。

FF对话框操作部516操作OS对话框544和FF对话框548。具体来说,检测到OS对 话框544的显示时,调用与测试程序所指定的对话框操作对应的Win32API552的函数, 由此执行对该OS对话框544的操作。另外,在检测到FF对话框548的显示时,调用预 设在FF浏览器546中的作为扩展功能的FF插件554来指示对话框操作,由此执行针对 FF对话框548的操作。该详细情况将与图26相关联地在后面叙述。

Safari驱动器520对应于图20的内部操作引擎驱动器414,在使用Safari浏览器562 的网页的动作测试中,作为测试程序与Safari浏览器562的桥梁而发挥功能。Safari驱动 器520包含Safari窗口管理器522、Safari浏览器操作部524、Safari对话框操作部526。 Safari窗口管理器522管理针对网页所被显示的窗口的用户分配ID、OS分配ID及Selenium 分配ID的对应关系。在MacOS中,对浏览器窗口分配ID的是Safari浏览器562,但为 了说明的方便,将其名称统一为OS分配ID。

Safari浏览器操作部524针对操作对象的窗口,确定与测试程序所指定的用户分配ID 对应的Selenium分配ID。此外,还确定与测试程序所指定的操作内容对应的Selenium模 块530的函数。然后,指定Selenium分配ID,调用Selenium模块530的函数。由此,同 FF浏览器操作部514一样,介由Selenium模块530执行针对操作对象的网页的操作。

在测试程序指定了应不介由Selenium模块530地操作的预定操作、典型的是窗口的关 闭处理时,Safari浏览器操作部524抑制Selenium模块530的调用。取而代之地,通过调 用MacOS提供的API来执行该操作。具体来说,调用为用于残障者的应用的使用而准备 的API群、即可访问性(Accessibility)API566。该详细情况将与图27相关联地在后面叙 述。

根据网页的操作,Safari浏览器562有时使对话框(以下也称“Safari对话框”)。Safari 对话框操作部526在检测到Safari对话框564的显示时,调用与测试程序所指定的对话框 操作对应的MacOS的API,由此执行针对Safari对话框564的操作。此时也调用上述的 可访问性API566。该详细情况将与图27相关联地在后面叙述。

上述的FF窗口管理器512和Safari窗口管理器522被统称为Selenium窗口管理器532。 图25表示Selenium窗口管理器532所存储的数据例子。如该图所示,Selenium窗口管理 器532将在网页的动作测试中对各浏览器窗口分配的用户分配ID、Selenium分配ID及 OS分配ID相对应地保存。当然,IE浏览器542的操作并不介由Selenium模块530。因 此,IE窗口管理器504仅将用户分配ID与OS分配ID相对应地保存。

此外,上述的FF浏览器操作部514和Safari浏览器操作部524被统称为介由Selenium 模块530操作网页浏览器的Selenium浏览器操作部534。

图26表示针对图24的FF对话框548的操作的方式。在Selenium模块530中,FF浏 览器546起动时,JAVA脚本所配装的窗口句柄572被预先设定在FF浏览器546所读入 的FF归档(profile)570中。FF浏览器546在打开新的浏览器窗口时,将窗口句柄572读 入FF插件554的存储区域,由此,被追加装入窗口句柄572的功能。

窗口句柄572被作为FF插件554装入时,将检测FF浏览器546的窗口生成的监听对 象(listener object)介由XPConnect578和XPCOM580登录到窗口查看器(Window Watcher) 582中。窗口句柄572介由所登录的监听对象而检测到FF对话框548被生成时,与FF对 话框操作部516的套接字(socket)服务器574进行套接字通信,通知其FF对话框548 已被生成。该通知信息中包含表示FF对话框548中的显示字符串、按钮等显示对象的显 示样式信息。

FF对话框操作部516被通知FF对话框548已生成后,将与测试程序所指定的对话框 操作对应的函数、即XPCOM580的函数的识别信息通知给窗口句柄572。窗口句柄572 通过调用由FF对话框操作部516指定的XPCOM580的函数来操作FF对话框548。当然, FF对话框操作部516也可以根据FF对话框548的显示样式而适当调整对FF对话框548 的操作内容。例如,可以对测试程序所指定的按钮按下操作追加按下对象的按钮的ID后, 将该操作指示通知给窗口句柄572。

如前所述,作为JAVA脚本的警告对话框,FF浏览器546是使FF对话框548显示的。 该FF对话框548是利用FF浏览器546独自的资源而被显示的,故不能从OS侧判别对话 框的内容。例如,不能判别FF对话框548中的显示字符串、按钮等显示对象。因此,如 对OS对话框544的操作那样,不能进行介由Win32API552的操作。例如,不能进行对 FF对话框548所显示的按钮的按下操作。

因此,在参考技术4中,通过将FF浏览器546中的FF对话框548显示的监视功能作 为插件追加,能够取得FF对话框548的显示内容,并实现对FF对话框548的操作。

此外,FF浏览器操作部514由于是介由Selenium模块530操作FF浏览器546,故能 对网页的程序代码设定用于对话框操作的函数(例如与窗口句柄572一样的程序代码)。 但是,若FF对话框548是模式对话框(modal dialog,应用模式对话框或系统模式对话框), 则不能从其显示源的网页的代码来操作对话框。另一方面,被作为FF插件554而装入的 窗口句柄572能够继续进行对模式对话框的操作。基于该观点,可以说希望窗口句柄572 被设定为FF浏览器546的扩展功能。

图27表示对图24的Safari对话框564的操作的方式。该图的Apple脚本584是调用 MacOS中的作为应用间通信技术的Apple事件的脚本。系统事件586是MacOS提供的应 用,以Apple脚本584和可访问性API566为中介地实现基于Apple脚本584的可访问性 API566的调用。

图27以四阶层表示了MacOS,上位的阶层提供比下位的阶层抽象度高的API、换言 之提供高级别的API。如该图所示,可访问性API566属于最上位的阶层“用户体验”。如 已述的那样,可访问性API566是用于确保面向残障者的可用性的关于UI自动化功能的 API群。被自动化的操作内容包括打开窗口、按下按钮等各种用户接口(画面)操作。

Safari对话框操作部526确定与测试程序所指定的对话框操作对应的可访问性API566 的函数,将指定该函数的Apple脚本584发送给系统事件586。由此,介由系统事件586, 调用被作为可访问性API566而准备的对话框操作的函数。

当然,对Safari对话框564的操作可以用MacOS中的更低级别的API群来实现。例 如,Safari对话框操作部526通过调用图形与多媒体阶层的“Quartz”API,也能执行对Safari 对话框564的操作。但是,由于可访问性API566提供与用户所进行的UI操作对应的高级 别的函数,故通过利用可访问性API566,能减少Safari对话框操作部526的代码量,并 能提高其可维护性。

此外,在图27中未图示的是,对于针对网页的操作中的、应不介由Selenium模块530 地进行的预定操作,Safari浏览器操作部524同Safari对话框操作部526一样调用可访问 性API566。由此,使MacOS或Safari浏览器562执行该操作。

图28是表示参考技术4的动作检验装置100的功能构成的框图。该图的功能块中的 与参考技术1至3所示的动作检验装置100的功能块相同或对应的功能块被赋予相同标 号。关于赋予了相同标号的功能块,仅在其功能与在参考技术1至3中已述的内容不同时 进行记载,对于同样的功能,适当省略其记载。

动作检验装置100还具有窗口ID保持部154和ID取得部139。窗口ID保持部154 和ID取得部139对应于图24的IE窗口管理器504和Selenium窗口管理器532。即,窗 口ID保持部154保存对显示网页的浏览器窗口所分配的用户分配ID、Selenium分配ID、 及OS分配ID的对应关系。

ID取得部139从OS(WindowsOS或MacOS)取得针对浏览器窗口的OS分配ID。 在WindowsOS的情况下,ID取得部139取得通过调用Win32API而得到的窗口句柄 (window handle)。例如,以long型整数的方式取得函数“FindWindow”返回的HWND值, 存储到窗口ID保持部154的OS分配ID字段中。关于函数“FindWindow”返回的多种 HWND值中的未存储于窗口ID保持部154的值,也可以作为窗口ID保持部154的新的 记录来追加。

此外,在MacOS的情况下,ID取得部139取得通过Apple脚本而从Safari浏览器562 得到的long值,存储到窗口ID保持部154的OS分配ID字段中。例如,执行以下脚本

tell application”Safari”

return id of windows

end tell

来取得Safari浏览器562对各个浏览器窗口分配的long值一览。

此外,ID取得部139取得Selenium模块530(Selenium-CORE)对各浏览器窗口分 配的窗口属性值“seleniumWindowName”。然后,将该窗口属性值作为Selenium分配ID保 存到窗口ID保持部154的Selenium分配ID字段中。例如,通过调用Selenium模块530 的函数“getAttributeFromAllwindow(”seleniumwindowName”)”,来取得Selenium模块530 所管理的窗口属性值一览。

另外,ID取得部139取得后述的ID分配部174和ID分配部180对浏览器窗口分配的 用户分配ID,保存到窗口ID保持部154的用户分配ID字段中。当然,ID取得部139也 可以将用户分配ID、Selenium分配ID、OS分配ID分别按时间轴上的分配顺序(ID取得 部139中的取得顺序)依次保存到窗口ID保持部154中。由此,时间轴上先被分配的ID (例如Selenium分配ID)就与同样在时间轴上先被分配的其它ID(例如用户分配ID)相 对应了。

图29是表示图28的程序执行部134的详细情况的框图。程序执行部134具有测试环 境判定部171、外部操作执行部164、代理处理部166、内部操作执行部168、佐证物设定 部170。对于该图的功能块中的与参考技术3所示的程序执行部134的功能块相同或对应 的功能块赋予了相同标号。对于赋予了相同标号的功能块,仅在其功能与参考技术3中已 述的内容不同时进行记载,对于同样的功能,适当省略其记载。

测试环境判定部171对应于参考技术3(图21)中的测试主体选择部162,基于用于 网页的动作测试的环境、具体来说基于OS与网页浏览器的组合,决定网页的动作测试的 方式。例如,决定网页浏览器的操作方式和对话框的操作方式。

外部操作执行部164对应于图24中的IE浏览器操作部506。外部操作执行部164包 含ID分配部174和对话框操作部176。ID分配部174在测试程序执行时检测到在测试程 序中生成新的浏览器窗口的函数(指令)被指定时,将被指定为该指令的变量的ID决定 为用户分配ID。若ID未指定,则采用在外部操作执行部164和内部操作执行部168中唯 一的新的ID作为用户分配ID。

对话框操作部176对应于图24的IE对话框操作部508,定期监视IE浏览器542对对 话框的设定。例如,可以定期地调用Win32API552的上述FindWindow函数,来检测对话 框窗口被生成。对话框操作部176介由Win32API552操作在IE浏览器542中所显示的OS 对话框544。

此外,外部操作执行部164保存存储有测试程序所能指定的网页操作用的函数与被作 为网页浏览器的操作IF而规定的函数的对应关系的表,在参考技术4中是与COM550及 Win32API552所规定的函数的对应关系的表。外部操作执行部164参照该表来调用与测试 程序所指定的函数对应的COM550或Win32API552的函数。

代理处理部166对应于图24中的Selenium模块530。如在参考技术3中所述的那样, 代理处理部166代理取得操作对象的网页。然后,在该网页的程序代码中追加JAVA脚本 所配装的程序代码、即为执行对网页的各种操作而预先准备的函数群(参考技术3中的“控 制代码”)。然后,使浏览器处理部160显示控制代码追加后的网页。另外,根据来自内部 操作执行部168的操作指示而调用与该操作指示对应的控制代码的函数,由此,中介执行 网页的操作。

代理处理部166包含ID发出部178和附加组件(add-on)设定部179。ID发出部178 在使浏览器处理部160显示控制代码追加后的网页时,发出用于在代理处理部166中唯一 识别该浏览器窗口的识别信息。该识别信息由ID取得部139作为Selenium分配ID而取 得。附加组件设定部179在为使浏览器处理部160显示控制代码追加后的网页而应起动 FF浏览器546时,指定包含图26的窗口句柄572的FF归档570,起动FF浏览器546。 由此,将窗口句柄572作为FF浏览器546的扩展功能而装入。

内部操作执行部168对应于图24中的Selenium浏览器操作部534。内部操作执行部 168包含ID分配部180和对话框操作部182。ID分配部180是与外部操作执行部164的 ID分配部174同样的构成。另外,内部操作执行部168保存存储有测试程序所能指定的 网页操作用的函数与在Selenium模块530中规定的网页操作用的函数的对应关系的表。 外部操作执行部164参照该表,调用与测试程序所指定的函数对应的Selenium模块530 的函数来作为对Selenium模块530的操作指示。

对话框操作部182对应于图24的FF对话框操作部516和Safari对话框操作部526。 若测试环境为WindowsOS和FF浏览器546,则对话框操作部182定期地监视FF浏览器 546所进行的对话框的设定。例如,可以定期地调用Win32API552的上述FindWindow函 数,来检测对话框窗口被生成。对话框操作部182介由Win32API552操作在FF浏览器546 中所显示的OS对话框544。另外,对话框操作部182介由FF插件554检测由FF浏览器 546所显示的FF对话框548,并介由FF插件554来进行操作。

另外,若测试环境为MacOS和Safari浏览器562,则对话框操作部182定期地监视 Safari浏览器562所进行的对话框的设定。例如,可以定期地执行上述Apple脚本,检测 Safari浏览器562中的对话框窗口的设定。对话框操作部182介由可访问性API566操作 在Safari浏览器562中所显示的Safari对话框564。

下面说明以上结构的动作。

图30是表示动作检验装置100的动作的流程图。该图表示在动作检验装置100中执 行动作测试用程序时的动作。例如,既是表示图12中的S218的详细情况的图,也是表示 图14中的S228的详细情况的图。即,如图14所示的那样,动作检验装置100通过再现 事前用户对网页实施的一连串输入操作,来辅助网页的动作确认。图30可以说是使图23 的流程图更详细化的图。

从用户收到网页的动作测试的开始指示后,测试环境判定部171判定成为动作测试的 执行环境的OS及网页浏览器的种类。然后,根据该判定结果,选择外部操作执行部164 或内部操作执行部168作为网页的操作主体(S400)。程序执行部134、换言之被选为操 作主体的外部操作执行部164或内部操作执行部168执行后述的测试程序读入处理 (S402)。当记述在测试程序中的对网页的全部操作(动作测试的全部项目)都完成了时 (S404的Y),结束本图的流程。

作为测试程序的一例,在此假定记录有以下操作1~操作10的操作指令测试程序。

(操作1)打开浏览器窗口A(指定ID=1)

(操作2)打开浏览器窗口B(指定ID=2)

(操作3)选择浏览器窗口A(指定ID=1)

(操作4)对浏览器窗口A所显示的网页的操作

(操作5)对浏览器窗口A所显示的网页的操作

(操作6)对通过操作5而被显示的对话框的操作

(操作7)选择浏览器窗口B(指定ID=2)

(操作8)对浏览器窗口B所显示的网页的操作

(操作9)关闭浏览器窗口A(指定ID=1)

(操作10)关闭浏览器窗口B(指定ID=2)

该测试程序是在图14所示的一系列处理中所设定的动作测试用程序。此时的操作内 容文件中,作为指定操作1和操作2的函数,被指定“waitForNewWindow”,作为其变量, 被设定网页的URL和用户指定的ID。此外,作为指定操作3和操作7的函数,被指定“select  Window”,作为其变量,被设定用户指定的ID。此外,作为指定操作4、操作5及操作8 的函数,被指定WebEditSet、WebElementClick等各种操作用的函数。另外,作为指定操 作6的函数,被指定对话框操作用的预定函数。

在测试程序的执行中,测试程序所记述的操作指令被依次执行。若测试程序中尚有未 执行的操作指令(S404的N),并且在测试程序中被要求显示新的网页,即应执行上述的 操作1和操作2(S406的Y),则被选为操作主体的外部操作执行部164或内部操作执行 部168的ID分配部将该操作指令所指定的ID作为用户分配ID而分配。ID取得部139取 得该用户分配ID,存储到窗口ID保持部154中(S408)。

若网页浏览器的操作IF是被公开的(S410的Y),则外部操作执行部164通过调用该 操作IF而使网页浏览器取得操作对象的网页的数据(S412)。然后,使显示有操作对象的 网页的浏览器窗口显示在显示器上(S420)。在图24中成为S410的Y的是网页浏览器为 IE浏览器542的情况,此时的操作IF对应COM550。

若网页浏览器的操作IF是非公开的(S410的N),则内部操作执行部168对代理处理 部166指示取得操作对象的网页。代理处理部166的ID发出部178发出Selenium分配ID (S414)。代理处理部166取得操作对象的网页的数据(S416),对该网页的数据追加控制 代码(S418)。代理处理部166执行后述的网页浏览器起动处理后(S419),将追加了控制 代码的网页的数据传递给网页浏览器,使显示操作对象网页的浏览器窗口显示在显示器上 (S420)。在图24中成为S410的N的是网页浏览器为FF浏览器546或Safari浏览器562 的情况。

ID取得部139调用OS所提供的API,取得OS分配给浏览器窗口的OS分配ID,存 储到窗口ID保持部154中。此外,若网页浏览器的操作IF是非公开的,则调用Selenium 模块530所提供的API,取得Selenium模块530分配给浏览器窗口的Selenium分配ID, 存储到窗口ID保持部154中。由此,使浏览器窗口A和浏览器窗口B各自被分配的用户 分配ID、OS分配ID及Selenium分配ID建立对应(S422)。

若在测试程序中没有指定新网页的显示(S406的N),则S408~S422被跳过。若在测 试程序中指定有网页的操作,即应执行上述操作3~操作10(S424的Y),则程序执行部 134执行后述的网页操作处理(S426)。若测试程序中没有指定网页的操作(S424的N), 则S426被跳过。在对网页的操作之后,佐证物设定部170将画面快照等佐证物的数据存 储到结果保持部152中(S428),并返回S404。

优选佐证物设定部170将作为佐证物的浏览器窗口的相关画面快照等佐证物与该浏览 器窗口所被分配的用户分配ID相对应地记录。由此,能使要确认网页的动作测试结果的 用户确认与自己所指定的ID相对应的佐证物,能提高用户确认佐证物时的便利性。

图31是详细表示图30的S402的测试程序读入处理的流程图。程序执行部134读入 动作测试用程序(S430)。若该程序中被指定有表示对话框操作的预定函数(S432的Y), 则程序执行部134将该对话框操作的内容(上述的操作6)保存在预定的对话框操作保持 表中(S434)。如果没有指定对话框操作(S432的N),则S434被跳过。

图32是详细表示图30的S419的网页浏览器起动处理的流程图。代理处理部166起 动用于动作测试的网页浏览器(S440)。若动作测试用的网页浏览器是FF浏览器546(S442 的Y),则附加组件设定部179将窗口句柄572作为FF浏览器546的扩展功能而附加 (S444)。窗口句柄572将用于检测FF对话框548的监听器登录到FF浏览器546中(S446)。 若动作测试用的网页浏览器不是FF浏览器546(S442的N),则S444和S446被跳过。

图33是详细表示图30的S426的网页操作处理的流程图。在测试环境判定部171的 判定结果中,如果OS是MacOS(S450的Y),则内部操作执行部168执行后述的Mac 用操作处理(S452)。如果OS不是MacOS(S450的N),则S452被跳过。如果OS是 Windows(S454的Y)、网页浏览器是IE浏览器542(S456的Y),则外部操作执行部164 执行后述的IE用操作处理(S458)。如果网页浏览器不是IE浏览器542(S456的N),而 是FF浏览器546(S460的Y),则内部操作执行部168执行后述的FF用操作处理(S462)。 如果网页浏览器也不是FF浏览器546(S460的N),则S462被跳过,如果OS也不是 Windows(S454的N),则S456以后的步骤被跳过。

图34是详细表示图33的S452的Mac用操作处理的流程图。如果在测试程序中被指 定了窗口选择操作(上述的操作3和7)(S470的Y),则内部操作执行部168的ID分配 部180将用变量所收到的ID确定为用户分配ID(S472)。如果没有被指定窗口选择操作 (S470的N),而是被指定了应介由Safari浏览器562执行的预定操作(上述的操作4、5、 8,以下也称作“浏览器操作”)(S474的Y),则内部操作执行部168确定与用户分配ID 建立了对应关系的Selenium分配ID(S476)。然后,通过将指定有该Selenium分配ID的 操作指示通知给Selenium模块530,来使Selenium模块530调用被追加于网页的控制代 码中的与操作指示对应的函数(S478)。

如果没有被指定浏览器操作(S474的N),而是被指定了应介由MacOS执行的预定操 作(上述的操作9和10,以下也称“OS操作”)(S480的Y),则内部操作执行部168确定 与用户分配ID建立了对应的OS分配ID(S482)。然后,通过指定该OS分配ID,调用 与操作内容对应的可访问性API566的函数,来使MacOS执行对浏览器窗口的OS操作 (S484)。如果也不是OS操作(S480的N),则S482和S484被跳过。

内部操作执行部168的对话框操作部182检测到Safari对话框564的显示时(S486的 Y),从对话框操作保持表取得针对该对话框的操作内容(上述的操作6)(S488)。然后, 通过调用与该操作内容对应的可访问性API566的函数,来执行对Safari对话框564的操 作(S490)。如果未检测到Safari对话框564的显示(S486的N),则S488和S490被跳 过。

图35是详细表示图33的S458的IE用操作处理的流程图。如果在测试程序中被指定 了窗口选择操作(上述操作3和7)(S500的Y),则外部操作执行部164的ID分配部174 将用变量收到的ID确定为用户分配ID(S502)。如果没有被指定窗口选择操作(S500的 N),而是被指定了应介由IE浏览器542执行的操作(上述操作4、5、8,以下也称“浏览 器操作”)(S504的Y),则外部操作执行部164确定与用户分配ID建立了对应的OS分配 ID(S506)。然后,通过指定该OS分配ID地调用与浏览器操作的内容对应的COM550 的函数,来使IE浏览器542执行该操作(S508)。

如果没有被指定浏览器操作(S504的N),而是被指定了应介由WindowsOS执行的操 作(上述操作9和10,以下也称“OS操作”)(S510的Y),则外部操作执行部164确定与 用户分配ID建立了对应的OS分配ID(S512)。然后,通过指定该OS分配ID地调用与 操作内容对应的Win32API552的函数,来使WindowsOS执行对浏览器窗口的OS操作 (S514)。如果也不是OS操作(S510的N),则S512和S514被跳过。

外部操作执行部164的对话框操作部176检测到OS对话框544的显示时(S516的Y), 从对话框操作保持表取得针对该对话框的操作内容(上述操作6)(S518)。然后,通过调 用与该操作内容对应的Win32API552的函数,来执行对OS对话框544的操作(S520)。 如果未检测到OS对话框544的显示(S516的N),则S518和S520被跳过。

图36是详细表示图33的S462的FF用操作处理的流程图。如果在测试程序中被指定 了窗口选择操作(上述操作3和7)(S530的Y),则内部操作执行部168的ID分配部180 将用变量收到的ID确定为用户分配ID(S532)。如果没有被指定窗口选择操作(S530的 N),而是被指定了应介由FF浏览器546执行的预定操作(上述操作4、5、8,以下也称“浏 览器操作”)(S534的Y),则内部操作执行部168确定与用户分配ID建立了对应的 Selenium分配ID(S536)。然后,将指定有该Selenium分配ID的操作指示通知给Selenium 模块530,由此,使Selenium模块530调用被追加于网页的控制代码中的与操作指示对应 的函数(S538)。

如果没被指定浏览器操作(S534的N),而是被指定了应介由WindowsOS执行的预定 操作(上述操作9和10,以下也称“OS操作”)(S540的Y),则内部操作执行部168确定 与用户分配ID建立了对应的OS分配ID(S542)。然后,通过指定该OS分配ID地调用 与操作内容对应的Win32API552的函数,来使WindowsOS执行对浏览器窗口的OS操作 (S544)。如果也不是OS操作(S540的N),则S542和S544被跳过。

在本段落中说明通过上述操作5而显示的对话框是FF对话框548的情况。内部操作 执行部168的对话框操作部182通过来自窗口句柄572的通知而检测到FF对话框548的 显示时(S546的Y),从对话框操作保持表取得对该对话框的操作内容(上述操作6)(S548)。 然后,通过将该操作内容通知给窗口句柄572,来使窗口句柄572调用与该操作内容对应 的FF浏览器546的函数(S550)。由此,执行针对FF对话框548的、遵照测试程序的操 作。如果未检测到FF对话框548的显示(S546的N),则S548和S550被跳过。

在本段落中说明通过上述操作5而显示的对话框是OS对话框544的情况。内部操作 执行部168的对话框操作部182检测到OS对话框544被显示时(S552的Y),从对话框 操作保持表取得针对该对话框的操作内容(上述操作6)(S554)。然后,通过调用与该操 作内容对应的Win32API552的函数,来执行对OS对话框544的操作(S556)。如果未检 测到OS对话框544的显示(S552的N),则S554和S556被跳过。

根据参考技术4的动作检验装置100,如在参考技术3中所述的那样,通过使用 Selenium模块530,不论操作IF是否公开,都能进行各种各样的网页浏览器上的网页的动 作确认。另外,在测试程序、以及成为测试程序的生成源的操作内容文件和函数设定画面 中,用户能将任意的ID赋予浏览器窗口。即,用户能根据测试的情况而适当设定浏览器 窗口的ID,并且无需意识到Selenium模块530识别浏览器窗口所需要的Selenium分配ID, 能提高用户的便利性。

另外,通过动作检验装置100,还能支持应不介由Selenium模块530地进行的对浏览 器窗口的操作。在该情况下,用户也能根据测试的情况而任意设定浏览器窗口的ID,并 且无需意识到OS或网页浏览器分配给该浏览器窗口的ID,能提高用户的便利性。

此外,通过动作检验装置100,将对话框检测功能作为网页浏览器(FF浏览器546) 的扩展功能来附加。由此,网页浏览器为使用独自的资源显示对话框,即使在OS的功能 中无法取得对话框的内容,也能介由所附加的对话框检测功能而取得对话框的内容,并操 作该对话框。另外,在网页浏览器能生成使用了独自的资源的第1对话框和使用了OS的 本机(native)资源的第2对话框这两者的情况下,通过适当切换对话框操作的方式,也 能进行对任一对话框的操作。即,对于第1对话框,介由所附加的对话框检测功能来操作, 对于第2对话框,介由OS的本机功能来操作,由此,能支持并再现对网页的一系列操作。

此外,通过动作检验装置100,在针对浏览器窗口的多数操作中利用Selenium模块530, 而在例外性的操作中直接调用OS的API,或者利用对话框操作用的模块。这样,通过适 当组合参考技术4中所说明的技术,还能支持在参考技术4中未言及的各种各样的测试环 境(即OS与网页浏览器的组合),能辅助网页的动作测试。

(第1实施方式)

针对本发明第1实施方式(以下也称“第1实施方式”)的动作检验装置100,先说明 其概要。图37表示浏览器窗口中的网页内容的显示例子。该图表示了网页服务器所提供 的网页(典型的是测试对象页)在显示器的画面630上被显示于浏览器窗口632中的状况。 在第1实施方式中,浏览器窗口中所起动的网页浏览器是Safari浏览器562。

浏览器窗口632包括客户区域634和头部区域636。头部区域636是主要显示关于Safari 浏览器562的信息的区域,显示用于操作Safari浏览器562的各种菜单、图标。此外,还 显示网页的内容本身以外的URL及标题等网页的元信息(meta-information)。

另一方面,客户区域634是显示网页的内容本身的区域。客户区域634包含各自显示 不同网页的多个框架(frame)。在第1实施方式中,假定包含框架a638、框架b640及框 架c642。另外,假定在浏览器窗口632中,头部区域636被配置在客户区域634的上部。

框架a638由于其包含非显示部分在内的整体纵向长度超过可视范围的纵向长度,故 配置有纵向滚动条646。此外,框架a638包含元素644。第1实施方式中的“元素”是被配 置在框架内、可被设定滚动条的GUI元件,例如包含文本框或列表框。该图的元素644 由于其包含非显示部分在内的整体纵向长度超过可视范围的纵向长度,故被配置有纵向滚 动条645。框架b640由于其包含非显示部分在内的整体横向长度超过可视范围的横向长 度,故被配置横向滚动条650。此外,框架b640包含表648。

第1实施方式的动作检验装置100在对浏览器窗口632的显示图像进行抓图时,将之 按框架单位作为一个图像数据来进行保存。即,在对由多个框架构成的网页、换言之对将 多个网页进行框架分割地显示的网页(以下为方便起见也称为“首页”)进行画面抓图时, 保存各框架的抓图图像。另外,在浏览器窗口632中不能一次性显示框架整体的内容,而 需要滚动的情况下,取得分别包含框架的一部分的多个图像数据,将使它们连接起来的图 像数据作为最终的抓图图像进行保存。

图38表示图37的浏览器窗口的抓图图像。图38的(a)表示了框架a638的抓图图像。 在第1实施方式的图像抓图处理中,包含图37中所未显示出的区域的框架a638整体被作 为1张图像来保存。此外,图38的(b)表示了框架a638内的元素644的抓图图像。在 第1实施方式的图像抓图处理中,包含图37中所未显示出的区域的元素644整体被作为 1张图像来保存。图38的(c)是框架b640的抓图图像,包含图37中所未显示出的区域 的框架b640整体被作为1张图像来保存。此外,虽然图38中未图示,但还取得框架c642 的抓图图像。由于框架c642中未配置滚动条,所以取得表示图37中的显示内容的抓图图 像。

以下将应对显示图像进行抓图的浏览器窗口称为“抓图对象窗口”,将抓图对象窗口中 所包含的框架称为“抓图对象框架”,将抓图对象框架中所包含的元素称为“抓图对象元 素”。此外,将在首页中显示于各个框架内的网页称为“框架页”。

第1实施方式中的动作检验装置100的主要功能构成与在图28及图29中所示的参考 技术4中的动作检验装置100的功能构成是一样的。以下适当省略在参考技术1~4中已 说明过的结构的说明,详细说明用于网页内容的画面抓图处理的结构。

图39是表示第1实施方式中的画面抓图处理的相关功能构成的框图。如已述的那样, 动作检验装置100包括佐证物设定部170、代理处理部166、浏览器处理部160。佐证物 设定部170调用代理处理部166所提供的后述的各种函数。代理处理部166与追加于网页 的程序代码的控制代码适时通信,使与佐证物设定部170所调用的函数对应的JAVA脚本 在浏览器处理部160侧执行。即,佐证物设定部170利用代理处理部166提供的各种函数 来操作网页,并从浏览器处理部160和代理处理部166取得网页图像抓图所需要的信息。

图40表示代理处理部166提供给佐证物设定部170的函数。这些函数也可以说是图 24的Selenium模块530对外公开的函数。此外,该图的“getOffsetPositionOfWindow”以外 的函数可以是代理处理部166、即Selenium模块530所标准提供的函数。

第1实施方式的代理处理部166代理取得应显示于Safari浏览器562的首页,并对首 页追加控制代码。另外,还代理取得应显示于首页的框架中的框架页,对各框架页也追加 控制代码。此时,对显示出网页的浏览器窗口分配唯一的ID,并对该网页上所显示的各 框架也分配ID。然后,将分配给窗口的ID和分配给框架的ID建立对应地管理。

回到图39,代理处理部166包含图像位置确定部600。佐证物设定部170包括对象确 定部612、框架处理部614、元素处理部619、图像取得部625、图像合成部627。该图的 各功能块作为用于执行网页内容的画面抓图处理的功能块,也可总括地称作画面抓图处理 部629。当然,画面抓图处理部629的各功能块也可以根据代理处理部166提供给佐证物 设定部170的函数的功能而配置于代理处理部166,或者配置于佐证物设定部170。

代理处理部166:

图像位置确定部600实现图40的函数“getOffsetPositionOfWindow”的功能。即,针对 用上述函数的变量所指定的框架(抓图对象框架),导出画面630上的显示位置,将表示 该显示位置的信息通知给佐证物设定部170。图像位置确定部600包括窗口显示位置取得 部602、头部区域确定部604、客户区域确定部606、框架相对位置取得部608、框架显示 位置确定部610。

窗口显示位置取得部602取得显示抓图对象框架的浏览器窗口632在画面630上的显 示位置。在第1实施方式中,取得以画面630的左上端为原点的正交坐标系中的、浏览器 窗口的左上端(图37的点659)的坐标。

具体来说,窗口显示位置取得部602与包含抓图对象框架的首页的控制代码进行通信, 在首页执行“window.ScreenX”。然后,作为返回值,取得点659的横坐标值(图37的横 坐标652)。同样,在首页执行“window.ScreenY”,作为返回值,取得点659的纵坐标值 (图37的纵坐标654)。

头部区域确定部604确定浏览器窗口632中的头部区域636的尺寸。在第1实施方式 中,头部区域636被配置在客户区域634的上部,故头部区域确定部604确定头部区域 636的纵向长度。

具体来说,头部区域确定部604与包含抓图对象框架的首页的控制代码进行通信,在 首页执行“window.outerHeight”。然后,作为返回值,取得浏览器窗口632的纵向长度(图 37的纵向宽度656)。同样,在首页执行“window.innerHeight”,作为返回值,取得客户 区域634的纵向长度(图37的纵向宽度658)。头部区域确定部604通过从浏览器窗口632 的纵向长度减掉客户区域634的纵向长度,来导出头部区域636的纵向长度。

客户区域确定部606按照画面630上的浏览器窗口632的显示位置和头部区域636的 尺寸,确定画面630上的客户区域634的显示位置。具体来说,使浏览器窗口632的左上 端(点659)的坐标的纵坐标值加上头部区域636的纵向长度,并原样使用点659的坐标 的横坐标值,来导出客户区域634的左上端(点660)的坐标。

框架相对位置取得部608取得客户区域634中的抓图对象框架的位置。在第1实施方 式中,取得以客户区域634的左上端(图37的点660)为原点的正交坐标系中的、抓图 对象框架的左上端的坐标(以下也称“客户区域内坐标”)。例如,抓图对象框架是框架b640 时,取得图37的点662的客户区域内坐标。

具体来说,框架相对位置取得部608与包含抓图对象框架的首页的控制代码进行通信, 在首页执行“框架名.frameElement.offsetLeft”。然后作为返回值,取得抓图对象框架的 客户区域内坐标的横坐标值。同样,在首页执行“框架名.frameElement.offsetTop”,作 为返回值,取得抓图对象框架的客户区域内坐标的纵坐标值。

框架显示位置确定部610按照客户区域确定部606所导出的客户区域634在画面630 上的显示位置、和客户区域634中的抓图对象框架的位置,确定画面630上的抓图对象框 架的显示位置。具体来说,通过在客户区域634的左上端坐标的纵坐标值和横坐标值上分 别加上抓图对象框架的客户区域内坐标的纵坐标值和横坐标值,来导出抓图对象框架的左 上端的坐标(画面630上的坐标)。

佐证物设定部170:

对象确定部612决定画面630上所显示的网页内容中的应进行图像抓图的对象内容。 具体来说,依次确定抓图对象窗口、抓图对象框架、抓图对象元素。

在第1实施方式中,用户在函数设定画面210中设定画面抓图函数(例如图7的 “WebScreenCapture”),作为其变量,设定应抓图的浏览器窗口的用户分配ID。对象确定 部612将与画面抓图函数的变量所指定的用户分配ID对应的浏览器窗口识别为抓图对象 窗口。

此外,对象确定部612指定与画面抓图函数的变量所指定的用户分配ID对应的 Selenium分配ID,调用函数“getAllFrame”。然后,从代理处理部166取得抓图对象窗口 所包含的框架的一览信息(以下也称“框架列表”)。该框架列表中包含Selenium模块530 对抓图对象窗口所包含的各框架所分配的各框架的ID(以下也称“框架ID”)。对象确定部 612将框架列表所包含的各框架识别为抓图对象框架。

此外,对象确定部612指定抓图对象框架各自的ID,调用函数“getScrollableElement”。 然后,从代理处理部166取得抓图对象框架所包含的可滚动元素的一览信息(以下也称“元 素列表”)。该元素列表中包括抓图对象框架所包含的可滚动的各元素的ID(以下也称“元 素ID”)。对象确定部612将元素列表所包含的各元素确定为抓图对象元素。

框架处理部614执行用于对抓图对象框架进行抓图的准备处理。框架处理部614包括 框架显示位置取得部615、框架范围取得部616、框架滚动处理部617。

框架显示位置取得部615指定抓图对象框架的框架ID,调用函数 “getOffsetPositionOfWindow”。由此,使代理处理部166的图像位置确定部600确定表示 画面630上的抓图对象框架的显示位置的坐标,从代理处理部166取得该坐标值。

框架范围取得部616指定抓图对象框架的框架ID,调用函数 “getScrollRectangleOfElement”。然后,从代理处理部166取得包括抓图对象框架的不可视 部分、即通过使之滚动才显示在画面630上的部分在内的整体尺寸,在此是取得抓图对象 框架整体的横向长度(横向宽度)和纵向长度(纵向宽度)。

当然,代理处理部166也可以在收到了函数“getScrollRectangleOfElement”的调用时, 在首页执行因浏览器处理部160的种类而不同的JAVA脚本。即,如第1实施方式那样是 Safari浏览器562的情况下,可以将“框架名.document.width”的执行结果确定为抓图对 象框架整体的横向宽度。同样,可以将“框架名.document.height”的执行结果确定为抓 图对象框架整体的纵向宽度。另一方面,在FF浏览器546的情况下,浏览器处理部160 可以将“框架名.window.innerWidth”的执行结果+“框架名.window.scrollMaxX”的执 行结果确定为抓图对象框架整体的横向宽度。同样,可以将“框架名.window.innerHeight” 的执行结果+“框架名.window.scrollMaxY”的执行结果确定为抓图对象框架整体的纵向 宽度。

此外,框架范围取得部616指定抓图对象框架的框架ID,调用函数 “getClientRectangle”。然后,从代理处理部166取得包含抓图对象框架的可视部分、即不 滚动就显示在画面630上的部分的尺寸,在此是取得抓图对象框架中的可视部分的横向宽 度和纵向宽度。

代理处理部166在收到函数“getClientRectangle”的调用时,在首页执行与该函数对应 的JAVA脚本。例如可以将“框架名.document.documentElement.clientWidth”的执行结 果确定为抓图对象框架中的可视部分的横向宽度。同样,可以将“框架 名.document.documentElement.clientHeight”的执行结果确定为抓图对象框架中的可视 部分的纵向宽度。

框架滚动处理部617将抓图对象框架整体的横向宽度用其可视部分的横向宽度来除 (余数进位),将其结果决定为横向滚动上限次数。此外,将抓图对象框架整体的纵向宽 度用其可视部分的纵向宽度来除(余数进位),将其结果决定为纵向滚动上限次数。

另外,在被进行抓图对象框架的图像取得后,框架滚动处理部617在下一次取得图像 前,使框架纵向滚动,或者使之纵向滚动和横向滚动。具体来说,为执行纵向滚动,指定 抓图对象框架的框架ID,将横向滚动量指定为0,而作为纵向滚动量,指定抓图对象框架 的可视部分的纵向宽度,来调用函数“doScrollFrameTo”。此外,为执行横向滚动,指定抓 图对象框架的框架ID,将横向滚动量指定为抓图对象框架的可视部分的横向宽度,并将 纵向滚动量指定为0,来调用函数“doScrollFrameTo”。

在第1实施方式中,所谓反N型地执行滚动。即,首先,框架滚动处理部617在每次 图像取得处理时固定横向位置地进行一次纵向滚动,直到达到其上限次数。接着,使纵向 位置回到初始位置,并执行一次横向滚动。然后,再次固定横向位置地反复进行纵向滚动, 直到其上限次数。然后,当纵向滚动次数和横向滚动次数都达到上限次数时,结束对抓图 对象框架的滚动处理。

元素处理部619执行用于对抓图对象元素进行抓图的准备处理。元素处理部619包括 元素相对位置取得部620、元素显示位置确定部621、元素范围取得部622、元素滚动处 理部623。

元素相对位置取得部620指定抓图对象元素的元素ID,调用函数 “getOffsetPositionOfElement”。然后,取得以包含抓图对象元素的框架的左上端为原点的 正交坐标系中的、抓图对象元素的左上端的坐标(以下也称“框架内坐标”)。例如针对框 架a638所包含的元素644,取得以点662为原点的元素644的左上端坐标。

代理处理部166收到函数“getOffsetPositionOfElement”的调用时,在框架页执行与该函 数对应的JAVA脚本。例如可以执行“元素名.getBoundingClientRect.left”,作为其返回 值,取得抓图对象元素的框架内坐标的横坐标值。同样,可以执行“元素 名.getBoundingClientRect.top”,作为其返回值,取得抓图对象元素的框架内坐标的纵坐 标值。

元素显示位置确定部621按照由框架显示位置取得部615取得的表示画面630上的抓 图对象框架的显示位置的坐标、和由元素相对位置取得部620取得的抓图对象元素的框架 内坐标,确定画面630上的抓图对象元素的显示位置。具体来说,通过对抓图对象框架的 左上端坐标的纵坐标值和横坐标值分别加上抓图对象元素的框架内坐标的纵坐标值和横 坐标值,来导出抓图对象元素的左上端的坐标(画面630上的坐标)。

元素范围取得部622指定抓图对象元素的元素ID,调用函数 “getScrollRectangleOfElement”。然后,从代理处理部166取得包含抓图对象框架的不可视 部分的整体尺寸,在此是取得抓图对象框架整体的横向宽度和纵向宽度。

代理处理部166在收到函数“getScrollRectangleOfElement”的调用时,在框架页执行与 该函数对应的JAVA脚本。例如可以执行“元素名.scrollWidth”,作为其返回值,取得抓 图对象元素整体的横向宽度。同样,可以执行“元素名.scrollHeight”,作为其返回值,取 得抓图对象元素的框架内坐标的纵向宽度。

此外,元素范围取得部622指定抓图对象元素的元素ID,调用函数 “getClientRectangleOfElement”。然后,从代理处理部166取得抓图对象元素的可视部分的 尺寸,在此是取得抓图对象框架中的可视部分的横向宽度和纵向宽度。

代理处理部166收到函数“getClientRectangleOfElement”的调用时,在框架页执行与该 函数对应的JAVA脚本。例如可以取得“元素名.clientWidth”的执行结果作为抓图对象元 素中的可视部分的横向宽度。同样,可以取得“元素名.clientHeight”的执行结果作为抓图 对象元素中的可视部分的纵向宽度。

元素滚动处理部623将抓图对象元素整体的横向宽度用其可视部分的横向宽度来除 (余数进位),将其结果决定为横向滚动上限次数。此外,将抓图对象元素整体的纵向宽 度用其可视部分的纵向宽度来除(余数进位),将其结果决定为纵向滚动上限次数。

在被执行抓图对象元素的图像取得后,元素滚动处理部623在下一次图像取得前,使 元素纵向滚动,或者使之纵向滚动和横向滚动。具体来说,为执行纵向滚动,指定抓图对 象元素的元素ID,将横向滚动量指定为0,作为纵向滚动量,指定抓图对象元素的可视部 分的纵向宽度,这样调用函数“doScrollElementTo”。另外,为执行横向滚动,指定抓图对 象元素的元素ID,作为横向滚动量,指定抓图对象元素的可视部分的横向宽度,并对纵 向滚动量指定为0,这样来调用函数“doScrollElementTo”。元素的滚动方式同已述的框架 的滚动方式是一样的。

图像取得部625按照画面630上的抓图对象框架的显示位置对抓图对象框架的显示图 像进行抓图。并按照画面630上的抓图对象元素的显示位置,对抓图对象元素的显示图像 进行抓图。第1实施方式的图像取得部625将浏览器窗口632的头部区域636从抓图对象 中排除出去。即,取得被排除了头部区域636的显示图像的、纯粹是抓图对象框架的显示 图像。

例如,图像取得部625可以指定画面630上的抓图对象框架的左上端的坐标值作为始 点,并指定抓图对象元素的可视部分的横向宽度和纵向宽度作为抓图范围,来调用OS的 画面抓图函数(API)。然后,可以使抓图对象元素的可视部分的图像数据保存在存储器(剪 贴板)内。

另外,图像取得部625反复进行抓图对象框架的抓图处理,直到框架滚动处理部617 所决定的纵横的滚动次数达到上限。同样,反复进行抓图对象元素的抓图处理,直到元素 滚动处理部623所决定的纵横的滚动次数达到上限。因此,对应被设定有滚动条的框架或 元素,将多个抓图图像的数据取入存储器内。

图像合成部627将针对一个抓图对象框架的多次图像取得处理所取得的多个抓图图像 的数据合成为1张图像数据。然后,针对1个抓图对象框架,将1张图像数据作为动作测 试的佐证物存储到结果保持部152中。针对元素也是一样,对于一个抓图对象框架,将1 张图像数据作为动作测试的佐证物而存储到结果保持部152中。另外,若多个抓图图像间 存在重复部分,则从一者的抓图图像中修整掉该重复部分后,合成为1张图像。

下面说明以上结构的动作。

图41是表示动作检验装置100中的图像抓图处理的动作的流程图。在动作测试执行 中,若收到了网页的图像抓图要求(S600的Y),则对象确定部612从代理处理部166取 得该要求所指定的抓图对象窗口中所包含的框架的列表(S602)。对象确定部612将框架 列表所包含的框架之一确定为抓图对象框架(S604)。框架显示位置取得部615指定抓图 对象框架,使代理处理部166执行后述的框架显示位置确定处理(S606)。框架范围取得 部616取得抓图对象框架整体的尺寸及其可视部分的尺寸(S608)。框架滚动处理部617 按照抓图对象框架整体的尺寸及其可视部分的尺寸,分别决定应对抓图对象框架执行的纵 横的滚动上限次数(S610)。

图像取得部625将抓图对象框架的可视部分的图像暂时存储到存储器中(S612)。若 未达到滚动的上限次数(S614的N),则框架滚动处理部617使抓图对象框架滚动1单位 量,由此使抓图对象框架的显示内容(即可视部分)变化后,返回S612(S616)。当达到 滚动的上限次数时(S614的Y),图像合成部627取得针对抓图对象框架而暂时保存的多 个抓图图像,设定将它们合成后的1张图像数据。然后,将合成后的图像数据作为动作测 试的佐证物而存储到结果保持部152中(S618)。当然,若抓图图像本就是1张,则就将 该图像作为佐证物存储到结果保持部152中。

对象确定部612从代理处理部166取得抓图对象框架所包含的元素的列表。若还有未 抓图的元素(即抓图对象元素)(S620的N),则元素相对位置取得部620取得抓图对象 框架内的抓图对象元素的位置(S622)。元素显示位置确定部621按照画面上的抓图对象 框架的显示位置和抓图对象框架内的抓图对象元素的位置,导出画面上的抓图对象元素的 显示位置(S624)。然后返回S608。

在元素的抓图处理中,元素范围取得部622取得抓图对象元素整体的尺寸及其可视部 分的尺寸(S608)。元素滚动处理部623按照抓图对象元素整体的尺寸及其可视部分的尺 寸,分别决定应对抓图对象元素执行的纵横的滚动上限次数(S610)。图像取得部625将 抓图对象元素的可视部分的图像暂时存储到存储器中(S612)。若未达到滚动的上限次数 (S614的N),则元素滚动处理部623使抓图对象元素滚动1单位量后,返回S612(S616)。 当达到滚动的上限次数时(S614的Y),图像合成部627取得针对抓图对象元素所暂时保 存的多个抓图图像,设定将它们合成后的1张图像数据(S618)。

当针对所有抓图对象元素的抓图处理都已完成时(S620的Y),若针对框架列表的一 部分框架的抓图处理尚未完成(S626的N),则返回S604,新决定抓图对象框架,继续进 行处理。若针对框架列表的所有框架的抓图处理都已完成(S626的Y),则结束本图的流 程。当然,若未收到网页的图像抓图要求(S600的N),则以后的处理被跳过,结束本图 的流程。

图42是详细表示图41的S606的框架显示位置确定处理的流程图。窗口显示位置取 得部602针对包含抓图对象框架的抓图对象窗口,取得其在画面上的显示位置(S630)。 头部区域确定部604通过计算抓图对象窗口整体的尺寸与客户区域634的尺寸的差,来导 出头部区域636的尺寸(S632)。客户区域确定部606按照画面上的抓图对象窗口的显示 位置和头部区域636的尺寸,导出画面上的客户区域634的显示位置(S634)。框架相对 位置取得部608取得客户区域634内的抓图对象框架的位置(S636)。框架显示位置确定 部610按照画面上的客户区域634的显示位置和客户区域634中的抓图对象框架的位置, 导出画面上的抓图对象框架的显示位置(S638)。

通过第1实施方式的动作检验装置100,仅将确认动作测试的成功与否所需要网页的 显示图像作为佐证物保存。具体来说,能将框架内所显示的网页的内容本身,即排除掉头 部区域等多余部分、换言之排除掉构成对动作测试的结果确认的干扰的部分后的抓图图像 提示给用户。由此,能对高效率的动作测试进行辅助。

(第2实施方式)

本发明的第2实施方式(以下也称“第2实施方式”)在浏览器窗口632中所起动的网 页浏览器为FF浏览器546这一点上不同于第1实施方式。

图43表示浏览器窗口中的网页内容的显示例子。对于该图的要素中的与之前说明过 的图37的要素相同或对应的要素,赋予与图37相同的标号,并在以下的说明中省略。如 图43所示,第2实施方式的浏览器窗口632不同于第1实施方式的浏览器窗口632,在 客户区域634的下部具有固定长度(例如26像素)的状态栏。此外,第2实施方式的浏 览器窗口632具有被设定为某程度宽度(例如固定长度4像素)的框线666作为与浏览器 窗口外部的对象(其它窗口或背景等)的边界。

第2实施方式中的动作检验装置100的主要功能构成同第1实施方式一样,主要动作 也同第1实施方式一样。以下针对第2实施方式中的动作检验装置100,说明其不同于第 1实施方式的点。

图像位置确定部600的头部区域确定部604还考虑状态栏664的尺寸(宽度)地确定 头部区域636的尺寸。具体来说,从浏览器窗口632的纵向宽度中减去客户区域634的纵 向宽度,并减去状态栏664的纵向长度、在此是预先确定的26像素,由此来导出头部区 域636的纵向长度。当然,固定值的26像素严谨地说也可以说是状态栏664的纵向长度 和框线666的宽度的合计值。

图像位置确定部600的客户区域确定部606还考虑框线666的尺寸(宽度)地确定画 面630中的客户区域634的显示位置。具体来说,使浏览器窗口632的左上端的坐标的纵 坐标值加上头部区域636的纵向长度,并使该坐标的横坐标值加上框线666的宽度、在此 是预先确定的4像素,由此来导出客户区域634的左上端的坐标。

通过第2实施方式的动作检验装置100,即使是使用了在浏览器窗口632中配置有状 态栏664和具有某程度宽度的框线666的网页浏览器的动作测试,也能实现与第1实施方 式一样的效果。即,能将排除了头部区域以及状态栏或框线等对动作测试的结果确认起到 干扰的部分的抓图图像提示给用户。

以上基于第1实施方式和第2实施方式说明了本发明。该实施方式只是例示,本领域 技术人员当理解可以对其各构成要素和各处理过程的组合进行各种变形,并且这样的变形 例也包含在本发明的范围内。下面表示变形例。

说明第1变形例。在上述实施方式中,是假定头部区域636被配置在客户区域634的 上部的,但浏览器窗口632的样式不限于此。例如头部区域636也可以被配置在客户区域 634的左侧。在该情况下,头部区域确定部604可以取得浏览器窗口632的横向长度和客 户区域634的横向长度,并计算它们的差,由此来确定头部区域636的横向长度。然后, 客户区域确定部606可以使浏览器窗口632的左上端的横坐标值加上头部区域636的横向 长度,并原样使用其纵坐标值,来导出客户区域634的左上端的坐标。

说明第2变形例。在上述实施方式中并未特别言及,但第1实施方式和第2实施方式 也可以相组合,在一个动作检验装置100中来实现。例如,代理处理部166可以包括对起 动Safari浏览器562的浏览器窗口的显示图像进行抓图时所被调用的第1图像位置确定部, 和在对起动FF浏览器546的浏览器窗口的显示图像进行抓图时所被调用的第2图像位置 确定部。然后,代理处理部166可以根据成为抓图对象的浏览器窗口的种类而使某一者动 作。

作为另一种结构,图像位置确定部600的头部区域确定部604和客户区域确定部606 可以根据成为抓图对象的浏览器窗口的种类而执行第1实施方式所记载的动作或第2实施 方式所记载的动作的某一者。当然,浏览器窗口的种类可以由用户在动作测试开始时的变 量、各种设定文件中指定,并从OS或浏览器处理部160动态地读入。

说明第3变形例。在上述实施方式中表示了客户区域634被分割成多个框架的例子, 但客户区域634也可以不被分割成多个框架。在该情况下,框架处理部614只要将客户区 域整体视为一个框架,与实施方式同样地进行动作即可。此外,元素处理部619只要将客 户区域整体所含的元素视为一个框架所含的元素,与实施方式同样地进行动作即可。

说明第4变形例。在上述实施方式中,作为网页浏览器,例示了Safari浏览器562和 FF浏览器546。但本发明的技术思想的适用范围不限于这几种网页浏览器。例如对于在浏 览器窗口632中未配置状态栏664,并且框线666的宽度不足预定值的网页浏览器,也能 适用第1实施方式的技术。此外,对于配置有状态栏664,并且框线666的宽度在预定值 以上的网页浏览器,也能适用第2实施方式的技术。另外,本领域技术人员能理解在配置 有状态栏664但框线666的宽度不足预定值时、以及反过来未配置状态栏664但框线666 的宽度在预定值以上时,可以适当选择第1实施方式和第2实施方式的构成来组合。

说明第5变形例。在上述实施方式中并未特别言及,但动作检验装置100可以还具有 对照图像保持部,保存用于对照与动作测试中所取得的抓图图像是否一致的对照图像。该 对照图像同实施方式的抓图图像一样,是按框架单位、元素单位设定的图像数据。

另外,动作检验装置100可以还包括对照部,判定作为佐证物的抓图图像与对照图像 是否一致。作为佐证物的抓图图像是动作测试中的抓图图像,换言之是由图像合成部627 所合成的图像,再换言之是被存储在结果保持部152中的抓图图像。对照部可以将抓图图 像与对照图像是否一致的判定结果存储到预定的存储区域(文件或DB等)中而通知给用 户。通过该变形例,能使动作正常性的判定自动化,辅助高效的动作测试。另外,由于在 上述实施方式中是排除掉头部区域后的纯粹的网页内容的内容被抓图的,故无需对照区域 的排除设定(所谓的掩模处理),能容易地判定抓图图像与对照图像是否一致。

上述参考技术、实施方式、变形例的任意组合作为本发明的实施方式也是有用的。通 过组合而产生的新的实施方式兼具所组合的参考技术、实施方式、变形例各自的效果。

本领域技术人员还能理解权利要求记载的各构成要件所应发挥的功能可以由参考技 术、实施方式及变形例中所示的各构成要素的单体或其协作来实现。

〔标号说明〕

100动作检验装置、160浏览器处理部、166代理处理部、170佐证物设定部、600图 像位置确定部、602窗口显示位置取得部、604头部区域确定部、606客户区域确定部、 608框架相对位置取得部、610框架显示位置确定部、612对象确定部、625图像取得部、 627图像合成部、630画面、632浏览器窗口、634客户区域、636头部区域、664状态栏、 666框线。

〔工业可利用性〕

本发明能适用于测试产品的动作的装置。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号