CN102597965B - 动作检验装置及动作检验方法 - Google Patents
动作检验装置及动作检验方法 Download PDFInfo
- Publication number
- CN102597965B CN102597965B CN201080043027.9A CN201080043027A CN102597965B CN 102597965 B CN102597965 B CN 102597965B CN 201080043027 A CN201080043027 A CN 201080043027A CN 102597965 B CN102597965 B CN 102597965B
- Authority
- CN
- China
- Prior art keywords
- mentioned
- dialog box
- function
- program
- browser
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种动作检验装置、动作检验方法及动作检验程序,其中,动作检验装置(100)包括:代理处理部,对操作对象网页追加用于操作的控制代码后,使网页浏览器显示该网页;程序执行部(134),在设定有对网页的操作内容的测试程序执行时,将预定的操作指示通知给代理处理部,使之调用被追加于操作对象网页的控制代码;附加组件设定部,将检测网页浏览器所进行的对话框显示的附加组件程序设定为网页浏览器的扩展功能。程序执行部(134)从附加组件程序收到了对话框已被显示的通知时,将在测试程序中所指定的对话框操作指示给附加组件程序。
Description
技术领域
本发明涉及用于测试产品的动作的技术。
背景技术
在保证产品质量方面,产品出厂前的动作测试不可缺少。一般来说,多是通过测试工程师手动操作产品并确认该操作的结果来执行动作测试的。但是,对于操作变化(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是表示实施方式的动作检验装置的功能构成的框图。
图29是表示图28的程序执行部的详细情况的框图。
图30是表示实施方式的动作检验装置的动作的流程图。
图31是详细表示图30的S402的测试程序读入处理的流程图。
图32是详细表示图30的S419的网页浏览器起动处理的流程图。
图33是详细表示图30的S426的网页操作处理的流程图。
图34是详细表示图33的S452的Mac用操作处理的流程图。
图35是详细表示图33的S458的IE用操作处理的流程图。
图36是详细表示图33的S462的FF用操作处理的流程图。
具体实施方式
在说明本实施方式的动作检验系统前,先说明作为其前提的动作检验装置的相关参考技术1、参考技术2、及参考技术3。
(参考技术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的规格而造成的来自外部的操作方式下的制约。
(实施方式)
在本发明的实施方式中提出一种与上述参考技术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相对应地保存。用户分配ID是用户对各窗口所任意分配的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登录到窗口查看器(WindowWatcher)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上所显示的按钮的按下操作。
因此,在本实施方式中,通过将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是表示实施方式的动作检验装置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而规定的函数的对应关系的表,在实施方式中是与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的函数,被指定“selectWindow”,作为其变量,被设定用户指定的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被跳过。
根据本实施方式的动作检验装置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,或者利用对话框操作用的模块。这样,通过适当组合本实施方式中所说明的技术,还能支持在本实施方式中未言及的各种各样的测试环境(即OS与网页浏览器组合),能辅助网页的动作测试。
以上基于实施方式说明了本发明。该实施方式只是例示,本领域技术人员当理解可以对其各构成要素和各处理过程的组合进行各种变形,并且这样的变形例也包含在本发明的范围内。
上述参考技术、实施方式、变形例的任意组合作为本发明的实施方式也是有用的。通过组合而产生的新的实施方式将兼具所组合的参考技术、实施方式、变形例各自的效果。
本领域技术人员当理解权利要求中记载的各构成要件所发挥的功能可以由参考技术、实施方式及变形例中所示的各构成要素单独或其协作来实现。
〔标号说明〕
100动作检验装置,132程序生成部,134程序执行部,137操作记录部,139ID取得部,154窗口ID保持部,160浏览器处理部,164外部操作执行部,166代理处理部,168内部操作执行部,174、180ID分配部,176、182对话框操作部,178ID发出部,179附加组件设定部。
〔工业可利用性〕
本发明能适用于测试产品的动作的装置。
Claims (3)
1.一种执行用于网页的动作确认的测试程序的动作检验装置,其特征在于,包括:
代理处理部,包括取得上述网页的程序代码、将用于操作上述网页的新代码追加到该程序代码中后、使网页浏览器显示上述网页的单元,和根据预定的操作指示而调用上述网页的新代码的单元,
测试执行部,在上述测试程序执行时将上述预定的操作指示通知给上述代理处理部,并使上述代理处理部调用被追加于上述网页的新代码,由此操作上述网页,
附加组件设定部,将附加组件程序设定为上述网页浏览器的扩展功能,其中上述附加组件程序检测由上述网页浏览器进行的对话框的显示;
其中,上述测试执行部包括对话框操作部,在从上述附加组件程序收到了对话框已被显示的通知时,将在上述测试程序中所指定的对话框操作指示给上述附加组件程序,从而使上述网页浏览器不介由上述代理处理部而介由上述附加组件程序地执行对话框操作。
2.如权利要求1所述的动作检验装置,其特征在于,
上述网页浏览器根据应显示的对话框的种类,使用自身的资源显示第1对话框,或者不使用自身的资源而是直接使用操作系统的资源来显示第2对话框;
上述对话框操作部在应执行对上述第1对话框的操作时,使上述网页浏览器介由上述附加组件程序地执行该操作,而在应执行对上述第2对话框的操作时,通过调用上述操作系统所提供的函数来使上述操作系统执行该操作。
3.一种由执行用于网页的动作确认的测试程序的装置所执行的动作检验方法,其特征在于,包括:
代理处理部取得上述网页的程序代码,将用于操作上述网页的新代码追加到该程序代码中后,使网页浏览器显示上述网页的步骤,
附加组件设定部将附加组件程序设定为上述网页浏览器的扩展功能的步骤,其中上述附加组件程序检测由上述网页浏览器进行显示的对话框的显示,
测试执行部在上述测试程序执行时将预定的操作指示通知给上述代理处理部的步骤,
上述代理处理部根据上述预定的操作指示而调用被追加于上述网页的新代码,由此来操作上述网页的步骤,以及
上述测试执行部在从上述附加组件程序收到了对话框已被显示的通知时,将在上述测试程序中所指定的对话框操作指示给上述附加组件程序,从而使上述网页浏览器不介由上述代理处理部而介由上述附加组件程序地执行对话框操作的步骤。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/005826 WO2012042559A1 (ja) | 2010-09-28 | 2010-09-28 | 動作検証装置、動作検証方法および動作検証プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102597965A CN102597965A (zh) | 2012-07-18 |
CN102597965B true CN102597965B (zh) | 2015-04-01 |
Family
ID=45892070
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080043027.9A Active CN102597965B (zh) | 2010-09-28 | 2010-09-28 | 动作检验装置及动作检验方法 |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP5379911B2 (zh) |
CN (1) | CN102597965B (zh) |
WO (1) | WO2012042559A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105138464B (zh) * | 2015-09-30 | 2018-06-29 | 沈文策 | 一种程序代码处理方法和装置 |
CN111311715B (zh) * | 2020-02-14 | 2023-07-21 | 北京三快在线科技有限公司 | 一种网页中添加动画效果的方法及装置 |
CN113885997B (zh) * | 2021-10-19 | 2024-09-10 | 深圳市元征科技股份有限公司 | 对话框显示方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000076266A (ja) * | 1998-08-28 | 2000-03-14 | Internatl Business Mach Corp <Ibm> | ブラウザ操作自動実行システムおよびその方法 |
CN1703870A (zh) * | 2002-10-10 | 2005-11-30 | 思科技术公司 | 用于在通信系统中进行分布式调试的方法与系统 |
JP2008040537A (ja) * | 2006-08-01 | 2008-02-21 | Hitachi Information Systems Ltd | Guiテスト支援システム及びテスト支援用アプリケーションプログラム |
CN101194247A (zh) * | 2001-04-20 | 2008-06-04 | 甲骨文国际公司 | 服务器控制的客户端性能测量技术 |
JP2010039901A (ja) * | 2008-08-07 | 2010-02-18 | Nomura Research Institute Ltd | 動作検証装置および動作検証プログラム |
-
2010
- 2010-09-28 WO PCT/JP2010/005826 patent/WO2012042559A1/ja active Application Filing
- 2010-09-28 CN CN201080043027.9A patent/CN102597965B/zh active Active
- 2010-09-28 JP JP2012506256A patent/JP5379911B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000076266A (ja) * | 1998-08-28 | 2000-03-14 | Internatl Business Mach Corp <Ibm> | ブラウザ操作自動実行システムおよびその方法 |
CN101194247A (zh) * | 2001-04-20 | 2008-06-04 | 甲骨文国际公司 | 服务器控制的客户端性能测量技术 |
CN1703870A (zh) * | 2002-10-10 | 2005-11-30 | 思科技术公司 | 用于在通信系统中进行分布式调试的方法与系统 |
JP2008040537A (ja) * | 2006-08-01 | 2008-02-21 | Hitachi Information Systems Ltd | Guiテスト支援システム及びテスト支援用アプリケーションプログラム |
JP2010039901A (ja) * | 2008-08-07 | 2010-02-18 | Nomura Research Institute Ltd | 動作検証装置および動作検証プログラム |
Also Published As
Publication number | Publication date |
---|---|
CN102597965A (zh) | 2012-07-18 |
WO2012042559A1 (ja) | 2012-04-05 |
JPWO2012042559A1 (ja) | 2014-02-03 |
JP5379911B2 (ja) | 2013-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Almonaies et al. | Legacy system evolution towards service-oriented architecture | |
US7424702B1 (en) | Data integration techniques for use in enterprise architecture modeling | |
CN102227716B (zh) | 动作验证装置、动作验证方法、以及动作验证系统 | |
US7216340B1 (en) | Analysis data validation tool for use in enterprise architecture modeling with result based model updating | |
US8789024B2 (en) | Integration of visualization with source code in the Eclipse development environment | |
CN103336705A (zh) | 脚本处理和工作流系统间的自动转码和语义自适应 | |
JP2010218139A (ja) | 実行履歴トレース方法 | |
CN111290951B (zh) | 测试方法、终端、服务器、系统及存储介质 | |
US20160110281A1 (en) | System and method for debugging firmware/software by generating trace data | |
CN102999314A (zh) | 立即延迟跟踪器工具 | |
US8819631B2 (en) | System and method for self dependent web automation | |
Dumas et al. | Robotic Process Mining. | |
CN102597965B (zh) | 动作检验装置及动作检验方法 | |
JP4795446B2 (ja) | 動作検証装置および動作検証プログラム | |
US10678864B2 (en) | Analysis model preparing system, programming apparatus, and analysis model preparing method | |
CN102713876B (zh) | 图像取得装置和图像取得方法 | |
WO2005082072A2 (en) | Testing web services workflow using web service tester | |
CN102549556B (zh) | 图像取得装置、图像取得方法及计算机程序 | |
JP4681673B1 (ja) | 動作検証装置、動作検証方法および動作検証プログラム | |
JP4795404B2 (ja) | 動作検証装置および動作検証プログラム | |
CN102782657B (zh) | 动作检验装置及动作检验方法 | |
JP4472557B2 (ja) | プログラム作成装置 | |
JP2013037580A (ja) | 情報処理装置 | |
JP4903279B2 (ja) | 動作検証装置、動作検証方法、および動作検証プログラム | |
JP2003015914A (ja) | 情報処理装置を評価するためのテストプログラムを作成する方法、装置、およびそのための処理を記述したプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |