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

文档序号:6350513阅读:159来源:国知局
专利名称:图像取得装置、图像取得方法及计算机程序的制作方法
技术领域
本发明涉及取得画面上所显示的网页内容的图像的技术。
技术背景
在保证产品质量方面,产品出厂前的动作测试不可缺少。一般来说,多是通过测试工程师手动操作产品并确认该操作的结果来执行动作测试的。但是,对于操作变化 (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的动作检验装置的动作的流程图。
图M是示意性地表示网页的动作测试中的功能间调用关系的图。
图25是表示klenium窗口管理器中所存储的数据例子的图。
图沈是表示针对图M的FF对话框的操作的方式的图。
图27是表示针对图M的Mfari对话框的操作的方式的图。
图28是表示参考技术4的动作检验装置的功能构成的框图。
图四是表示图观的程序执行部的详细情况的框图。
图30是表示参考技术4的动作检验装置的动作的流程图。
图31是详细表示图30的S402的测试程序读入处理的流程图。
图32是详细表示图30的S419的网页浏览器起动处理的流程图。
图33是详细表示图30的S似6的网页操作处理的流程图。
图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) ”。
在上述过程中,以下所示的三个操作被进行。
Al.在入口站点第一画面300的编辑框302中输入字符串“测试”的操作。
A2.鼠标点击入口站点第一画面300的检索链接304中的链接“词典”的操作。4/35
A3.鼠标点击入口站点第二画面310的检索结果栏306中的链接“测试(test),, 的操作。
以下,将通过上述Al A3的操作而实现的动作过程称为“词典测试”。
图2是表示执行了词典测试时的日志320的图。
在操作被导入了 HP公司的QTP的客户端终端来访问上述入口站点,并执行了 Al A3的操作的情况下,QTP生成图2所示的日志320。操作Al A3被作为预定格式的码文记录在日志320中。
例如,操作Al被表达为
BrowserC XYZ ! ‘‘ ). PageC XYZ ! ‘‘ ). WebEditC P" ) Jet"测试〃
这样的码文。其意思是对“XYZ ! ”网站、名称为“XYZ ! ”的网页、名称为“P”的编辑框(相当于图1的(a)、图1的(b)中所示的编辑框302)输入了字符串“测试”。
同样,操作A2被显示为
BrowserC XYZ ! “ ).Page(〃 XYZ ! “ ).Link(〃 词典〃).Click
操作A3被显示为
Browser ( “ XYZ ! 〃)· Page ( “ XYZ !-所有词典-测试〃 )· Link (“测试 (test) “ )· Click
这样的码文。在参考技术1中,是基于QTP的语法进行说明的,但码文的格式并不限于此。
QTP能够一边解释日志320的码文一边再现执行码文所表达的操作。因此,一旦生成了日志320,就能任意次地重复执行同一内容的词典测试。另外,只要改写日志320的一部分,就能以不同于手动操作时的内容来执行词典测试。例如,将
BrowserC XYZ ! ‘‘ ). PageC XYZ ! ‘‘ ). WebEditC P" ) Jet"测试〃
中所包含的字符串“测试”变更成其它字符串“测-试”,改写成
BrowserC XYZ ! ‘‘ ). PageC XYZ ! ‘‘ ). WebEditC P" ) Jet〃测-试〃
而输入到QTP中,则能够自动执行仅改变了编辑框302的输入字符串的同内容的词典测试。
但是,要改写日志320地执行动作测试,需要针对日志320的语法拥有某种程度的知识。另外,在改写日志320时有可能会发生人为性的错误。
图3是表示用于执行词典测试的程序330的图。
也可以不通过日志320执行动作测试,而是通过用VB(Visual Basic)脚本等记述与日志320同等的内容来执行测试程序。图3所示的程序330是参照图2的日志320而编制成的测试程序。
例如,操作Al被表达为
WebEditSet (Browser ( ” XYZ ! “ ) · Page ( 〃 XYZ ! “ )· WebEdit (〃 p〃), DataTableC pi, dtGlobalSheet")
这样的VB函数。WfebEditSet函数的具体逻辑如该图中部所记述的那样。
在程序330不包含字符串“测试”这样的输入数据这一点上,程序330不同于日志 320。作为替代手段,WebEdiUet函数是从被表达为dtGlobaBheet的文件(下称“输入数据文件”)接受输入数据的。即,逻辑与输入数据是分离的。通过输入数据文件的改写或替换,能够基于各种各样的输入数据执行同一逻辑的词典测试。与基于手动的动作测试或基于日志320的动作测试相比,基于程序330的动作测试具有易于增加输入数据的变化这样的优点。
但是,基于程序330的动作测试中存在以下问题。
Dl.需要新花费编程的功夫。
D2.根据程序编制者不同,程序的内容会变化。例如,程序员Pl针对操作Al编制的 WebEditSet函数和程序员P2针对操作Al编制的^febEditSet函数,即使函数名相同,逻辑也未必相同。另外,程序本身也有可能混入了漏洞(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的函数库,并使与日志中所包含的各码文对应的函数一览显示(Si)。在函数设定画面显示部120中,用户能够根据需要追加、变更、删除函数。这样,应被包含在程序中的函数就被确定了。关于 Si,将与图7相结合地在后面详述。
接下来,设定应提供给该程序的输入数据(S》。设定内容以输入数据文件的形式被登录。关于S2,将结合图9在后面详述。基于在Sl中设定的函数群自动生成程序(S3)。 关于S3,将结合图8在后面详述。
接下来,基于多种程序以及多种输入数据文件,将程序与输入数据文件的组合作为“执行集”登录。也可以登录多个执行集(S4)。设定内容被以事例文件的形式登录。例如,当想要使得在基于输入数据文件F2执行程序Pl后再基于输入数据文件F6执行程序P2 的情况下,被以
执行集1 程序Pl+输入数据文件F2
执行集2 程序P2+输入数据文件F6
的形式登录到事例文件中。关于S4,将结合图10详述。
最后,按照事例文件执行程序(SQ。在上述例子的情况下,程序执行部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表示输入数据。
对于前述的表示操作Al的码文
BrowserC XYZ ! ‘‘ ). PageC XYZ ! ‘‘ ). WebEditC P" ) Jet"测试〃
,WebEditSet函数在函数库中预先与其建立有对应关系。程序生成部132读出日志320的第一个码文后,参照函数保持部150的函数库,确定WebEditSet函数。因为操作 Al中被作为操作对象的对象是“BrowseH" XYZ ! “ ). PageC XYZ !“)”页,所以对象栏 218 中被设定为“Browser(〃 XYZ ! “ ).Page(" XYZ ! “ ),,。WebEdiUet 函数是以设定在编辑框P(编辑框30 中的输入数据为自变量的函数。虽然也可以在输入值栏217中设定应设定到编辑框P中的输入数据,但这里假定在函数设定画面210中没有登录输入数据的情况来进行说明。应设定到编辑框P中的输入数据在将结合图9详述的输入设定画面 230中被设定。
由于日志320中对应于操作Al A3地包含有三个码文,所以程序生成部132确定三个函数。用户也可以在函数设定画面210中追加、删除、变更函数。图7中的第四个 TextCheck函数与第五个Wel^creenCapture函数是用户追加选择的函数。
TextCheck函数是判定正在显示的网页中是否包含被赋值为变量q的字符串的函数。WfebScreenCapture函数是对正在显示的网页进行画面抓图的函数。在对动作测试的结果进行证迹管理方面,WebScreenCapture函数是非常方便的函数。这样,函数库中不仅备有WebEditSet函数那样的与用户的操作相对应的函数,还备有TestCheck函数这样的用于辅助支持动作测试的函数。用户只要从函数库中选择所希望的函数,就能设定想要包含在动作测试中的逻辑。
测试事例设定按钮215被点击时,图10的事例设定画面240被显示出来。输入数据文件生成按钮213被点击时,图9的输入设定画面230被显示出来。程序生成按钮211 被点击时,图8的程序画面220被显示出来。
参考技术1的动作检验装置100具有如下优点。
ml.仅基于⑶I (Graphical User Interface 图形用户接口)选择函数,就能选择想要包含在程序中的逻辑。几乎不需要花费用于编制程序的功夫。
m2.被包含在程序中的函数是已被登录在函数库中的函数,所以很难因编制者不同而出现程序质量的偏差。例外处理等必要的逻辑也被预先编入了各函数中。
图8是程序画面220的画面图。
在函数设定画面210中,若程序生成按钮211被鼠标点击,则程序生成部132生成程序,程序画面显示部1 使其源代码显示在程序画面220中的程序显示区域222内。程序被保持在程序保持部144中。
图9是输入设定画面230的画面图。
在函数设定画面210中,若输入数据文件生成按钮213被鼠标点击,则输入设定画面显示部122使输入设定画面230显示出来。在函数设定画面210中,变量ρ和q被定义了。编号栏232表示输入顺序,变量栏234表示对变量ρ的输入数据,变量栏236表示对变量q的输入数据。在输入设定画面230中,设定要赋值给该变量ρ和q的输入数据。各输入数据被作为输入数据文件保持在输入数据文件保持部146中。
例如若给与程序330图9所示的格式的输入数据文件,则如
1.将字符串“测试”输入到编辑框302中检索词典,并判定表示执行结果的画面中是否包含有字符串“试验”的测试
2.将字符串“test”输入到编辑框302中检索词典,并判定表示执行结果的画面中是否包含有字符串“试验”的测试
3.将字符串“测试事例”输入到编辑框302中检索词典,并判定表示执行结果的画面中是否包含有字符串“试验”的测试
这样,连续执行基于不同的输入数据的多个词典测试。
图10是事例设定画面MO的画面图。
在函数设定画面210中,若测试事例设定按钮215被鼠标点击,则事例设定画面显示部1 使事例设定画面240显示出来。编号栏244表示执行顺序,执行集栏245表示执行集的概要,程序栏246表示成为执行对象的程序,输入数据文件栏247表示成为输入数据的提取对象的输入数据文件。
这里,以网络证券的网站为动作测试对象进行说明。
在该图中,1.登入(login)、2.查看新闻、3.卖出股票、4.卖出债券、5.住所变更、 6.退出(logout)这六个执行集被登录了。首先,QTP基于程序“login, vbs”生成“login” 项目。这里所谓“项目”,是包含QTP的执行格式文件群的目录。QTP以“login”项目为输入来执行login, vbs和login, xls中预定义的处理。若用户鼠标点击执行按钮M8,则先是执行集“登入”的“login”项目被执行。第一个执行集“登入”完成后,作为执行集“查看新闻”,“ncheck”项目被执行。
这样,在执行按钮248被鼠标点击后,1.登入(login)、2.查看新闻、3.卖出股票、 4.卖出债券、5.住所变更、6.退出(logout)这六个执行集被连续执行。由此,能够将基于 “先登入,在查看新闻后指示卖出所持股票和所持债券,再在变更住所后退出,,这样一个测试剧本(scenario)的动作测试自动化。
用户能够在事例设定画面MO中自由制作测试剧本。例如可以登录执行集“买入股票”来取代执行集“卖出股票”,另外,作为执行集“卖出股票”的输入数据文件,也可以不登录“stockl. xls”而是登录其它输入数据文件。在事例设定画面MO中所登录的测试剧本被作为事例文件记录,并被保持在事例文件保持部148中。
通过一点点地改变测试剧本的构成或输入数据文件等,易于扩展动作测试的变化。
以上说明了参考技术1的动作检验装置100。
通过动作检验装置100,能够分离程序与输入数据,即能够使处理与变量相分离。 并且,能够基于GUI界面的设定自动生成其所要使用的程序。由此,能够既确保包含在程序中的逻辑的多样性,又能简单地生成质量稳定的程序。另外,由于仅改变输入数据文件的内容就能变更动作测试的内容,所以易于扩展动作测试的变化。
进而,通过将执行集登录在事例文件中制作测试剧本,能够组合既有程序地实现各种各样状况下的动作测试。另外,由于不仅备有WebEditSet函数这样的用于操作测试对象机器的函数,还备有WebScreenCapture函数这样的用于辅助动作测试的函数,所以易于进一步提高动作测试的效率和可靠性。9/35
(参考技术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提供给用户(SIC)》。用户在动作测试执行时,使得在包装器模块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的数据输入操作(SllO),QTP模块102输出记录了其操作内容的日志(S112)。用户将该日志的数据复制到QTP模块102的预定的输入区域(S114)。包装器模块104基于被设定在预定的输入区域中的日志的数据,设定函数设定画面并使之显示(S116),用户通过该函数设定画面设定应追加、变更的函数输入数据(S118)。
包装器模块104基于函数设定画面的数据生成用于动作测试的QTP用程序 (S120)。用户将QTP用程序复制到QTP模块102的预定的输入区域(S122)。用户在事例设定画面中设定以QTP用程序和输入数据文件为集(set)而指定的动作测试的剧本(SlM)。 包装器模块104基于该剧本,将QTP用程序和输入数据文件的集交给QTP模块102,按每个集来使动作测试执行(S126)。
图12的(b)表示出参考技术2的动作检验装置100中的动作的概要。用户执行对网页服务器400的数据输入操作(S210)。统合检验模块106逐次检测出其数据输入操作, 将与数据输入操作对应的函数记录到操作内容文件中,并在函数设定画面中显示该操作内容文件的记录数据(S2U)。用户通过该函数设定画面将应追加、变更的函数和输入数据设定在操作内容文件中(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、事例设定画面MO的设定信息。
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设定应在动作测试执行时动态地提供给动作测试用程序的输入数据。用户所设定的输入数据被记录在输入数据文件中(S22》。关于输入设定画面230,将结合图17在后面叙述。
接下来,事例设定画面显示部1 使事例设定画面240显示出来。用户基于多种操作内容文件以及多种输入数据文件,将操作内容文件和输入数据文件的组合登录为执行集。测试事例登录部136将一个以上的执行集记录在事例文件中(S224)。例如,在测试事例1中,若要在基于输入数据文件F12使操作内容文件FOl的设定内容执行后,再基于输入数据文件F16使操作内容文件F02的设定内容执行,则以
测试事例1:
执行集1 操作内容文件FOl+输入数据文件F12
执行集2 操作内容文件F02+输入数据文件F16
的形式登录到事例文件中。关于事例设定画面M0,将结合图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被设定各执行集的输入数据文件。事例设定画面MO中的设定内容被作为事例文件存储在事例文件保持部148中。
在事例设定画面MO中测试执行按钮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的Nol的函数。此外, 检索记入数据.xls的第1行姓名读音的数据“ 夕·夕π々”被传递给图15的Νο2的函数。
在第二次的重复中,登入数据2. xls的第36行的数据“h_yamada”被传递给登入 2. xls中所记录的函数。并且,检索记入数据.xls的第2行姓名汉字的数据“山田花子”被传递给检索记入.xls中所记录的图15的Nol的函数。此外,检索记入数据.xls的第2行姓名读音的数据“ 夕。、f 二 ”被传递给图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用户代理而发挥功能的网页浏览器, 执行测试对象页的显示处理、操作处理等。另外,假定该图的浏览器A40h和浏览器B402b 将其操作IF对外公开,而浏览器C402c和浏览器D402d不公开其操作IF。
以个别浏览器用引擎404为总称的浏览器A用引擎40 和浏览器B用引擎404b 分别是调用浏览器A40M和浏览器B402b各自的操作IF的程序代码。通用IF406是用于调用多种浏览器402各自的操作IF的接口,是具有不依赖于多种浏览器402各自不同的操作IF的通用格式的接口的程序代码。以个别浏览器用引擎驱动器408为总称的浏览器A 用弓I擎驱动器408a、浏览器B用引擎驱动器408b通过将不依赖于浏览器402的种类的通用 IF406格式的数据变换成按各浏览器402而不同的操作IF格式的数据,来桥接动作测试用程序和个别浏览器用引擎404。
代理(proxy)服务器410作为浏览器402的代理,发挥从网页服务器取得测试对象页的反向代理的功能。代理服务器410在向测试对象页追加控制代码后,将该测试对象页提供给浏览器C402c和浏览器D402d。内部操作引擎412介由代理服务器410调用被附加在测试对象页中的控制代码。内部操作引擎驱动器414通过将通用IF406格式的数据变换成用于调用控制代码的预定格式的数据,来桥接动作测试用程序和内部操作引擎412。
下面说明图20的动作。当显示测试对象页的网页浏览器是浏览器A40h或浏览器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中的的详细情况的图。
在测试对象页的动作测试开始时,测试主体选择部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。CN 102549556 A
参考技术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可以在各个网页浏览器中执行测试对象页的动作测试。S卩,可以针对各网页浏览器并行执行图23所示的处理。由于能够在单一的动作检验装置100中实施多种网页浏览器中的动作测试,所以能实现高效率且低成本的动作测试。
在参考技术3中,是按照网页浏览器的种类而选择来自内部的操作方式或来自外部的操作方式的。在变形例中,也可以在单一网页浏览器的动作测试中组合两种方式。例如,对于针对测试对象页的操作中的、能利用已公开的操作IF来执行的操作,适用来自外部的操作方式,即外部操作执行部164调用操作IF。而对于不能利用公开的操作IF来执行的操作,适用来自内部的操作方式,即内部操作执行部168调用控制代码。由于网页内所记述的脚本代码一般是被允许广泛的操作的,所以能够通过来自内部的操作方式来补足依赖于操作IF的规格而造成的来自外部的操作方式下的制约。
(参考技术4)
在参考技术4中提出一种与上述参考技术3相关联、支持基于各种网页浏览器的网页动作测试的动作检验装置100。以下说明中的“Windows”、“hternet Explorer (IE) ”、 “Firefox (火狐)”、1肌”、1肌05”、“5£1^^”、“从¥4”等名称是各公司的商标或注册商标。
图M示意性地表示网页的动作测试中的功能间的调用关系。该图的动作检验引擎500表示了动作检验装置100中的用于网页动作测试的核心功能。Windows环境540表示WindowsOS中的环境,Mac环境560表示了 MacOS中的环境。当然,OS被装有Windows的动作检验装置100也可以由动作检验引擎500和Windows环境MO的组合来构成。此外, OS被装有MacOS的动作检验装置100也可以由动作检验引擎500和Mac环境560的组合来构成。
图M的IE浏览器M2公开了能从外部的应用调用的操作IF,即C0M550。因此, 对于IE浏览器542中所显示的网页的操作,采用参考技术3中的来自外部的操作方式。另一方面,FF (火狐)浏览器546和Safari浏览器562没有公开能从外部应用调用的操作 IF。因此,针对这些浏览器上所显示的网页的操作就采用参考技术3中的来自内部的操作方式。
在图M中,表示了用于来自内部的操作方式的klenium模块530。klenium模块530对应于图20的内部操作引擎412和代理服务器410,是作为测试自动化工具而被公开的klenium(http://seleniumhq. org/)的服务器程序。klenium模块530对显示网页的网页浏览器的窗口(以下也称作“浏览器窗口”)分配独自的标识符。然后,当客户指定该标识符时,就唯一识别应作为操作对象的浏览器窗口(换言之是网页)。
共通IF406对应于图20的共通IF406。IE驱动器502对应于图20的个别浏览器用引擎驱动器408。IE驱动器502在使用IE浏览器M2的网页动作测试中作为动作测试用程序(以下也称作“测试程序”)与IE浏览器M2的桥梁来发挥功能。IE驱动器502包含IE窗口管理器504、IE浏览器操作部506、IE对话框操作部508。
IE窗口管理器504管理针对显示网页的浏览器窗口,由用户在测试程序中分配的标识符(以下也称作“用户分配ID”)与OS所分配的标识符(以下称作“OS分配ID”)的对应关系。
IE浏览器操作部506针对应进行网页操作的浏览器窗口(以下也称“操作对象窗口”),确定与在测试程序中所指定的用户分配ID对应的OS分配ID。此外,还确定与在测试程序中所指定的操作内容对应的C0M550的函数。然后,通过指定OS分配ID并调用C0M550 的函数,来从外部操作IE浏览器M2,使IE浏览器542执行操作对象窗口中的网页操作。 根据网页的操作不同,IE浏览器542有时直接使用WindowsOS的资源来显示对话框。以下将该对话框也称作“OS对话框”。
IE对话框操作部508操作IE浏览器542所显示的OS对话框M4。具体来说, 通过在检测到OS对话框544被显示时调用与测试程序中所指定的对话框操作对应的 Win32API552的函数,来执行针对OS对话框544的操作。作为针对OS对话框544的典型的操作内容,可以举出字符串的输入、显示项目的选择、按钮的按下等。针对后述的FF对话框 548及&ifari对话框564的操作内容也是一样。
FF驱动器510对应于图20的内部操作引擎驱动器414,在使用FF浏览器M6的网页动作测试中,作为测试程序与FF浏览器M6的桥梁来发挥功能。FF驱动器510包含 FF窗口管理器512、FF浏览器操作部514、FF对话框操作部516。
FF窗口管理器512管理由klenium模块530分配给显示网页的浏览器窗口的标识符(以下也称作“Selenium分配ID”)与针对该窗口的用户分配ID及OS分配ID的对应关系。
FF浏览器操作部514针对操作对象窗口,确定与在测试程序中所指定的用户分配 ID对应的klenium分配ID。此外,还确定与测试程序中所指定的操作内容对应的klenium 模块530的函数。然后,指定klenium分配ID,调用klenium模块530的函数。据此, klenium模块530基于klenium分配ID确定操作对象窗口,调用与该操作对象窗口所显示的网页的控制代码中的、与被调用的函数对应的控制代码。由此,在操作对象的网页中, 确定的JAVA脚本动作,从内部操作FF浏览器M6,从而实现测试程序所指定的网页操作。
在测试程序指定了应不介由klenium模块530地操作的预定操作、典型的是浏览器窗口的关闭处理时,FF浏览器操作部514抑制klenium模块530的调用。取而代之,同 IE对话框操作部508 —样,通过调用Win32API552来执行该操作。
根据网页的操作,FF浏览器546有时使OS对话框544显示,或者使利用FF浏览器546独自的资源的对话框(以下也称“FF对话框”)显示。典型的是,在与文件的保存等 OS协作时使OS对话框544显示,而作为基于JAVA脚本的警告对话框,则使FF对话框548显不。
FF对话框操作部516操作OS对话框544和FF对话框M8。具体来说,检测到OS 对话框544的显示时,调用与测试程序所指定的对话框操作对应的Win32API552的函数,由此执行对该OS对话框544的操作。另外,在检测到FF对话框548的显示时,调用预设在FF 浏览器M6中的作为扩展功能的FF插件5M来指示对话框操作,由此执行针对FF对话框 548的操作。该详细情况将与图沈相关联地在后面叙述。
Safari驱动器520对应于图20的内部操作引擎驱动器414,在使用Mfari浏览器 562的网页的动作测试中,作为测试程序与Mfari浏览器562的桥梁而发挥功能。Safari 驱动器520包含Mfari窗口管理器522、Safari浏览器操作部524、Safari对话框操作部 526。Safari窗口管理器522管理针对网页所被显示的窗口的用户分配ID、OS分配ID及 klenium分配ID的对应关系。在MacOS中,对浏览器窗口分配ID的是&ifari浏览器562, 但为了说明的方便,将其名称统一为OS分配ID。
Safari浏览器操作部5 针对操作对象的窗口,确定与测试程序所指定的用户分配ID对应的klenium分配ID。此外,还确定与测试程序所指定的操作内容对应的 Selenium模块530的函数。然后,指定klenium分配ID,调用klenium模块530的函数。 由此,同FF浏览器操作部514 —样,介由klenium模块530执行针对操作对象的网页的操作。
在测试程序指定了应不介由klenium模块530地操作的预定操作、典型的是窗口的关闭处理时,Safari浏览器操作部5 抑制klenium模块530的调用。取而代之地,通过调用MacOS提供的API来执行该操作。具体来说,调用为用于残障者的应用的使用而准备的API群、即可访问性(Accessibility)API566。该详细情况将与图27相关联地在后面叙述。
根据网页的操作,Safari浏览器562有时使对话框(以下也称“Safari对话框”)。 Safari对话框操作部5 在检测到^fari对话框564的显示时,调用与测试程序所指定的对话框操作对应的MacOS的API,由此执行针对&ifari对话框564的操作。此时也调用上述的可访问性API566。该详细情况将与图27相关联地在后面叙述。
上述的FF窗口管理器512和&ifari窗口管理器522被统称为klenium窗口管理器532。图25表示klenium窗口管理器532所存储的数据例子。如该图所示,Selenium 窗口管理器532将在网页的动作测试中对各浏览器窗口分配的用户分配ID、Selenium分配 ID及OS分配ID相对应地保存。当然,IE浏览器M2的操作并不介由klenium模块530。 因此,IE窗口管理器504仅将用户分配ID与OS分配ID相对应地保存。
此外,上述的FF浏览器操作部514和Mfari浏览器操作部5 被统称为介由 klenium模块530操作网页浏览器的klenium浏览器操作部534。
图沈表示针对图M的FF对话框M8的操作的方式。在klenium模块530中, FF浏览器546起动时,JAVA脚本所配装的窗口句柄572被预先设定在FF浏览器546所读入的FF归档(profile) 570中。FF浏览器546在打开新的浏览器窗口时,将窗口句柄572读入FF插件554的存储区域,由此,被追加装入窗口句柄572的功能。
窗口句柄572被作为FF插件5M装入时,将检测FF浏览器M6的窗口生成的监听对象(listener object)介由 XPConnect578 和 XPC0M580 登录到窗口查看器(Window Watcher) 582中。窗口句柄572介由所登录的监听对象而检测到FF对话框548被生成时, 与FF对话框操作部516的套接字(socket)服务器574进行套接字通信,通知其FF对话框 548已被生成。该通知信息中包含表示FF对话框M8中的显示字符串、按钮等显示对象的显示样式信息。
FF对话框操作部516被通知FF对话框548已生成后,将与测试程序所指定的对话框操作对应的函数、即XPC0M580的函数的识别信息通知给窗口句柄572。窗口句柄572通过调用由FF对话框操作部516指定的XPC0M580的函数来操作FF对话框M8。当然,FF对话框操作部516也可以根据FF对话框548的显示样式而适当调整对FF对话框548的操作内容。例如,可以对测试程序所指定的按钮按下操作追加按下对象的按钮的ID后,将该操作指示通知给窗口句柄572。
如前所述,作为JAVA脚本的警告对话框,FF浏览器546是使FF对话框548显示的。该FF对话框548是利用FF浏览器546独自的资源而被显示的,故不能从OS侧判别对话框的内容。例如,不能判别FF对话框548中的显示字符串、按钮等显示对象。因此,如对 OS对话框M4的操作那样,不能进行介由Win32API552的操作。例如,不能进行对FF对话框548所显示的按钮的按下操作。
因此,在参考技术4中,通过将FF浏览器546中的FF对话框548显示的监视功能作为插件追加,能够取得FF对话框M8的显示内容,并实现对FF对话框548的操作。
此外,FF浏览器操作部514由于是介由klenium模块530操作FF浏览器M6,故能对网页的程序代码设定用于对话框操作的函数(例如与窗口句柄572 —样的程序代码)。 但是,若FF对话框M8是模式对话框(modal dialog,应用模式对话框或系统模式对话框), 则不能从其显示源的网页的代码来操作对话框。另一方面,被作为FF插件5M而装入的窗口句柄572能够继续进行对模式对话框的操作。基于该观点,可以说希望窗口句柄572被设定为FF浏览器M6的扩展功能。
图27表示对图M的&ifari对话框564的操作的方式。该图的Apple脚本584 是调用MacOS中的作为应用间通信技术的Apple事件的脚本。系统事件586是MacOS提供的应用,以Apple脚本584和可访问性API566为中介地实现基于Apple脚本584的可访问性API566的调用。
图27以四阶层表示了 MacOS,上位的阶层提供比下位的阶层抽象度高的API、换言之提供高级别的API。如该图所示,可访问性API566属于最上位的阶层“用户体验”。如已述的那样,可访问性API566是用于确保面向残障者的可用性的关于UI自动化功能的API 群。被自动化的操作内容包括打开窗口、按下按钮等各种用户接口(画面)操作。
Safari对话框操作部5 确定与测试程序所指定的对话框操作对应的可访问性 API566的函数,将指定该函数的Apple脚本584发送给系统事件586。由此,介由系统事件 586,调用被作为可访问性API566而准备的对话框操作的函数。
当然,对Mfari对话框564的操作可以用MacOS中的更低级别的API群来实现。 例如,Safari对话框操作部5 通过调用图形与多媒体阶层的“Quartz” API,也能执行对Safari对话框564的操作。但是,由于可访问性API566提供与用户所进行的UI操作对应的高级别的函数,故通过利用可访问性API566,能减少Mfari对话框操作部5 的代码量, 并能提高其可维护性。
此外,在图27中未图示的是,对于针对网页的操作中的、应不介由klenium模块 530地进行的预定操作,Safari浏览器操作部524同Mfari对话框操作部5 —样调用可访问性API566。由此,使MacOS或&ifari浏览器562执行该操作。
图28是表示参考技术4的动作检验装置100的功能构成的框图。该图的功能块中的与参考技术1至3所示的动作检验装置100的功能块相同或对应的功能块被赋予相同标号。关于赋予了相同标号的功能块,仅在其功能与在参考技术1至3中已述的内容不同时进行记载,对于同样的功能,适当省略其记载。
动作检验装置100还具有窗口 ID保持部巧4和ID取得部139。窗口 ID保持部巧4和ID取得部139对应于图M的IE窗口管理器504和klenium窗口管理器532。艮口, 窗口 ID保持部IM保存对显示网页的浏览器窗口所分配的用户分配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脚本而从Mfari浏览器 562得到的long值,存储到窗口 ID保持部154的OS分配ID字段中。例如,执行以下脚本
tell application" Safari"
return id of windows
end tell
来取得Mfari浏览器562对各个浏览器窗口分配的long值一览。
此外,ID取得部139取得klenium模块530 6elenium-C0RE)对各浏览器窗口分配的窗口属性值“seleniumWindowName”。然后,将该窗口属性值作为klenium分配ID保存到窗口 ID保持部154 Wklenium分配ID字段中。例如,通过调用Selenium模块530的 1 "getAttributeFromAlIwindow (" seleniumwindowName") ”,: !! Selenium H^i 530 所管理的窗口属性值一览。
另外,ID取得部139取得后述的ID分配部174和ID分配部180对浏览器窗口分配的用户分配ID,保存到窗口 ID保持部154的用户分配ID字段中。当然,ID取得部139也可以将用户分配ID、Selenium分配ID、OS分配ID分别按时间轴上的分配顺序(ID取得部 139中的取得顺序)依次保存到窗口 ID保持部154中。由此,时间轴上先被分配的ID (例如klenium分配ID)就与同样在时间轴上先被分配的其它ID (例如用户分配ID)相对应了。
图四是表示图观的程序执行部134的详细情况的框图。程序执行部134具有测试环境判定部171、外部操作执行部164、代理处理部166、内部操作执行部168、佐证物设定部170。对于该图的功能块中的与参考技术3所示的程序执行部134的功能块相同或对应的功能块赋予了相同标号。对于赋予了相同标号的功能块,仅在其功能与参考技术3中已述的内容不同时进行记载,对于同样的功能,适当省略其记载。
测试环境判定部171对应于参考技术3 (图21)中的测试主体选择部162,基于用于网页的动作测试的环境、具体来说基于OS与网页浏览器的组合,决定网页的动作测试的方式。例如,决定网页浏览器的操作方式和对话框的操作方式。
外部操作执行部164对应于图M中的IE浏览器操作部506。外部操作执行部164 包含ID分配部174和对话框操作部176。ID分配部174在测试程序执行时检测到在测试程序中生成新的浏览器窗口的函数(指令)被指定时,将被指定为该指令的变量的ID决定为用户分配ID。若ID未指定,则采用在外部操作执行部164和内部操作执行部168中唯一的新的ID作为用户分配ID。
对话框操作部176对应于图M的IE对话框操作部508,定期监视IE浏览器542 对对话框的设定。例如,可以定期地调用Win32API552的上述FindWindow函数,来检测对话框窗口被生成。对话框操作部176介由Win32API552操作在IE浏览器M2中所显示的 OS对话框M4。
此外,外部操作执行部164保存存储有测试程序所能指定的网页操作用的函数与被作为网页浏览器的操作IF而规定的函数的对应关系的表,在参考技术4中是与C0M550 及Win32API552所规定的函数的对应关系的表。外部操作执行部164参照该表来调用与测试程序所指定的函数对应的C0M550或Win32API552的函数。
代理处理部166对应于图M中的klenium模块530。如在参考技术3中所述的那样,代理处理部166代理取得操作对象的网页。然后,在该网页的程序代码中追加JAVA 脚本所配装的程序代码、即为执行对网页的各种操作而预先准备的函数群(参考技术3中的“控制代码”)。然后,使浏览器处理部160显示控制代码追加后的网页。另外,根据来自内部操作执行部168的操作指示而调用与该操作指示对应的控制代码的函数,由此,中介执行网页的操作。
代理处理部166包含ID发出部178和附加组件(add-on)设定部179。ID发出部 178在使浏览器处理部160显示控制代码追加后的网页时,发出用于在代理处理部166中唯一识别该浏览器窗口的识别信息。该识别信息由ID取得部139作为klenium分配ID而取得。附加组件设定部179在为使浏览器处理部160显示控制代码追加后的网页而应起动 FF浏览器M6时,指定包含图沈的窗口句柄572的FF归档570,起动FF浏览器M6。由此,将窗口句柄572作为FF浏览器M6的扩展功能而装入。
内部操作执行部168对应于图M中的klenium浏览器操作部534。内部操作执行部168包含ID分配部180和对话框操作部182。ID分配部180是与外部操作执行部164 的ID分配部174同样的构成。另外,内部操作执行部168保存存储有测试程序所能指定的网页操作用的函数与在义^!^ 模块530中规定的网页操作用的函数的对应关系的表。外部操作执行部164参照该表,调用与测试程序所指定的函数对应的klenium模块530的函数来作为对klenium模块530的操作指示。
对话框操作部182对应于图M的FF对话框操作部516和&ifari对话框操作部 526。若测试环境为WindowsOS和FF浏览器M6,则对话框操作部182定期地监视FF浏览器546所进行的对话框的设定。例如,可以定期地调用Win32API552的上述FindWindow函数,来检测对话框窗口被生成。对话框操作部182介由Win32API552操作在FF浏览器546 中所显示的OS对话框M4。另外,对话框操作部182介由FF插件5M检测由FF浏览器546 所显示的FF对话框M8,并介由FF插件5M来进行操作。
另外,若测试环境为MacOS和&ifari浏览器562,则对话框操作部182定期地监视Mfari浏览器562所进行的对话框的设定。例如,可以定期地执行上述Apple脚本,检测Mfari浏览器562中的对话框窗口的设定。对话框操作部182介由可访问性API566操作在&ifari浏览器562中所显示的&ifari对话框564。
下面说明以上结构的动作。
图30是表示动作检验装置100的动作的流程图。该图表示在动作检验装置100中执行动作测试用程序时的动作。例如,既是表示图12中的S218的详细情况的图,也是表示图14中的的详细情况的图。即,如图14所示的那样,动作检验装置100通过再现事前用户对网页实施的一连串输入操作,来辅助网页的动作确认。图30可以说是使图23的流程图更详细化的图。
从用户收到网页的动作测试的开始指示后,测试环境判定部171判定成为动作测试的执行环境的OS及网页浏览器的种类。然后,根据该判定结果,选择外部操作执行部164 或内部操作执行部168作为网页的操作主体(S400)。程序执行部134、换言之被选为操作主体的外部操作执行部164或内部操作执行部168执行后述的测试程序读入处理640 。当记述在测试程序中的对网页的全部操作(动作测试的全部项目)都完成了时(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的函数,被指定WebEdiUet、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)。在图M中成为S410的Y的是网页浏览器为 IE浏览器M2的情况,此时的操作IF对应C0M550。
若网页浏览器的操作IF是非公开的(S410的N),则内部操作执行部168对代理处理部166指示取得操作对象的网页。代理处理部166的ID发出部178发出klenium分配ID(S414)。代理处理部166取得操作对象的网页的数据(S416),对该网页的数据追加控制代码(S418)。代理处理部166执行后述的网页浏览器起动处理后(S419),将追加了控制代码的网页的数据传递给网页浏览器,使显示操作对象网页的浏览器窗口显示在显示器上 (S420)。在图M中成为S410的N的是网页浏览器为FF浏览器546或Mfari浏览器562 的情况。
ID取得部139调用OS所提供的API,取得OS分配给浏览器窗口的OS分配ID,存储到窗口 ID保持部154中。此外,若网页浏览器的操作IF是非公开的,则调用klenium 模块530所提供的API,取得klenium模块530分配给浏览器窗口的klenium分配ID,存储到窗口 ID保持部154中。由此,使浏览器窗口 A和浏览器窗口 B各自被分配的用户分配 ID、OS分配ID及Selenium分配ID建立对应(S422)。
若在测试程序中没有指定新网页的显示(S406的N),则S408 S422被跳过。若在测试程序中指定有网页的操作,即应执行上述操作3 操作10 (S424的Y),则程序执行部 Π4执行后述的网页操作处理(S426)。若测试程序中没有指定网页的操作(S424的N),则被跳过。在对网页的操作之后,佐证物设定部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浏览器M6的扩展功能而附加(S444)。窗口句柄572将用于检测FF对话框M8的监听器登录到FF浏览器M6中 (S446)。若动作测试用的网页浏览器不是FF浏览器546 (S442的N),则S444和S446被跳过。
图33是详细表示图30的的网页操作处理的流程图。在测试环境判定部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浏览器M2(S456的N),而是FF浏览器M6(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),而是被指定了应介由Mfari浏览器562执行的预定操作(上述的操作4、5、8, 以下也称作“浏览器操作”)(S474的Y),则内部操作执行部168确定与用户分配ID建立了对应关系的klenium分配ID(S476)。然后,通过将指定有该klenium分配ID的操作指示通知给kIenium模块530,来使kIenium模块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的函数,来执行对&ifari对话框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地调用与浏览器操作的内容对应的C0M550的函数, 来使IE浏览器542执行该操作(S508)。
如果没有被指定浏览器操作(S504的N),而是被指定了应介由WindowsOS执行的操作(上述操作9和10,以下也称“0S操作” )(S510的Y),则外部操作执行部164确定与用户分配ID建立了对应的OS分配ID(S512)。然后,通过指定该OS分配ID地调用与操作内容对应的Win32API552的函数,来使WindowsOS执行对浏览器窗口的OS操作(S514)。如果也不是OS操作(S510的N),则S512和S514被跳过。
外部操作执行部164的对话框操作部176检测到OS对话框M4的显示时(S516 的Y),从对话框操作保持表取得针对该对话框的操作内容(上述操作6) (S518)。然后,通过调用与该操作内容对应的Win32API552的函数,来执行对OS对话框M4的操作(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建立了对应的klenium分配 ID (S536)。然后,将指定有该kIenium分配ID的操作指示通知给kIenium模块530,由此, 使klenium模块530调用被追加于网页的控制代码中的与操作指示对应的函数(S538)。
如果没被指定浏览器操作(S534的N),而是被指定了应介由WindowsOS执行的预定操作(上述操作9和10,以下也称“OS操作”)(S540的Y),则内部操作执行部168确定与用户分配ID建立了对应的OS分配ID(SM2)。然后,通过指定该OS分配ID地调用与操作内容对应的Win32API552的函数,来使WindowsOS执行对浏览器窗口的OS操作(SM4)。 如果也不是OS操作(S540的N),则S542和S544被跳过。
在本段落中说明通过上述操作5而显示的对话框是FF对话框M8的情况。内部操作执行部168的对话框操作部182通过来自窗口句柄572的通知而检测到FF对话框 548的显示时(SM6的Y),从对话框操作保持表取得对该对话框的操作内容(上述操作6) (SM8)。然后,通过将该操作内容通知给窗口句柄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对话框M4的操作(S556)。如果未检测到 OS对话框544的显示(S552的N),则S554和S556被跳过。
根据参考技术4的动作检验装置100,如在参考技术3中所述的那样,通过使用 klenium模块530,不论操作IF是否公开,都能进行各种各样的网页浏览器上的网页的动作确认。另外,在测试程序、以及成为测试程序的生成源的操作内容文件和函数设定画面中,用户能将任意的ID赋予浏览器窗口。即,用户能根据测试的情况而适当设定浏览器窗口的ID,并且无需意识到klenium模块530识别浏览器窗口所需要的klenium分配ID, 能提高用户的便利性。
另外,通过动作检验装置100,还能支持应不介由klenium模块530地进行的对浏览器窗口的操作。在该情况下,用户也能根据测试的情况而任意设定浏览器窗口的ID,并且无需意识到OS或网页浏览器分配给该浏览器窗口的ID,能提高用户的便利性。
此外,通过动作检验装置100,将对话框检测功能作为网页浏览器(FF浏览器M6) 的扩展功能来附加。由此,网页浏览器为使用独自的资源显示对话框,即使在OS的功能中无法取得对话框的内容,也能介由所附加的对话框检测功能而取得对话框的内容,并操作该对话框。另外,在网页浏览器能生成使用了独自的资源的第1对话框和使用了 OS的本机 (native)资源的第2对话框这两者的情况下,通过适当切换对话框操作的方式,也能进行对任一对话框的操作。即,对于第1对话框,介由所附加的对话框检测功能来操作,对于第2对话框,介由OS的本机功能来操作,由此,能支持并再现对网页的一系列操作。
此外,通过动作检验装置100,在针对浏览器窗口的多数操作中利用klenium模块530,而在例外性的操作中直接调用OS的API,或者利用对话框操作用的模块。这样,通过适当组合参考技术4中所说明的技术,还能支持在参考技术4中未言及的各种各样的测试环境(即OS与网页浏览器的组合),能辅助网页的动作测试。
(第1实施方式)
针对本发明第1实施方式(以下也称“第1实施方式”)的动作检验装置100,先说明其概要。图37表示浏览器窗口中的网页内容的显示例子。该图表示了网页服务器所提供的网页(典型的是测试对象页)在显示器的画面630上被显示于浏览器窗口 632中的状况。在第1实施方式中,浏览器窗口中所起动的网页浏览器是Mfari浏览器562。
浏览器窗口 632包括客户区域634和头部区域636。头部区域636是主要显示关于Mfari浏览器562的信息的区域,显示用于操作Mfari浏览器562的各种菜单、图标。 此外,还显示网页的内容本身以外的URL及标题等网页的元信息(meta-information)。
另一方面,客户区域634是显示网页的内容本身的区域。客户区域634包含各自显示不同网页的多个框架(frame)。在第1实施方式中,假定包含框架a638、框架M40及框架c642。另外,假定在浏览器窗口 632中,头部区域636被配置在客户区域634的上部。
框架a638由于其包含非显示部分在内的整体纵向长度超过可视范围的纵向长度,故配置有纵向滚动条646。此外,框架a638包含元素644。第1实施方式中的“元素”是被配置在框架内、可被设定滚动条的GUI元件,例如包含文本框或列表框。该图的元素644 由于其包含非显示部分在内的整体纵向长度超过可视范围的纵向长度,故被配置有纵向滚动条645。框架MHO由于其包含非显示部分在内的整体横向长度超过可视范围的横向长度,故被配置横向滚动条650。此外,框架M40包含表648。
第1实施方式的动作检验装置100在对浏览器窗口 632的显示图像进行抓图时, 将之按框架单位作为一个图像数据来进行保存。即,在对由多个框架构成的网页、换言之对将多个网页进行框架分割地显示的网页(以下为方便起见也称为“首页”)进行画面抓图时,保存各框架的抓像。另外,在浏览器窗口 632中不能一次性显示框架整体的内容, 而需要滚动的情况下,取得分别包含框架的一部分的多个图像数据,将使它们连接起来的图像数据作为最终的抓像进行保存。
图38表示图37的浏览器窗口的抓像。图38的(a)表示了框架a638的抓像。在第1实施方式的图像抓图处理中,包含图37中所未显示出的区域的框架a638整体被作为1张图像来保存。此外,图38的(b)表示了框架a638内的元素644的抓像。 在第1实施方式的图像抓图处理中,包含图37中所未显示出的区域的元素644整体被作为 1张图像来保存。图38的(c)是框架MHO的抓像,包含图37中所未显示出的区域的框架M40整体被作为1张图像来保存。此外,虽然图38中未图示,但还取得框架c642的抓像。由于框架c642中未配置滚动条,所以取得表示图37中的显示内容的抓像。
以下将应对显示图像进行抓图的浏览器窗口称为“抓图对象窗口”,将抓图对象窗口中所包含的框架称为“抓图对象框架”,将抓图对象框架中所包含的元素称为“抓图对象元素”。此外,将在首页中显示于各个框架内的网页称为“框架页”。
第1实施方式中的动作检验装置100的主要功能构成与在图28及图四中所示的参考技术4中的动作检验装置100的功能构成是一样的。以下适当省略在参考技术1 4 中已说明过的结构的说明,详细说明用于网页内容的画面抓图处理的结构。
图39是表示第1实施方式中的画面抓图处理的相关功能构成的框图。如已述的那样,动作检验装置100包括佐证物设定部170、代理处理部166、浏览器处理部160。佐证物设定部170调用代理处理部166所提供的后述的各种函数。代理处理部166与追加于网页的程序代码的控制代码适时通信,使与佐证物设定部170所调用的函数对应的JAVA脚本在浏览器处理部160侧执行。即,佐证物设定部170利用代理处理部166提供的各种函数来操作网页,并从浏览器处理部160和代理处理部166取得网页图像抓图所需要的信息。
图40表示代理处理部166提供给佐证物设定部170的函数。这些函数也可以说是图M的klenium模块530对外公开的函数。此外,该图的“getOffsetPositionOfWindow,, 以外的函数可以是代理处理部166、即klenium模块530所标准提供的函数。
第1实施方式的代理处理部166代理取得应显示于Mfari浏览器562的首页,并对首页追加控制代码。另外,还代理取得应显示于首页的框架中的框架页,对各框架页也追加控制代码。此时,对显示出网页的浏览器窗口分配唯一的ID,并对该网页上所显示的各框架也分配ID。然后,将分配给窗口的ID和分配给框架的ID建立对应地管理。
回到图39,代理处理部166包含图像位置确定部600。佐证物设定部170包括对象确定部612、框架处理部614、元素处理部619、图像取得部625、图像合成部627。该图的各功能块作为用于执行网页内容的画面抓图处理的功能块,也可总括地称作画面抓图处理部629。当然,画面抓图处理部6 的各功能块也可以根据代理处理部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. kreenX”。然后,作为返回值,取得点659的横坐标值(图37 的横坐标652)。同样,在首页执行“window. ScreenY",作为返回值,取得点659的纵坐标值 (图37的纵坐标654)。
头部区域确定部604确定浏览器窗口 632中的头部区域636的尺寸。在第1实施方式中,头部区域636被配置在客户区域634的上部,故头部区域确定部604确定头部区域 636的纵向长度。
具体来说,头部区域确定部604与包含抓图对象框架的首页的控制代码进行通信,在首页执行“window, outerifeight”。然后,作为返回值,取得浏览器窗口 632的纵向长度(图37的纵向宽度656)。同样,在首页执行“window. irmerHeight”,作为返回值,取得客户区域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)为原点的正交坐标系中的、抓图对象框架的左上端的坐标(以下也称“客户区域内坐标”)。例如,抓图对象框架是框架MHO 时,取得图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对应的 klenium分配ID,调用函数“getAlIFrame”。然后,从代理处理部166取得抓图对象窗口所包含的框架的一览信息(以下也称“框架列表”)。该框架列表中包含klenium模块530 对抓图对象窗口所包含的各框架所分配的各框架的ID (以下也称“框架ID”)。对象确定部 612将框架列表所包含的各框架识别为抓图对象框架。
此外,对象确定部612指定抓图对象框架各自的ID,调用函数 “getkrollableElement”。然后,从代理处理部166取得抓图对象框架所包含的可滚动元素的一览信息(以下也称“元素列表”)。该元素列表中包括抓图对象框架所包含的可滚动的各元素的ID (以下也称“元素ID”)。对象确定部612将元素列表所包含的各元素确定为抓图对象元素。
框架处理部614执行用于对抓图对象框架进行抓图的准备处理。框架处理部614 包括框架显示位置取得部615、框架范围取得部616、框架滚动处理部617。
框架显示位置取得部615指定抓图对象框架的框架ID,调用函数“getOffsetPositionOfWindow”。由此,使代理处理部166的图像位置确定部600确定表示画面630上的抓图对象框架的显示位置的坐标,从代理处理部166取得该坐标值。
框架范围取得部616指定抓图对象框架的框架ID,调用函数 "getScrolIRectangleOfElement然后,从代理处理部166取得包括抓图对象框架的不可视部分、即通过使之滚动才显示在画面630上的部分在内的整体尺寸,在此是取得抓图对象框架整体的横向长度(横向宽度)和纵向长度(纵向宽度)。
当然,代理处理部166也可以在收到了函数“getScrolIRectangleOfElement,,的调用时,在首页执行因浏览器处理部160的种类而不同的JAVA脚本。S卩,如第1实施方式那样是Mfari浏览器562的情况下,可以将“框架名.document, width”的执行结果确定为抓图对象框架整体的横向宽度。同样,可以将“框架名.document, height”的执行结果确定为抓图对象框架整体的纵向宽度。另一方面,在FF浏览器546的情况下,浏览器处理部160 可以将“框架名.window. innerWidth”的执行结果+ “框架名.window. scrollMaxX”的执行结果确定为抓图对象框架整体的横向宽度。同样,可以将“框架名.window. innerHeight" 的执行结果+ “框架名.window, scrolIMaxY"的执行结果确定为抓图对象框架整体的纵向宽度。
此外,框架范围取得部616指定抓图对象框架的框架ID,调用函数 "getClientRectangle".然后,从代理处理部166取得包含抓图对象框架的可视部分、即不滚动就显示在画面630上的部分的尺寸,在此是取得抓图对象框架中的可视部分的横向宽度和纵向宽度。
代理处理部166在收到函数“getClientRectangle”的调用时,在首页执行与该函数对应的JAVA脚本。例如可以将“框架名.document. documentElement. clientWidth”的执行结果确定为抓图对象框架中的可视部分的横向宽度。同样,可以将“框架名.document. documentElement. clientHeight”的执行结果确定为抓图对象框架中的可视部分的纵向宽度。
框架滚动处理部617将抓图对象框架整体的横向宽度用其可视部分的横向宽度来除(余数进位),将其结果决定为横向滚动上限次数。此外,将抓图对象框架整体的纵向宽度用其可视部分的纵向宽度来除(余数进位),将其结果决定为纵向滚动上限次数。
另外,在被进行抓图对象框架的图像取得后,框架滚动处理部617在下一次取得图像前,使框架纵向滚动,或者使之纵向滚动和横向滚动。具体来说,为执行纵向滚动,指定抓图对象框架的框架ID,将横向滚动量指定为0,而作为纵向滚动量,指定抓图对象框架的可视部分的纵向宽度,来调用函数“dc^crollFrameTo”。此外,为执行横向滚动,指定抓图对象框架的框架ID,将横向滚动量指定为抓图对象框架的可视部分的横向宽度,并将纵向滚动量指定为0,来调用函数“doScroIlFrameTo”。
在第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,调用函数 "getScrolIRectangleOfElement"ο然后,从代理处理部166取得包含抓图对象框架的不可视部分的整体尺寸,在此是取得抓图对象框架整体的横向宽度和纵向宽度。
代理处理部166在收到函数“getkrollRectangleOfElement”的调用时,在框架页执行与该函数对应的JAVA脚本。例如可以执行“元素名.scrollWidth”,作为其返回值, 取得抓图对象元素整体的横向宽度。同样,可以执行“元素名.scrollHeight”,作为其返回值,取得抓图对象元素的框架内坐标的纵向宽度。
此外,元素范围取得部622指定抓图对象元素的元素ID,调用函数 “getClientRectangleOfElement”。然后,从代理处理部166取得抓图对象元素的可视部分的尺寸,在此是取得抓图对象框架中的可视部分的横向宽度和纵向宽度。
代理处理部166收到函数“getClientRectangleOfElement”的调用时,在框架页执行与该函数对应的JAVA脚本。例如可以取得“元素名.clientWidth”的执行结果作为抓图对象元素中的可视部分的横向宽度。同样,可以取得“元素名.clientHeight”的执行结果作为抓图对象元素中的可视部分的纵向宽度。
元素滚动处理部623将抓图对象元素整体的横向宽度用其可视部分的横向宽度来除(余数进位),将其结果决定为横向滚动上限次数。此外,将抓图对象元素整体的纵向宽度用其可视部分的纵向宽度来除(余数进位),将其结果决定为纵向滚动上限次数。
在被执行抓图对象元素的图像取得后,元素滚动处理部623在下一次图像取得前,使元素纵向滚动,或者使之纵向滚动和横向滚动。具体来说,为执行纵向滚动,指定抓图对象元素的元素ID,将横向滚动量指定为0,作为纵向滚动量,指定抓图对象元素的可视部分的纵向宽度,这样调用函数“doScrollElementTo”。另外,为执行横向滚动,指定抓图对象元素的元素ID,作为横向滚动量,指定抓图对象元素的可视部分的横向宽度,并对纵向滚动量指定为0,这样来调用函数“dc^crollElementTo”。元素的滚动方式同已述的框架的滚动方式是一样的。
图像取得部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取得该要求所指定的抓图对象窗口中所包含的框架的列表(S60》。对象确定部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取得抓图对象框架内的抓图对象元素的位置(S62》。元素显示位置确定部621按照画面上的抓图对象框架的显示位置和抓图对象框架内的抓图对象元素的位置,导出画面上的抓图对象元素的显示位置(S624)。然后返回S608。
在元素的抓图处理中,元素范围取得部622取得抓图对象元素整体的尺寸及其可视部分的尺寸(S608)。元素滚动处理部623按照抓图对象元素整体的尺寸及其可视部分的尺寸,分别决定应对抓图对象元素执行的纵横的滚动上限次数(S610)。图像取得部625 将抓图对象元素的可视部分的图像暂时存储到存储器中(S6U)。若未达到滚动的上限次数(S614的N),则元素滚动处理部623使抓图对象元素滚动1单位量后,返回S612 (S616)。 当达到滚动的上限次数时(S614的Y),图像合成部627取得针对抓图对象元素所暂时保存的多个抓像,设定将它们合成后的1张图像数据(S618)。
当针对所有抓图对象元素的抓图处理都已完成时(S620的Y),若针对框架列表的一部分框架的抓图处理尚未完成的N),则返回S604,新决定抓图对象框架,继续进行处理。若针对框架列表的所有框架的抓图处理都已完成(S626的Y),则结束本图的流程。 当然,若未收到网页的图像抓图要求(S600的N),则以后的处理被跳过,结束本图的流程。
图42是详细表示图41的S606的框架显示位置确定处理的流程图。窗口显示位置取得部602针对包含抓图对象框架的抓图对象窗口,取得其在画面上的显示位置(S630)。 头部区域确定部604通过计算抓图对象窗口整体的尺寸与客户区域634的尺寸的差,来导出头部区域636的尺寸(S63》。客户区域确定部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的下部具有固定长度(例如沈像素)的状态栏。此外,第2实施方式的浏览器窗口 632具有被设定为某程度宽度(例如固定长度4像素)的框线666作为与浏览器窗口外部的对象(其它窗口或背景等)的边界。
第2实施方式中的动作检验装置100的主要功能构成同第1实施方式一样,主要动作也同第1实施方式一样。以下针对第2实施方式中的动作检验装置100,说明其不同于第1实施方式的点。
图像位置确定部600的头部区域确定部604还考虑状态栏664的尺寸(宽度)地确定头部区域636的尺寸。具体来说,从浏览器窗口 632的纵向宽度中减去客户区域634 的纵向宽度,并减去状态栏664的纵向长度、在此是预先确定的沈像素,由此来导出头部区域636的纵向长度。当然,固定值的沈像素严谨地说也可以说是状态栏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可以包括对起动Mfari浏览器562的浏览器窗口的显示图像进行抓图时所被调用的第1图像位置确定部,和在对起动FF浏览器546的浏览器窗口的显示图像进行抓图时所被调用的第2图像位置确定部。然后,代理处理部166可以根据成为抓图对象的浏览器窗口的种类而使某一者动作。
作为另一种结构,图像位置确定部600的头部区域确定部604和客户区域确定部 606可以根据成为抓图对象的浏览器窗口的种类而执行第1实施方式所记载的动作或第2 实施方式所记载的动作的某一者。当然,浏览器窗口的种类可以由用户在动作测试开始时的变量、各种设定文件中指定,并从OS或浏览器处理部160动态地读入。
说明第3变形例。在上述实施方式中表示了客户区域634被分割成多个框架的例子,但客户区域634也可以不被分割成多个框架。在该情况下,框架处理部614只要将客户区域整体视为一个框架,与实施方式同样地进行动作即可。此外,元素处理部619只要将客户区域整体所含的元素视为一个框架所含的元素,与实施方式同样地进行动作即可。
说明第4变形例。在上述实施方式中,作为网页浏览器,例示了 Mfari浏览器562 和FF浏览器M6。但本发明的技术思想的适用范围不限于这几种网页浏览器。例如对于在浏览器窗口 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框线。
〔工业可利用性〕
本发明能适用于测试产品的动作的装置。
权利要求
1.一种图像取得装置,其特征在于,包括窗口位置取得部,针对包括显示网页的客户区域和不同于上述客户区域的附加区域的浏览器窗口,取得画面上的上述浏览器窗口的显示位置,图像位置确定部,按照上述画面上的上述浏览器窗口的显示位置、上述浏览器窗口的附加区域的尺寸、以及上述浏览器窗口的状态栏的尺寸,确定上述画面上的上述客户区域的显示位置,以及图像取得部,按照上述图像位置确定部所确定的上述画面上的显示位置,对上述客户区域的显示图像进行抓图。
2.如权利要求1所述的图像取得装置,其特征在于,上述图像取得部将上述浏览器窗口的附加区域从抓图对象中排除。
3.如权利要求1或2所述的图像取得装置,其特征在于, 上述图像位置确定部包括附加区域确定部,取得上述浏览器窗口的长度和上述客户区域的长度,通过从上述浏览器窗口的长度减去上述客户区域的长度和作为上述状态栏的尺寸而预先确定的长度,来导出上述附加区域的长度,和客户区域确定部,将使上述画面上的上述浏览器窗口的显示位置根据上述附加区域的长度而变位后的位置,确定为上述画面上的上述客户区域的显示位置。
4.如权利要求3所述的图像取得装置,其特征在于,在上述浏览器窗口中,上述附加区域被配置在上述客户区域的上部,上述状态栏被配置在上述客户区域的下部;上述窗口位置取得部取得正交坐标系中的上述浏览器窗口的左上坐标作为上述画面上的上述浏览器窗口的显示位置;上述附加区域确定部确定上述附加区域的纵向长度;上述客户区域确定部通过使上述浏览器窗口的左上坐标中的纵坐标值加上上述附加区域的纵向长度,来导出上述正交坐标系中的上述客户区域的左上坐标。
5.如权利要求4所述的图像取得装置,其特征在于,上述客户区域确定部通过使上述浏览器窗口的左上坐标中的纵坐标值加上上述附加区域的纵向长度,来导出上述客户区域的左上坐标中的纵坐标值,并使上述浏览器窗口的左上坐标中的横坐标值加上作为表示上述浏览器窗口与外部的边界的框线的宽度而预先确定的长度,来导出上述客户区域的左上坐标中的横坐标值。
6.如权利要求1至5的任一项所述的图像取得装置,其特征在于, 上述客户区域中包含多个框架;本装置还包括框架位置取得部,针对上述多个框架中的抓图对象框架,取得上述客户区域中的上述抓图对象框架的位置;上述图像位置确定部按照上述画面上的上述客户区域的显示位置和上述客户区域中的上述抓图对象框架的位置,确定上述画面上的上述抓图对象框架的显示位置;上述图像取得部按照上述画面上的上述抓图对象框架的显示位置,对上述抓图对象框架的显示图像进行抓图。
7.—种由图像取得装置执行的图像取得方法,其特征在于,包括针对包含显示网页的客户区域和不同于上述客户区域的附加区域的浏览器窗口,取得画面上的上述浏览器窗口的显示位置的步骤,按照上述画面上的上述浏览器窗口的显示位置、上述浏览器窗口的附加区域的尺寸、 以及上述浏览器窗口的状态栏的尺寸,确定上述画面上的上述客户区域的显示位置的确定步骤,以及按照在上述确定步骤中所确定的上述画面上的显示位置,对上述客户区域的显示图像进行抓图的步骤。
8. 一种计算机程序,使图像取得装置实现以下功能针对包括显示网页的客户区域和不同于上述客户区域的附加区域的浏览器窗口,取得画面上的上述浏览器窗口的显示位置的功能,按照上述画面上的上述浏览器窗口的显示位置、上述浏览器窗口的附加区域的尺寸、 以及上述浏览器窗口的状态栏的尺寸,确定上述画面上的上述客户区域的显示位置的确定功能,以及按照由上述确定功能所确定的上述画面上的显示位置,对上述客户区域的显示图像进行抓图的功能。
全文摘要
动作检验装置(100)包括窗口显示位置取得部(602),针对包括显示网页的客户区域和不同于客户区域的附加区域的浏览器窗口,取得画面上的浏览器窗口的显示位置;客户区域确定部(606),按照画面上的浏览器窗口的显示位置、浏览器窗口中的附加区域的尺寸、以及浏览器窗口中的状态栏的尺寸,确定画面上的客户区域的显示位置;图像取得部(625),按照所确定的画面上的显示位置,对客户区域的显示图像进行抓图。
文档编号G06F15/00GK102549556SQ201080043089
公开日2012年7月4日 申请日期2010年9月28日 优先权日2010年9月28日
发明者伊藤俊廷, 沟口拓治, 石桥琢磨, 阪上纱里, 高畠勇人 申请人:株式会社野村综合研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1