WO2010038307A1 - 仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム - Google Patents

仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム Download PDF

Info

Publication number
WO2010038307A1
WO2010038307A1 PCT/JP2008/068045 JP2008068045W WO2010038307A1 WO 2010038307 A1 WO2010038307 A1 WO 2010038307A1 JP 2008068045 W JP2008068045 W JP 2008068045W WO 2010038307 A1 WO2010038307 A1 WO 2010038307A1
Authority
WO
WIPO (PCT)
Prior art keywords
virtual machine
test
clone
guest
virtual
Prior art date
Application number
PCT/JP2008/068045
Other languages
English (en)
French (fr)
Inventor
大樹 菅野
健一郎 下川
Original Assignee
富士通株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2010531694A priority Critical patent/JP5104958B2/ja
Priority to PCT/JP2008/068045 priority patent/WO2010038307A1/ja
Publication of WO2010038307A1 publication Critical patent/WO2010038307A1/ja
Priority to US13/064,566 priority patent/US8584089B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing

Definitions

  • the present invention relates to a test method of a virtual machine system, a test program, a recording medium thereof, and a virtual machine system, and more particularly, to test an application running on a virtual machine that executes an application efficiently in a short time with high reliability.
  • the present invention relates to a virtual computer system test method, a test program, a recording medium thereof, and a virtual computer system.
  • the virtual machine system includes a plurality of virtual machines configured by an OS (Operating System). Each of the plurality of virtual machines is assigned a specific role.
  • a virtual machine or OS that executes an application program (hereinafter referred to as an application) is called a guest OS. An application that runs on the guest OS needs to be tested before shipping to determine whether it runs correctly.
  • the test support apparatus for computer program parts includes a test status totaling unit for totaling the test status based on the test case stored by the test case storage unit, and a test status notification unit for reporting the test status.
  • a test status totaling unit for totaling the test status based on the test case stored by the test case storage unit
  • a test status notification unit for reporting the test status.
  • FIG. 12 is an explanatory diagram of an application test in the virtual machine system examined by the present inventors.
  • a display screen 911 on the console is displayed to the operator who tests the application.
  • the first selection screen (Select1) is displayed.
  • the operator selects the selector 9111 (yes) or the selector 9112 (no) requested by the application.
  • the operator selects the selector (yes / no) of the second selection screen (Select 2-1 or Select 2-2), and selects any of the third selection screens (Select 3-1 to 3-4). Or a single selector (yes / no).
  • the first test case CASE1 is a test in which the operator selects “yes” on the selection screen Select1, selects “yes” on the selection screen Select2-1, and selects “yes” on the selection screen Select3-1.
  • the selection screen Select2-1 is a selection screen when “yes” is selected on the selection screen Select1 (the same applies to others). The same applies to the second test case CASE2.
  • test case doubles as the condition increases by one. For this reason, if there are many conditions, a huge test case will arise, and it will take much time to repeat selection by an operator. Second, when a condition is selected by an operator, there is a possibility that a test omission may occur, which causes a decrease in test reliability. Third, when the exhaustive test is automated, it is possible to prevent a test omission, but it is necessary to restart the test from the first condition for each test case, and the efficiency of the test deteriorates.
  • the present invention provides a test method of a virtual machine system, a test program, and a recording medium thereof, which can execute a test of an application running on a virtual machine that executes the application efficiently in a short time with high reliability. With the goal.
  • a test method for a virtual machine system includes a hardware including a CPU and a memory, a plurality of virtual machines each including a program operating on the CPU, and a control of the plurality of virtual machines
  • the first virtual machine that executes the application test requests the second virtual machine that controls the virtual machine system to select a condition in the application test via the virtual machine monitor;
  • the virtual machine monitor When the virtual machine monitor is requested to select a condition, the virtual machine monitor creates a clone that is a duplicate of the first virtual machine, and the first virtual machine and the created clone execute an application test. Steps.
  • a virtual computer system test program according to an embodiment of the present invention is executed in the virtual computer system to realize the above-described virtual computer system test method.
  • a recording medium for a test program for a virtual machine system provides the test program for the virtual machine system described above.
  • a virtual computer system has a configuration for realizing the above-described virtual computer system test method.
  • test method for a virtual machine system when selection of a condition in the test is requested, a clone that is a duplicate of the first virtual machine is created, and then the first virtual machine is created. Both the computer and the created clone perform the test.
  • Test reliability can be improved. Even if the number of test cases increases, it is not necessary to repeat the test from the first condition for each test case, so that the test can be performed efficiently.
  • the above-described virtual computer system test method can be realized and the above-described effects can be obtained.
  • the above-described effect can be obtained by realizing the test method of the virtual computer system described above.
  • FIG. 1 is a diagram showing an example of the configuration of this virtual computer system.
  • the virtual machine system includes a virtual machine monitor (VMM: Virtual Machine Monitor or Hypervisor) 1, hardware 2, and a plurality of virtual machines (VM: Virtual Machine Machine) 3.
  • VMM Virtual Machine Monitor or Hypervisor
  • VM Virtual Machine Machine
  • the virtual machine monitor 1 and the virtual machine 3 operate on the hardware 2.
  • the virtual machine system includes a plurality of virtual machines 3.
  • the host OS (operating system or control program) 31, the driver OS 32, and the guest OS 33 are the virtual machines 3, respectively.
  • Each virtual machine 3 is realized by each OS 31 to 33 acquiring the control right of the physical (or real) CPU of the hardware 2 and being executed on the physical CPU.
  • the virtual machine monitor 1 is realized in the same manner.
  • the virtual machine monitor 1 controls the entire virtual machine system.
  • the virtual machine monitor 1 includes a plurality of virtual machines 3, that is, dispatch of OSs 31 to 33 (assignment of control authority of the physical CPU), emulation of privileged instructions executed by the OSs 31 to 33, and hardware 2 such as a physical CPU. Control and so on.
  • One host OS 31 is provided, operates as a virtual machine (domain), and manages the entire virtual machine system.
  • the host OS 31 is activated when the virtual machine system is booted, and controls the driver OS 32 and the guest OS 33 (all controls including starting and stopping).
  • the host OS 31 can also operate as the driver OS 32 at the same time.
  • the host OS 31 includes a console (terminal) 41 such as an input / output device.
  • the driver OS 32 is an OS that controls the physical (or real) input / output devices (I / O devices) 42 and 43.
  • the physical I / O devices 42 and 43 include a plurality of types, such as a magnetic disk device 42 and a network 43.
  • the driver OS 32 is provided for each of a plurality of types of physical I / O devices 42 and 43.
  • the driver OS 32 executes control of the physical I / O devices 42 and 43.
  • the driver OS 32 can also operate on the host OS 31 and the guest OS 33. When the driver OS 32 operates on the guest OS 33, the guest OS 33 appears to be the driver OS 32.
  • the guest OS 33 is an OS that does not have the physical I / O devices 42 and 43.
  • the guest OS 33 may be considered as a normal (so-called) OS.
  • the application program (hereinafter referred to as application) 5 runs on any guest OS 33.
  • the application 5 is a program (application 5) to be tested.
  • the guest OS 33 can execute the I / O command by requesting the driver OS 32 to execute the I / O command.
  • FIG. 2 is a diagram showing an example of a driver configuration in the virtual machine system of FIG.
  • the driver OS 32 includes a backend driver (Backend Driver) 323 and an actual I / O (Input / Output) driver 324.
  • Each of the guest OSs 33 includes a front-end driver 333.
  • the back-end driver 323 is a driver that is provided in the driver OS 32 and passes an I / O command between the driver OS 32 and the guest OS 33.
  • the front-end driver 333 is a driver that is provided in the guest OS 33 and passes an I / O command between the guest OS 33 and the driver OS 32.
  • the guest OS 33 requests the back-end driver 323 to execute an I / O command from the front-end driver 333.
  • the request to execute the I / O instruction is executed via the virtual machine monitor 1. That is, the front end driver 333 requests the virtual machine monitor 1 to request the back end driver 323 to execute an I / O instruction. In response to this, the virtual machine monitor 1 requests the back-end driver 323 to execute the I / O instruction.
  • the real I / O driver 324 is a driver that is provided in the driver OS 32 and executes the I / O command requested to the back-end driver 323 to the physical I / O devices 42 and 43. Thereby, for example, data is read from or written to the magnetic disk device 42. In FIG. 2, the network 43 is not shown.
  • FIG. 3 is a diagram showing an example of the configuration of the virtual machine monitor 1 and the hardware 2.
  • the virtual machine monitor 1 includes a guest OS monitoring unit 11 and a clone creation unit 12.
  • the guest OS monitoring unit 11 includes a monitoring table 111.
  • the hardware 2 includes a physical CPU (not shown) and a memory unit 21.
  • the memory unit 21 includes a plurality of memories 211.
  • the host OS 31 includes a memory unit 311, a log unit 312, and a test progress state control table 313.
  • the guest OS 33 includes a memory unit 331. In FIG. 3, illustration of the back-end driver 323 and the like shown in FIG. 2 is omitted.
  • the guest OS monitoring unit 11 monitors an I / O command execution request from the guest OS 33.
  • the I / O instruction has a predetermined format. Therefore, whether or not it is an I / O command can be known by examining the format of the command from the guest OS 33. Similarly, it can be known whether or not the I / O command is an I / O command (described later) of the console 41. The same applies to whether or not the I / O command is a selection request (described later) from the guest OS 33. Further, the guest OS monitoring unit 11 determines, based on the monitoring table 111, whether the test of the application 5 is started and the test is being performed at that time. The guest OS monitoring unit 11 stores data for identifying whether or not a test is being performed in the monitoring table 111.
  • FIG. 4A shows an example of the table structure of the monitoring table 111.
  • the monitoring table 111 stores data for identifying whether the test is being performed for each test (test name) of the application 5.
  • the data for identifying whether or not the test is being performed is “yes” when the test is being performed, and “no” when the test is not being performed.
  • the guest OS monitoring unit 11 determines that the test of the application 5 is in progress when the test of the application 5 has not started and ended. In this case, the guest OS monitoring unit 11 stores “yes” for the test in the monitoring table 111. In other cases, the guest OS monitoring unit 11 stores “no” for the test in the monitoring table 111. As a result, the guest OS monitoring unit 11 can notify the host OS 31 of the test status of the application 5 of the guest OS 33.
  • the clone creation unit 12 receives a request for creating or deleting a clone of the guest OS 33 from the host OS 31 in the test of the application 5. Thereby, the clone creating unit 12 creates or deletes a clone of the target guest OS 33.
  • the clone means that at a certain point in time, the memory of a certain guest OS 33 (guest OS # 1) is copied to another guest OS 33 (guest OS # 2), and the other guest OS 33 can operate from the same state. (Or make it work).
  • the memory # 1 of the memory unit 21 used by the guest OS # 1 is copied as the memory # 2 used by the guest OS # 2.
  • the guest OS # 2 is a clone of the guest OS # 1.
  • the memory # 1 is a real memory corresponding to the memory unit 331 of the guest OS # 1
  • the memory # 2 is a real memory corresponding to the memory unit 331 of the guest OS # 2.
  • the memory unit 331 of the guest OS # 1 is a virtual memory used by the guest OS # 1. The same applies to the memory unit 331 of the guest OS # 2.
  • the virtual computer monitor 1 assigns a real CPU and a real memory to each virtual machine 3.
  • the memory unit 21 is a real memory for the guest OS 33 to execute the application 5.
  • the memory unit 21 includes a plurality of memories (memory areas) 211.
  • the memory # 1 is a memory area used by the guest OS # 1
  • the memory # 2 is a memory area used by the guest OS # 2.
  • memory # 1 is allocated by the clone creating unit 12 to the application 5 of the guest OS # 1.
  • the memory # 2 is allocated to the application 5 of the guest OS # 2.
  • the clone creating unit 12 releases the memory # 2.
  • the host OS 31 determines whether the I / O command from the guest OS 33 notified from the virtual machine monitor 1 is an I / O command to the console 41. In the case of an I / O command to the console 41, the host OS 31 further determines whether or not the request is a selection request from the guest OS 33 (a request for executing selection of a selector). In the case of a selection request from the guest OS 33, the host OS 31 refers to the test progress state control table 313 and determines whether or not the data for this selection request has been stored.
  • FIG. 4C shows an example of a table structure of the test progress state control table 313.
  • the test progress state control table 313 stores values taken by a plurality of selectors, domain names, and the status of the test for each test case of the test of the application 5. Therefore, when a plurality of test cases (for example, CASE 1 to CASE 8 in FIG. 11) are executed in parallel, a plurality of test progress state control tables 313 are provided.
  • the value taken by the selector is either yes or no.
  • the domain name is the name of a domain (that is, a virtual machine or OS) that is executing (or executing) the application 5.
  • the test status is set to be tested when the test is completed, and is being tested when the test is not completed.
  • the host OS 31 stores the corresponding data in the test progress state control table 313 when the selection request data (selector value) corresponding to the test case has not been stored (if it is an unselected item). On the other hand, when the selection request data has been stored, the host OS 31 does not store the data.
  • the host OS 31 determines whether there is a resource necessary for creating the guest OS 33 clone.
  • the necessary resource refers to a free area that is large enough to copy the memory # 1 of the guest OS # 1 to the memory unit 21.
  • the host OS 31 requests the clone creation unit 12 to create a clone of the guest OS 33 (# 1) when the selection request data is an unselected item and the resource is present.
  • the host OS 31 transmits a response (response indicating which selector is selected) to the guest OS 33 that has made the selection request, and stores a log related to the response (contents of selection items for the selection request). That is, the host OS 31 stores the test result (log) corresponding to the selector of the application 5 in the log unit 312.
  • FIG. 4B shows an example of a log structure stored in the log unit 312.
  • the log unit 312 is a memory for storing a test result (log) corresponding to the selector of the application 5.
  • the log unit 312 stores selection information (select) and result information (result).
  • the selection information stores a value selected as the selector for each test selector of the application 5.
  • the value selected as the selector is set to yes when the selector (or its value, the same applies hereinafter) yes is selected, and is set to no when the selector no is selected.
  • the result information includes a log file (for example, file-1), a packet (network packet-1), a screen (console screen 1), and the like, which are the results of the test.
  • a response other than a selector such as yes or no may be required.
  • the test program requests a character string such as a user ID.
  • a randomly selected character string is returned as in aaa. This is because in a random character string test case, a response requested by the application 5 can be obtained if a character string test of a certain pattern is performed.
  • the host OS 31 requests the clone creation unit 12 to delete the clone.
  • the clone creating unit 12 deletes the guest OS 33 (# 2) that is a clone. Further, after notifying the request for deleting the clone, the host OS 31 reads the log stored in the log unit 312 at that time, and uses the read log as the test result 412 for the physical I / O device (41, 42). Or output to 43) or save.
  • FIG. 4D shows an example of the test result 412 output to the console 41.
  • the test result 412 is output from the log unit 312.
  • the test result 412 includes, for example, a value taken by a plurality of selectors in the test, a file name (for example, file1: aa.aa.bb.cc) that stores a test result at the time when the selector is executed. including.
  • the host OS 31 edits the log unit 312 by a predetermined process and outputs it as a test result 412.
  • the guest OS 33 When the guest OS 33 starts the test of the application 5 as described above, the guest OS 33 notifies the virtual machine monitor 1 of the test start. After the test start notification, the guest OS 33 executes an I / O command for requesting selection to the console 41. The guest OS 33 that has received a response to the selection request from the host OS 31 executes the response content (selector selection content) on the application 5.
  • the guest OS 33 (# 2) that is a clone receives this response
  • the guest OS 33 that is the clone that has received this response executes the response content. Thereafter, the guest OS 33 repeats the same operation, and when the test is completed, notifies the host OS 31 of the completion of the test of the application 5.
  • the host OS 31 that has received this test completion notification requests the clone creation unit 12 to delete the guest OS 33 (# 2) that is a clone.
  • the clone creating unit 12 releases the memory # 2 of the memory unit 21.
  • the guest OS 33 that is a clone is deleted.
  • the clone creation unit 12 of the virtual machine monitor 1 creates a clone that is a copy of the guest OS 33.
  • a clone of the guest OS # 1 can be created by copying the memory # 1 of the guest OS # 1 to the memory # 2 of the other guest OS # 2.
  • the guest OS monitoring unit 11 of the virtual machine monitor 1 monitors the guest OS 33.
  • the guest OS monitoring unit 11 detects this when the guest OS 33 requests the host OS 31 to select a condition in the test of the application 5 via the virtual machine monitor 1.
  • the clone creating unit 12 creates a clone when the selection of the condition is requested. The selection of the condition is requested via the virtual machine monitor 1.
  • the guest OS # 1 and the guest OS # 2 that is the created clone execute the test of the application 5.
  • the guest OS # 1 and the guest OS # 2 which is a clone request the driver OS 32 executing the input / output command to execute the I / O command via the virtual machine monitor 1, and log the log. It is executed by recording.
  • the guest OS monitoring unit 11 of the virtual machine monitor 1 traps (or copies) an I / O command from the guest OS # 1 and the guest OS # 2 that is a clone to the driver OS32 and notifies the host OS31 of it. To do.
  • the host OS 31 that has received this notification requests the clone creation unit 12 of the virtual machine monitor 1 to create a clone when there is an area for creating a clone in the memory unit 21.
  • the clone creating unit 12 of the virtual machine monitor 1 creates a clone.
  • FIG. 5 is a diagram showing the selection monitoring requested by the application 5 on the guest OS 33 and the response of the host OS 31.
  • the guest OS 33 notifies the virtual machine monitor 1 of the test start of the application 5 (processing # 1-0-1). After receiving the test start notification of the guest OS 33, the virtual machine monitor 1 stores the test start notification information in the monitoring table 111 (processing # 1-0-2).
  • the guest OS 33 outputs an I / O command that is a request for selecting a test program (application 5) to the console 41 (processing # 1-1).
  • the virtual machine monitor 1 monitors the I / O command from the guest OS 33 to the console 41 and, when determining that the test has started, notifies the host OS 31 that the test has been started (Process # 1-2). ).
  • the I / O instruction is simply expressed as IO (the same applies to FIGS. 6 to 8).
  • the host OS 31 determines whether or not the I / O command notified from the virtual machine monitor 1 is an I / O command to the console 41 (processing # 1-3). When the I / O command is an I / O command output to the console 41, the host OS 31 further determines whether or not it is a selection request from the guest OS 33 (processing # 1-4).
  • the host OS 31 When the host OS 31 is a selection request from the guest OS 33, the host OS 31 updates the data of the selected item in the test progress state control table 313 (processing # 1-5-1). Specifically, the host OS 31 updates “testing” for the “situation” item for the corresponding test case from the test progress state control table 313.
  • the host OS 31 selects a selection item (unselected item) (processing # 1-5-2). After determining the value of the selector of the selection item, the host OS 31 updates the data in the test progress state control table 313 to the determined value (processing # 1-6).
  • the host OS 31 responds to the guest OS 33 with the value of the selection item selector (processing # 1-7).
  • the host OS 31 saves the log of the selector value that has responded and the log information other than the selector in the log unit 312 (process # 1-8 and process # 1-9).
  • the guest OS 33 receives the response from the host OS 31, and continues the test using the responded selector (processing # 1-10).
  • FIG. 6 is a diagram for explaining the operation of creating a clone and executing a test in parallel when a selection request requested by the guest OS 33 is requested.
  • the guest OS 33 transmits, for example, an I / O command to the host OS 31, that is, a selection request to the console 41 (processing # 2-1).
  • the guest OS monitoring unit 11 of the virtual machine monitor 1 that monitors the guest OS 33 detects this and notifies the host OS 31 (process # 2-2).
  • the host OS 31 that has received this notification determines whether or not there is a resource in the memory unit 21 that creates a clone of the guest OS 33 (processing # 2-3), and if there is a resource, creates a clone of the virtual machine monitor 1 Requests the section 12 to create a clone (processing # 2-4).
  • the clone creating unit 12 creates a guest OS 33 (# 2) that is a clone of the guest OS 33 (# 1) (processing # 2-5).
  • the host OS 31 In response to the selection request, the host OS 31 returns, for example, the selector A as a response to the guest OS 33 (# 1) (processing # 2-6). In response to the selection request, the host OS 31 returns, for example, the selector B as a response to the guest OS 33 (# 2) (processing # 2-7). Further, the host OS 31 stores the selectors A and B sent back to the guest OS 33 as a log in the log unit 312 (processing # 2-8).
  • the selector A corresponds to the selector 4111 (yes), and the selector B corresponds to the selector 4112 (no).
  • the guest OS 33 (# 1) is the guest OS 33 that originally exists.
  • the guest OS 33 (# 1) may be generated by selecting the selector A.
  • the guest OS 33 (# 2) is a clone of the guest OS 33 (# 1) generated by the selection of the selector B.
  • FIG. 6 shows the case where the process # 2-6 and the process # 2-7 are executed continuously in parallel for convenience. However, the process # 2-6 and the process # 2-7 may be individually executed as necessary.
  • the guest OS 33 (# 1) executes the selector A (process # 2-9), and the guest OS 33 (# 2) that is a clone executes the selector B (process # 2-10).
  • FIG. 7 is a diagram for explaining the operation in which the host OS 31 logs the output result of the application 5.
  • the guest OS 33 transmits an I / O command other than the selection request to the console 41 (processing # 3-1).
  • the guest OS monitoring unit 11 detects this and notifies the host OS 31 (process # 3-2). Receiving this notification, the host OS 31 logs an output result corresponding to the selector in the log unit 312 (processing # 3-3).
  • the guest OS 33 When the test is completed (process # 3-4), the guest OS 33 notifies the host OS 31 of this. Receiving this notification, the host OS 31 requests the clone creation unit 12 to delete the clone (processing # 3-5-1).
  • the clone creating unit 12 deletes the guest OS 33 (# 2) that is a clone of the guest OS 33 (# 1) (processing # 3-5-2).
  • the host OS 31 reads the log stored at that time (process # 3-6), and outputs the selector and the result as a report (process # 3-7).
  • Step S11 corresponds to, for example, process # 1-0-1.
  • the virtual machine monitor 1 that has received this notification stores the test start information of the guest OS 33 that has received the notification in the guest OS monitoring unit 11 (step S12).
  • Step S12 corresponds to, for example, process # 1-0-2.
  • the guest OS monitoring unit 11 stores, in the monitoring table 111, data (yes) for identifying whether the test is being performed for each test.
  • the virtual machine monitor 1 notifies the host OS 31 of the start of the test.
  • the host OS 31 receives this notification, the host OS 31 generates a log unit 312 in FIG. 4B and a test progress state control table 313 in FIG.
  • the log unit 312 the number of selectors and the number of result information are one, and each item is empty.
  • the test progress state control table 313 the number of test cases is one and each item is empty.
  • the guest OS 33 executes an I / O command for the host OS 31 or the driver OS 32 (step S13).
  • Step S13 corresponds to, for example, processes # 1-1, # 2-1 and # 3-1.
  • the guest OS 33 requests the virtual machine monitor 1 to request the host OS 31 or the driver OS 32 to execute the I / O instruction.
  • the virtual machine monitor 1 determines whether or not the test has been started based on the monitoring table 111 (step S14).
  • Step S14 corresponds to, for example, process # 1-2. If the test has been started, the virtual machine monitor 1 traps (copies) the I / O command from the guest OS 33 and notifies the host OS 31 of the trapped I / O command (step S15).
  • Step S15 corresponds to, for example, processing # 1-2, # 2-2, and # 3-2. If the test has not been started, the virtual machine monitor 1 ends the process.
  • the host OS 31 determines whether the notified I / O command is an I / O command of the console 41 (step S16). Step S16 corresponds to, for example, process # 1-3. If it is an I / O command for the console 41, the host OS 31 further determines whether or not the I / O command is a selection request from the guest OS 33 (step S17). Step S17 corresponds to, for example, process # 1-4.
  • step S18 If the notified I / O command is not an I / O command of the console 41 in step S16, the host OS 31 saves the log in the result information (result) of the log unit 312 as a test result (step S18). Even when the I / O command is not a selection request from the guest OS 33 in step S17, the host OS 31 executes step S18. After execution of step S18, the virtual machine monitor 1 repeats the processing from step S15. Step S18 corresponds to, for example, processing # 1-9 and # 3-3.
  • the host OS 31 determines whether the selection request selector from the guest OS 33 has been stored in the test progress state control table 313 (step S17). S19). If not already stored, the host OS 31 adds a corresponding selector to the test progress state control table 313 for each test case (step S20). Steps S19 and S20 correspond to, for example, process # 1-5-1. If already stored, step S20 is omitted.
  • the selector 1 (value) and the selector 2 (value) are stored, and the selector 3 (value) is not stored. That is, in the test progress state control table 313, the “continuation of the selector” field is empty. Further, it is assumed that the first test case CASE1 is not tested and is being tested.
  • the processing of the guest OS 33 (# 1) proceeds, and a selection request for the selector 3 is issued from the guest OS 33 (# 1), that is, guest 1 to the console 41. Since the selector 3 is not stored, the host OS 31 adds data in the test progress state control table 313 as follows.
  • the selection request requests selection of either yes or no. Based on this, it can be seen that the selector 3 takes two values, yes or no.
  • the other guest OS 33 will process. Therefore, a blank line is inserted between the first test case CASE1 and the second test case CASE2, and a copy of the data of the first test case CASE1 at that time is stored in the blank line.
  • a row inserted between the first test case CASE1 and the second test case CASE2 is set as a new second test case CASE2.
  • the second test case CASE2 up to that point is the third test case CASE3 (the same applies to others).
  • new second, fourth, sixth and eighth test cases CASE2, CASE4, CASE6 and CASE8 (hereinafter referred to as “new test cases”) are created, and the first to eighth test cases CASE1 are created.
  • new test cases are created, and the first to eighth test cases CASE1 are created.
  • ⁇ CASE8 exists.
  • the host OS 31 newly generates a log unit 312 corresponding to the “new test case”, and similarly to the test progress state control table 313, the value of the selector selected so far. Is described. For example, a new log unit 312 is generated for the new second test case CASE2 described above, and a copy of the log unit 312 of the first test case CASE1 is stored therein. At this time, for example, a selector 3, that is, select3 is added and its value no is stored. Further, in the log unit 312 of the first test case CASE1, the selector, that is, select3 is added, and the value yes is stored. The same applies to other cases.
  • Step S21 corresponds to process # 2-3, for example. For example, it is determined whether there is a resource for creating a clone for executing all of the above-mentioned “new test cases”. If there is no resource, the host OS 31 waits for a predetermined time (step S22), and then repeats step S21. The host OS 31 checks whether or not it is necessary to create a clone of the guest OS 33 (whether “new test case” exists) at the start of step S21. If it is necessary to create it, step S21 is continued. If it is not necessary to create it, steps S21 to S25 are omitted.
  • Step S23 corresponds to process # 2-4, for example.
  • the virtual machine monitor 1 that has received this request instructs the clone creation unit 12 to create a clone of the target guest OS 33.
  • the clone creating unit 12 creates a clone of the target guest OS 33 in the free area of the memory unit 21 (step S24).
  • Step S24 corresponds to process # 2-5, for example. Thereby, for example, for each “new test case”, a clone for executing this is created.
  • Step S25 when the host OS 31 receives a clone creation notification from the virtual machine monitor 1, in the test progress state control table 313, select a test case whose “status” is “not tested” (hereinafter referred to as an unselected item). (Step S25), the selected unselected item is updated (Step S26).
  • Step S25 corresponds to, for example, process # 1-5-2.
  • Step S26 corresponds to process # 1-6, for example.
  • step S26 the “situation” of the selected unselected item is changed from “not tested” to “under test”, and “execution domain name” is the name of the guest OS 33 that executes the test case.
  • This guest OS 33 is basically a clone of the guest OS 33 created in step S24. However, as shown in FIG. 4C, for example, when the first test case CASE1 has been tested, the guest OS 33 (guest1) that executed the first test case CASE1 is caused to execute another test case CASE3. May be.
  • Step S27 corresponds to processes # 1-7 and # 2-6, for example.
  • Step S28 corresponds to process # 2-7, for example.
  • step S30 corresponds to, for example, processing # 1-10, # 2-9, and # 2-10.
  • FIG. 10 is an output processing flow of the test result in the virtual machine system of FIG.
  • the guest OS 33 notifies the host OS 31 of the test end for the application 5 executed on the guest OS 33 via the virtual machine monitor 1 (step S31).
  • Step S31 corresponds to process # 3-4, for example. This notification is performed when the test for the application 5 is completed.
  • Step S32 corresponds to, for example, processing # 3-5-1 and # 3-5-2.
  • the clone creation unit 12 that has received an instruction from the virtual machine monitor 1 releases the memory 211 related to the clone in the memory unit 21 of the hardware 2.
  • the virtual machine monitor 1 stores in the guest OS monitoring unit 11 information on the completion of the test of the guest OS 33 that has received the notification. That is, the guest OS monitoring unit 11 stores, in the monitoring table 111, data (no) that identifies whether a test is being performed for each test.
  • Step S33 the host OS 31 reads the log stored in the log unit 312 until that time for the test case executed for the application 5 (step S33), and outputs the read log to the console 41 as a test result, for example.
  • Step S34 a test result 412 shown in FIG. 4D is obtained.
  • Step S33 corresponds to process # 3-6, for example.
  • Step S33 corresponds to process # 3-7, for example.
  • FIG. 11 is a diagram showing an operation when an application test is executed.
  • FIG. 11 shows a display screen 411 on the console when the application 5 operating on the OS of the virtual machine system is tested.
  • the display screen 411 is displayed on the console 41 to the operator who tests the application 5.
  • the first selection screen (Select1) is displayed to the operator. In this case, the operator selects the selector 4111 (yes) or the selector 4112 (no) requested by the application 5.
  • the selection request of the selector is notified from the guest OS 33 (# 1) executing the application 5 to the host OS 31 via the virtual machine monitor 1. Therefore, in the virtual machine monitor 1, the clone creation unit 12 creates a guest OS # 2 that is a clone of the guest OS # 1.
  • the operator selects the selector (yes / no) of the second selection screen (Select 2-1 or Select 2-2), and selects any of the third selection screens (Select 3-1 to 3-4). Or a single selector (yes / no). Each time the selector is selected, a clone of the guest OS 33 at that time is created.
  • the clone creating unit 12 creates the guest OS # 2 by copying the guest OS # 1 at the time when the selection is requested. As a result, there are two guest OSs 33 in the same state. Thereby, an application 5 (corresponding to the selection screen Select2-1) including the selector yes in the selection screen Select1 as a condition and an application 5 (corresponding to the selection screen Select2-2) including the selector no as a condition are: Both can be implemented. This execution may be executed in parallel.
  • the first test case CASE1 is a combination in which the operator selects yes on the selection screen Select1, selects yes on the selection screen Select2-1, and selects yes on the selection screen Select3-1.
  • the selection screen Select2-1 is a selection screen when “yes” is selected on the selection screen Select1 (the same applies to others). The same applies to the second test case CASE2.
  • a clone of the guest OS 33 when the selection of the guest OS 33 is requested, a clone of the guest OS 33 can be created and a test can be executed in parallel with the created clone. For this reason, it is not necessary to repeat the test from the first condition for each test case. As a result, the test time for the application 5 can be greatly shortened. Further, for example, in the case where there is a bug that occurs only when the application 5 is started for the first time, a clone before the completion of the first selection test of the application 5 is created. For this reason, the first test can be repeatedly performed. This makes it easy to detect bugs that occur only at the first startup. Therefore, also from this point, the reliability of the test of the application 5 and the efficiency of the test can be realized.

Abstract

 仮想計算機システムは、ハードウェア2と、各々がCPU上で動作するプログラムを備える複数の仮想計算機3と、複数の仮想計算機3の制御を行う仮想計算機モニタ1とを備える。このテスト方法において、アプリケーションのテストを実行するゲストOS33が、アプリケーションのテストにおける条件の選択を、仮想計算機モニタ1を介して、仮想計算機システムを制御するホストOS31に要求する。仮想計算機モニタ1が、条件の選択が要求された場合、ゲストOS33の複製であるクローンを作成する。ゲストOS33及び作成されたクローンが、アプリケーションのテストを実行する。

Description

仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム
 本発明は、仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システムに関し、特に、アプリケーションを実行する仮想計算機上で動作するアプリケーションのテストを、短時間で効率良く高い信頼性で実行することができる仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システムに関する。
 仮想計算機システムは、OS(オペレーティングシステム)により構成される複数の仮想計算機を備える。複数の仮想計算機には、各々、特定の役割が割り当てられる。アプリケーションプログラム(以下、アプリケーションという)を実行する仮想計算機即ちOSは、ゲストOSと呼ばれる。ゲストOS上で動作するアプリケーションについては、それが正しく動作するか否かについて、出荷前にテストする必要がある。
 なお、計算機システムの自動テスト方式において、被テスト計算機が実計算機の場合だけでなく、仮想計算機の場合もテスト環境として存在させ、どちらの場合でも自動テストを実行する手段を備えることが提案されている。
 また、シミュレーション処理を使用するクラスタ間の相互作用のシステム・オン・チップの設計検証の方法及びシステムにおいて、既知のシーケンスに依存するテストケースを作成するステップと、テストケースを既知の点に到達するまで親プロセッサ上で実行するステップを含む方法及びシステムが提案されている。
 更に、計算機プログラム部品のテスト支援装置において、テストケース記憶手段により記憶されたテストケースに基づいて、テスト状況を集計するテスト状況集計手段と、テスト状況を報知するテスト状況報知手段を備えることが提案されている。
特開平4-195436号公報 特開2007-164781号公報 特開平9-69056号公報
 図12は、本発明者が検討した仮想計算機システムにおけるアプリケーションのテストについての説明図である。
 ゲストOS上で動作するアプリケーションのテストは、想定される種々の条件を選択的に組み合わせて、網羅的にテストすることが望ましい。そこで、例えば、ゲストOS上で動作するアプリケーションのテストは、アプリケーションが要求する選択子(選択肢)に応じて、テストを実行するオペレータが、選択を繰り返す。これにより、想定される種々の条件を選択的に組み合わせて、当該条件の下でのテスト(組み合わせテスト)を実行する。
 例えば、仮想計算機システムのOS上で動作するアプリケーションのテスト時に、図12に示すように、コンソール上での表示画面911が、アプリケーションをテストするオペレータに対して表示される。例えば、アプリケーションの開始の表示画面911(Start)が表示された後に、第1の選択画面(Select1)が表示される。この場合、オペレータは、アプリケーションが要求する選択子9111(yes)又は選択子9112(no)の選択を行う。以下、同様にして、オペレータは、第2の選択画面(Select2-1又はSelect2-2)の選択子(yes/no)を選択し、第3の選択画面(Select3-1~3-4のいずれか一つ)の選択子(yes/no)を選択する。
 第1のテストケースCASE1は、オペレータが選択画面Select1でyesを選択し、選択画面Select2-1でyesを選択し、選択画面Select3-1でyesを選択した組合せであり、当該組合せによるテストである。選択画面Select2-1は、選択画面Select1でyesを選択した場合の選択画面である(他も同様である)。第2のテストケースCASE2等も、同様である。
 この場合、全てのケースについてのテストを実施するには、選択が3回行われるので、合計で8種類のテストケース(CASE1~CASE8に対応)を実施する必要がある。このように、全てのケースについてのテスト(網羅テスト)を実行しようとする場合、本発明者の検討によれば、以下に示す問題がある。
 即ち、第1に、条件が1つ増える毎にテストケースが倍になる。このため、条件の数が多ければ莫大なテストケースが生じ、また、オペレータによる選択を繰り返すために多大な時間を要する。第2に、オペレータにより条件を選択する場合、テスト漏れが発生する可能性があり、テストの信頼性を低下させる要因となる。第3に、網羅テストを自動化した場合、テスト漏れを防止することはできるが、個々のテストケース毎に最初の条件からテストをやり直す必要があり、テストの効率が悪くなる。
 本発明は、アプリケーションを実行する仮想計算機上で動作するアプリケーションのテストを、短時間で効率良く高い信頼性で実行することができる仮想計算機システムのテスト方法、テストプログラム及びその記録媒体を提供することを目的とする。
 また、本発明は、アプリケーションを実行する仮想計算機上で動作するアプリケーションのテストを、短時間で効率良く高い信頼性で実行することができる仮想計算機システムを提供することを目的とする。
 本発明の一実施態様である仮想計算機システムのテスト方法は、CPUとメモリとを含むハードウェアと、各々が前記CPU上で動作するプログラムを備える複数の仮想計算機と、前記複数の仮想計算機の制御を行う仮想計算機モニタとを備える仮想計算機システムのテスト方法である。このテスト方法は、アプリケーションのテストを実行する第1の仮想計算機が、アプリケーションのテストにおける条件の選択を、仮想計算機モニタを介して、仮想計算機システムを制御する第2の仮想計算機に要求するステップと、仮想計算機モニタが、条件の選択が要求された場合、第1の仮想計算機の複製であるクローンを作成するステップと、第1の仮想計算機及び前記作成されたクローンが、アプリケーションのテストを実行するステップとを含む。
 本発明の一実施態様である仮想計算機システムのテストプログラムは、仮想計算機システムにおいて実行されて、前述の仮想計算機システムのテスト方法を実現する。
 本発明の一実施態様である仮想計算機システムのテストプログラムの記録媒体は、前述の仮想計算機システムのテストプログラムを提供する。
 本発明の一実施態様である仮想計算機システムは、前述の仮想計算機システムのテスト方法を実現する構成を備える。
 本発明の一実施態様である仮想計算機システムのテスト方法によれば、テストにおける条件の選択が要求された場合、第1の仮想計算機の複製であるクローンが作成され、この後、第1の仮想計算機及び作成されたクローンの双方がテストを実行する。これにより、テストの条件が増えてテストケースが増えたとしても、オペレータによる条件の選択を不要とすることができるので、このための時間を省略してテスト時間を短縮し、テスト漏れを防止してテストの信頼性を向上することができる。また、テストケースが増えたとしても、個々のテストケース毎に最初の条件からテストをやり直す必要がないので、テストを効率良く行うことができる。
 本発明の一実施態様である仮想計算機システムのテストプログラム及びその記録媒体によれば、前述の仮想計算機システムのテスト方法を実現し、前述の効果を得ることができる。
 本発明の一実施態様である仮想計算機システムによれば、前述の仮想計算機システムのテスト方法を実現し、前述の効果を得ることができる。
仮想計算機システムの構成の一例を示す図である。 仮想計算機システムの構成の一例を示す図である。 仮想計算機システムの構成の一例を示す図である。 監視テーブル、ログデータ及び制御テーブルの構造の一例を示す図である。 仮想計算機システムの動作を説明する図である。 仮想計算機システムの動作を説明する図である。 仮想計算機システムの動作を説明する図である。 図1の仮想計算機システムにおけるテスト処理フローである。 図1の仮想計算機システムにおけるテスト処理フローである。 図1の仮想計算機システムにおけるテスト結果出力処理フローである。 テスト実行時の動作を示す図である。 本発明者が検討した仮想計算機システムの説明図である。
符号の説明
  1  仮想計算機モニタ
  2  ハードウェア
  3  仮想計算機
  5  アプリケーション
  11  ゲストOS監視部
  12  クローン作成部
  21、311、331  メモリ部
  31  ホストOS
  32  ドライバOS
  33  ゲストOS
  41  コンソール
  42  磁気ディスク装置
  43  ネットワーク
  111  監視テーブル
  312  ログ部
  313  テスト進行状態制御テーブル
  323  バックエンドドライバ
  324  実I/Oドライバ
  333  フロントエンドドライバ
 図1は、この仮想計算機システムの構成の一例を示す図である。仮想計算機システムは、仮想計算機モニタ(VMM:Virtual Machine Monitor 又はHypervisor)1、ハードウェア2、複数の仮想計算機(VM:Virtual Machine )3を備える。ハードウェア2上で仮想計算機モニタ1及び仮想計算機3が動作する。
 仮想計算機システムは、複数の仮想計算機3を備える。即ち、ホストOS(オペレーティングシステム即ち制御プログラム)31、ドライバOS32、ゲストOS33が、各々、仮想計算機3である。各々の仮想計算機3は、各々のOS31~33がハードウェア2の物理(又は実)CPUの制御権を獲得して当該物理CPU上で実行されることにより実現される。仮想計算機モニタ1も同様にして実現される。
 仮想計算機モニタ1は、この仮想計算機システムの全体を制御する。即ち、仮想計算機モニタ1は、複数の仮想計算機3、即ち、OS31~33のディスパッチ(物理CPUの制御権の割当て)、OS31~33が実行する特権命令のエミュレーション、物理CPU等のハードウェア2の制御等を行う。
 ホストOS31は、1個設けられ、仮想計算機(ドメイン)として動作し、仮想計算機システム全体の管理を行う。ホストOS31は、仮想計算機システムのブート時に起動され、ドライバOS32やゲストOS33の制御(起動及び停止等を含む全ての制御)を行う。ホストOS31は、同時に、ドライバOS32としても動作可能である。ホストOS31は、入出力装置等のコンソール(端末)41を備える。
 ドライバOS32は、物理(又は実)入出力装置(I/O装置)42、43を制御するOSである。物理I/O装置42、43は、複数の種類、例えば磁気ディスク装置42、ネットワーク43等を備える。ドライバOS32は、複数の種類の物理I/O装置42、43毎に、設けられる。物理I/O装置42、43の制御はドライバOS32が実行する。ドライバOS32は、ホストOS31上やゲストOS33上でも動作可能である。ドライバOS32がゲストOS33上で動作する場合、そのゲストOS33は、見かけ上ドライバOS32となる。
 ゲストOS33は、物理I/O装置42、43を持たないOSである。ゲストOS33は、通常の(いわゆる)OSと考えてよい。例えば、アプリケーションプログラム(以下、アプリケーション)5は、いずれかのゲストOS33上で動作する。アプリケーション5は、テストの対象となるプログラム(アプリケーション5)である。ゲストOS33は、ドライバOS32に対してI/O命令の実行を依頼することにより、そのI/O命令の実行が可能となる。
 図2は、図1の仮想計算機システムにおけるドライバの構成の一例を示す図である。ドライバOS32は、バックエンドドライバ(Backend Driver)323、実I/O(Input/Output)ドライバ324を備える。ゲストOS33は、各々、フロントエンドドライバ(Frontend Driver)333を備える。
 バックエンドドライバ323は、ドライバOS32に設けられ、ドライバOS32とゲストOS33間でI/O命令を受け渡すドライバである。フロントエンドドライバ333は、ゲストOS33に設けられ、ゲストOS33とドライバOS32間でI/O命令を受け渡すドライバである。
 例えば、ゲストOS33は、フロントエンドドライバ333からバックエンドドライバ323へI/O命令の実行を依頼する。このI/O命令の実行の依頼は、仮想計算機モニタ1を介して実行される。即ち、フロントエンドドライバ333は、仮想計算機モニタ1にバックエンドドライバ323へI/O命令の実行を依頼するように要求する。これに応じて、仮想計算機モニタ1は、バックエンドドライバ323へ当該I/O命令の実行を依頼する。
 実I/Oドライバ324は、ドライバOS32に設けられ、物理I/O装置42、43に対して、バックエンドドライバ323へ依頼された当該I/O命令を実行するドライバである。これにより、例えば磁気ディスク装置42からデータが読み出され、又は、データが書き込まれる。なお、図2においては、ネットワーク43の図示を省略している。
 図3は、仮想計算機モニタ1及びハードウェア2の構成の一例を示す図である。
 仮想計算機モニタ1は、ゲストOS監視部11、クローン作成部12を備える。ゲストOS監視部11は、監視テーブル111を備える。ハードウェア2は、物理CPU(図示省略)、メモリ部21を備える。メモリ部21は、複数のメモリ211を備える。ホストOS31は、メモリ部311、ログ部312、テスト進行状態制御テーブル313を備える。ゲストOS33は、メモリ部331を備える。なお、図3において、図2に示すバックエンドドライバ323等の図示は省略している。
 ゲストOS監視部11は、ゲストOS33からのI/O命令の実行の依頼について監視を行う。I/O命令は所定のフォーマットを備える。従って、I/O命令か否かは、ゲストOS33からの命令のフォーマットを調べることにより知ることができる。I/O命令がコンソール41のI/O命令(後述する)であるか否かも、同様に、知ることができる。I/O命令がゲストOS33からの選択要求(後述する)であるか否かも、同様である。また、ゲストOS監視部11は、監視テーブル111に基づいて、アプリケーション5のテストが開始されてその時点でテスト中であるか否かを判定する。ゲストOS監視部11は、監視テーブル111に、テスト中であるかどうかを識別するデータを格納する。
 図4(A)は、監視テーブル111のテーブルの構造の一例を示す。監視テーブル111は、アプリケーション5のテスト(テスト名)毎に、テスト中であるかどうかを識別するデータを格納する。テスト中かどうかを識別するデータは、テスト中である場合にはyesとされ、テスト中でない場合にはnoとされる。
 即ち、ゲストOS監視部11は、アプリケーション5のテストが開始されて終了していなければ、テスト中と判断する。この場合、ゲストOS監視部11は、監視テーブル111において、そのテストについて「yes」を格納する。また、これ以外の場合、ゲストOS監視部11は、監視テーブル111において、そのテストについて「no」を格納する。これにより、ゲストOS監視部11は、ホストOS31に対して、ゲストOS33のアプリケーション5のテストの状態を通知することができる。
 クローン作成部12は、アプリケーション5のテストにおいて、ホストOS31からゲストOS33のクローンの作成又は削除の要求を受信する。これにより、クローン作成部12は、対象となるゲストOS33のクローンの作成又は削除を行う。
 ここで、クローンとは、ある時点において、あるゲストOS33(ゲストOS#1)のメモリを他のゲストOS33(ゲストOS#2)にコピーし、同一の状態から他のゲストOS33が動作し得るようにする(又は、動作させる)ことをいう。 例えば、ゲストOS#1の使用するメモリ部21のメモリ#1が、ゲストOS#2の使用するメモリ#2としてコピーされる。この場合、ゲストOS#2は、ゲストOS#1のクローンである。メモリ#1はゲストOS#1のメモリ部331に対応する実メモリであり、メモリ#2はゲストOS#2のメモリ部331に対応する実メモリである。ゲストOS#1のメモリ部331は、ゲストOS#1が使用する仮想メモリである。ゲストOS#2のメモリ部331も同様である。
 ハードウェア2において、仮想計算機モニタ1により、実CPU及び実メモリが、各々の仮想計算機3に割当てられる。メモリ部21は、ゲストOS33がアプリケーション5を実行するための実メモリである。メモリ部21は、複数のメモリ(メモリ領域)211を含む。
 メモリ#1はゲストOS#1の使用するメモリ領域であるものとし、メモリ#2はゲストOS#2の使用するメモリ領域であるものとする。例えば、ゲストOS#1のアプリケーション5には、クローン作成部12により、メモリ#1が割当てられる。同様にして、ゲストOS#2のアプリケーション5には、メモリ#2が割当てられる。クローンであるゲストOS#2の削除において、クローン作成部12により、メモリ#2が開放される。
 ホストOS31は、仮想計算機モニタ1から通知される、ゲストOS33からのI/O命令がコンソール41へのI/O命令であるか否かを判定する。ホストOS31は、コンソール41へのI/O命令である場合、更に、ゲストOS33からの選択要求(選択子の選択を実行する要求)か否かを判定する。ゲストOS33からの選択要求の場合、ホストOS31は、テスト進行状態制御テーブル313を参照して、この選択要求のデータが格納済みか否かを判定する。
 図4(C)は、テスト進行状態制御テーブル313のテーブルの構造の一例を示す。テスト進行状態制御テーブル313は、アプリケーション5のテストのテストケース毎に、複数の選択子の取った値と、ドメイン名と、当該テストの状況とを格納する。従って、複数のテストケース(例えば、図11のCASE1~CASE8)が並列に実行される場合、複数のテスト進行状態制御テーブル313が設けられる。選択子の取った値は、yes又はnoとされる。ドメイン名は、当該アプリケーション5を実行している(又は、実行した)ドメイン(即ち、仮想計算機又はOS)の名前である。テストの状況は、テストが終了した場合にはテスト済とされ、テストが終了していない場合にはテスト中とされる。
 ホストOS31は、テスト進行状態制御テーブル313に、当該テストケースに対応する選択要求のデータ(選択子の値)が格納済みでない場合(未選択項目である場合)、該当データを格納する。一方、ホストOS31は、当該選択要求のデータが格納済みである場合、当該データを格納しない。
 更に、ホストOS31は、当該選択要求のデータが未選択項目である場合、ゲストOS33のクローンを作成するために必要な資源があるか否かを判定する。ここで、必要な資源とは、メモリ部21に、ゲストOS#1のメモリ#1をコピーできる大きさの空き領域をいう。ホストOS31は、当該選択要求のデータが未選択項目で、かつ、前記資源がある場合、ゲストOS33(#1)のクローンの作成を、クローン作成部12に依頼する。
 一方、ホストOS31は、選択要求を行ったゲストOS33に対する応答(いずれの選択子を選択するかの返答)を送信し、その応答に関するログ(選択要求に対する選択項目の内容)を記憶する。即ち、ホストOS31は、アプリケーション5の選択子に対応したテスト結果(ログ)をログ部312へ記憶する。
 図4(B)は、ログ部312に記憶されるログの構造の一例を示す。ログ部312は、アプリケーション5の選択子に対応したテスト結果(ログ)を記憶するためのメモリである。ログ部312は、選択情報(select)と、結果情報(result)とを格納する。選択情報は、アプリケーション5のテストの選択子毎に、当該選択子として選択された値を格納する。選択子として選択された値は、選択子(又はその値、以下同じ)yesが選択された場合にはyesとされ、選択子noが選択された場合にはnoとされる。結果情報は、当該テストの結果であるログファイル(例えば、file-1)、パケット(network packet-1)、画面(console screen 1)等を含む。
 なお、yes又はnoのような選択子以外の応答が必要な場合がある。例えば、ユーザIDなどの文字列をテストプログラムが要求する場合である。このようなテストケースの場合、aaaのように、ランダムに選択した文字列を応答するものとする。これは、ランダムな文字列のテストケースにおいては、ある1個のパターンの文字列のテストが実施されれば、アプリケーション5が要求する応答が得られるためである。
 一方、ホストOS31は、ゲストOS33のテストが完了すると、クローンの削除をクローン作成部12へ要求する。この要求を受信したクローン作成部12は、クローンであるゲストOS33(#2)の削除を実行する。更に、ホストOS31は、クローンの削除依頼の要求の通知後、その時点でログ部312に格納されているログを読込み、読み込んだログを、テスト結果412として、物理I/O装置(41、42又は43)等へ出力、又は、保存する。
 図4(D)は、コンソール41へ出力されるテスト結果412の例を示す。テスト結果412は、ログ部312が出力されたものである。テスト結果412は、例えば、当該テストにおいて、複数の選択子の取った値と、当該選択子を実行した時点におけるテスト結果を格納するファイル名(例えば、file1:aa.aa.bb.cc)とを含む。なお、ホストOS31は、ログ部312を予め定められた処理により編集して、テスト結果412として出力する。
 ゲストOS33は、以上のようなアプリケーション5のテストを開始した場合、仮想計算機モニタ1にテスト開始を通知する。テスト開始の通知後、ゲストOS33は、コンソール41へ選択要求のI/O命令を実行する。ホストOS31から選択要求に対する応答を受信したゲストOS33が、その応答内容(選択子の選択内容)をアプリケーション5に対して実行する。
 即ち、クローンであるゲストOS33(#2)がこの応答を受信した場合、この応答を受信したクローンであるゲストOS33がその応答内容を実行する。これ以後、ゲストOS33は、同様な動作を繰り返し、テストが完了した場合、ホストOS31に対してアプリケーション5のテストの完了の通知を行う。
 このテスト完了通知を受信したホストOS31は、クローン作成部12に対してクローンであるゲストOS33(#2)の削除を依頼する。これに応じて、クローン作成部12が、メモリ部21のメモリ#2を解放する。この結果、クローンであるゲストOS33は削除される。
 以上のように、この例においては、仮想計算機モニタ1のクローン作成部12は、ゲストOS33の複製であるクローンを作成する。例えば、前述したように、ゲストOS#1のメモリ#1を他のゲストOS#2のメモリ#2にコピーすることにより、ゲストOS#1のクローンを作成することができる。
 クローンの作成は、所定の場合に実行される。このために、仮想計算機モニタ1のゲストOS監視部11は、ゲストOS33を監視する。そして、ゲストOS監視部11は、ゲストOS33が、アプリケーション5のテストにおける条件の選択を、仮想計算機モニタ1を介して、ホストOS31に要求した場合、これを検出する。この検出に基づいて、クローン作成部12が、前記条件の選択が要求された場合、クローンを作成する。なお、前記条件の選択は、仮想計算機モニタ1を介して要求される。
 この結果、ゲストOS#1及び作成されたクローンであるゲストOS#2が、アプリケーション5のテストを実行する。アプリケーション5のテストは、ゲストOS#1及びクローンであるゲストOS#2が、仮想計算機モニタ1を介して、入出力命令を実行するドライバOS32にI/O命令の実行を要求し、そのログを記録することにより、実行される。
 このために、仮想計算機モニタ1のゲストOS監視部11は、ゲストOS#1及びクローンであるゲストOS#2からドライバOS32へのI/O命令をトラップ(又はコピー)して、ホストOS31に通知する。この通知を受信したホストOS31が、メモリ部21にクローンを作成するための領域が存在する場合に、仮想計算機モニタ1のクローン作成部12にクローンの作成を依頼する。このホストOS31からの依頼に応じて、仮想計算機モニタ1のクローン作成部12が、クローンを作成する。
 以下、図5、図6及び図7に従って、ホストOS31、ゲストOS33及び仮想計算機モニタ1について、詳細に説明する。
 図5は、ゲストOS33上のアプリケーション5が要求する選択の監視とホストOS31の応答を示す図である。
 ゲストOS33が、アプリケーション5のテスト開始を仮想計算機モニタ1へ通知する(処理#1-0-1)。ゲストOS33のテスト開始の通知を受信した後、仮想計算機モニタ1は、テスト開始の通知の情報を監視テーブル111へ記憶する(処理#1-0-2)。
 ゲストOS33は、コンソール41へ、テストプログラム(アプリケーション5)の選択要求であるI/O命令を出力する(処理#1-1)。仮想計算機モニタ1は、ゲストOS33からのコンソール41へのI/O命令を監視し、テストが開始されたと判断した場合、“テスト開始済み”であるとホストOS31へ通知する(処理#1-2)。なお、図5においては、I/O命令を単にIOと表記している(図6~8においても同じ)。
 ホストOS31は、仮想計算機モニタ1から通知されたI/O命令がコンソール41へのI/O命令か否かを判定する(処理#1-3)。ホストOS31は、I/O命令がコンソール41へのI/O命令出力である場合、更に、ゲストOS33からの選択要求か否かの判定を行う(処理#1-4)。
 ホストOS31は、ゲストOS33からの選択要求である場合、テスト進行状態制御テーブル313へ選択項目のデータ更新を行う(処理#1-5-1)。具体的には、ホストOS31は、テスト進行状態制御テーブル313から対応するテストケースについて、「状況」項目について、“テスト中”であることの更新を行う。
 更に、ホストOS31は、選択項目(未選択の項目)を選択する(処理#1-5-2)。ホストOS31は、その選択項目の選択子の値を決定した後、その決定した値にテスト進行状態制御テーブル313のデータを更新する(処理#1-6)。
 次に、ホストOS31は、選択項目の選択子の値をゲストOS33へ応答する(処理#1-7)。ホストOS31は、その応答した選択子の値のログ及び選択子以外のログの情報をログ部312へ保存する(処理#1-8及び処理#1-9)。
 ゲストOS33は、ホストOS31からの応答を受けて、応答された選択子によりテストを続行する(処理#1-10)。
 図6は、ゲストOS33が要求した選択の要求時にクローンの作成及び並列でテストを実行する動作を説明する図である。
 ゲストOS33が、例えば、ホストOS31へのI/O命令、即ち、コンソール41への選択要求を送信する(処理#2-1)。ゲストOS33を監視している仮想計算機モニタ1のゲストOS監視部11が、これを検出して、ホストOS31へ通知する(処理#2-2)。この通知を受信したホストOS31が、ゲストOS33のクローンを作成するメモリ部21の資源があるか否かを判定して(処理#2-3)、資源がある場合、仮想計算機モニタ1のクローン作成部12にクローンの作成を依頼する(処理#2-4)。
 この依頼に応じて、クローン作成部12が、ゲストOS33(#1)のクローンであるゲストOS33(#2)を作成する(処理#2-5)。
 ホストOS31が、選択要求に応じて、例えば、選択子Aを応答としてゲストOS33(#1)に返信する(処理#2-6)。また、ホストOS31が、選択要求に応じて、例えば、選択子Bを応答としてゲストOS33(#2)に返信する(処理#2-7)。更に、ホストOS31が、ゲストOS33に返信した選択子A及びBをログとしてログ部312に格納する(処理#2-8)。
 なお、後述する図11において、選択子Aは選択子4111(yes)に相当し、選択子Bは選択子4112(no)に相当する。ゲストOS33(#1)は、元々存在するゲストOS33である。ゲストOS33(#1)が、選択子Aの選択により生成されるようにしても良い。ゲストOS33(#2)は、選択子Bの選択により生成されたゲストOS33(#1)のクローンである。
 図6は、便宜的に、処理#2-6及び処理#2-7が、連続して従って並列に実行される場合を示す。しかし、処理#2-6及び処理#2-7は、必要に応じて、個々に実行されるようにされるようにしても良い。
 一方、ゲストOS33(#1)が選択子Aを実行し(処理#2-9)、クローンであるゲストOS33(#2)が選択子Bを実行する(処理#2-10)。
 図7は、ホストOS31がアプリケーション5の出力の結果をログする動作を説明する図である。
 ゲストOS33が、コンソール41への選択要求以外のI/O命令を送信する(処理#3-1)。ゲストOS監視部11が、これを検出して、ホストOS31へ通知する(処理#3-2)。この通知を受信したホストOS31が、選択子に応じた出力結果をログ部312にログする(処理#3-3)。
 ゲストOS33は、テストが完了すると(処理#3-4)、これをホストOS31に通知する。この通知を受信したホストOS31は、クローン作成部12にクローンの削除を依頼する(処理#3-5-1)。
 この依頼に応じて、クローン作成部12が、ゲストOS33(#1)のクローンであるゲストOS33(#2)を削除する(処理#3-5-2)。
 削除依頼の後に、ホストOS31が、その時点で格納されているログを読み込んで(処理#3-6)、選択子と結果とをレポートとして出力する(処理#3-7)。
 図8及び図9は、図1の仮想計算機システムにおけるテスト処理フローである。
 ゲストOS33が、当該ゲストOS33上で実行されるアプリケーション5について、仮想計算機モニタ1にテスト開始を通知する(ステップS11)。ステップS11は、例えば処理#1-0-1に対応する。
 この通知を受信した仮想計算機モニタ1が、通知を受信したゲストOS33のテスト開始の情報を、ゲストOS監視部11に記憶する(ステップS12)。ステップS12は、例えば処理#1-0-2に対応する。ステップS12において、ゲストOS監視部11は、監視テーブル111に、テスト毎に、テスト中かどうかを識別するデータ(yes)を格納する。また、例えば、仮想計算機モニタ1は、当該テスト開始をホストOS31に通知する。この通知を受信したホストOS31は、図4(B)のログ部312及び図4(C)のテスト進行状態制御テーブル313を生成する。例えば、ログ部312において、選択子の数及び結果情報の数は1個とされ、各項目は空とされる。例えば、テスト進行状態制御テーブル313において、テストケースの数は1個とされ、各項目は空とされる。
 ゲストOS33が、ホストOS31又はドライバOS32に対するI/O命令を実行する(ステップS13)。ステップS13は、例えば処理#1-1、#2-1及び#3-1に対応する。ステップS13において、ゲストOS33は、ホストOS31又はドライバOS32へ当該I/O命令の実行を要求するように、仮想計算機モニタ1に依頼する。
 これに応じて、仮想計算機モニタ1が、監視テーブル111に基づいて、テスト開始済みか否かを判定する(ステップS14)。ステップS14は、例えば処理#1-2に対応する。テスト開始済みである場合、仮想計算機モニタ1は、ゲストOS33からの当該I/O命令をトラップ(コピー)して、当該トラップしたI/O命令をホストOS31へ通知する(ステップS15)。ステップS15は、例えば処理#1-2、#2-2及び#3-2に対応する。テスト開始済みでない場合、仮想計算機モニタ1は、処理を終了する。
 トラップしたI/O命令の通知を受信したホストOS31は、当該通知されたI/O命令がコンソール41のI/O命令であるか否かを判定する(ステップS16)。ステップS16は、例えば処理#1-3に対応する。コンソール41のI/O命令である場合、ホストOS31は、更に、当該I/O命令がゲストOS33からの選択要求であるか否かを判定する(ステップS17)。ステップS17は、例えば処理#1-4に対応する。
 ステップS16において当該通知されたI/O命令がコンソール41のI/O命令でない場合、ホストOS31は、テスト結果として、ログをログ部312の結果情報(result)へ保存する(ステップS18)。また、ステップS17において当該I/O命令がゲストOS33からの選択要求でない場合にも、ホストOS31は、ステップS18を実行する。ステップS18の実行後、仮想計算機モニタ1は、ステップS15以下の処理を繰り返す。ステップS18は、例えば処理#1-9及び#3-3に対応する。
 ステップS17において当該I/O命令がゲストOS33からの選択要求である場合、ホストOS31は、ゲストOS33からの選択要求の選択子がテスト進行状態制御テーブル313に格納済みか否かを判定する(ステップS19)。格納済みでない場合、ホストOS31は、テスト進行状態制御テーブル313に、テストケース毎に、これに対応する当該選択子を追加する(ステップS20)。ステップS19及びS20は、例えば処理#1-5-1に対応する。格納済みである場合、ステップS20は省略される。
 例えば、図4(B)のテスト進行状態制御テーブル313において、選択子1(の値)及び選択子2(の値)が格納され、選択子3(の値)が格納されていないとする。即ち、テスト進行状態制御テーブル313において、「選択子の続き」の欄は空であるとする。また、第1のテストケースCASE1は、テスト済みでなく、テスト中であるとする。
 この状態で、第1のテストケースCASE1において、ゲストOS33(#1)の処理が進んで、ゲストOS33(#1)即ちguest1からコンソール41に対して、選択子3の選択要求が発行される。選択子3は格納されていないので、ホストOS31により、テスト進行状態制御テーブル313において、以下のように、データが追加される。
 当該選択要求は、yes又はnoのいずれかの選択を要求する。これに基づいて、選択子3がyes又はnoの2個の値を取ることが判る。1個の処理(例えば、選択子3=yesの処理)を現在処理中のゲストOS33(#1)が引き続き処理する場合、残りの1個の処理(例えば、選択子3=noの処理)を他のゲストOS33が処理することになる。そこで、第1のテストケースCASE1と第2のテストケースCASE2との間に空行が挿入され、当該空行にその時点の第1のテストケースCASE1のデータのコピーが格納される。
 この時、「実行ドメイン名」は、「空」とされる。「状況」は、「テスト未」とされる。次に、「選択子の続き」に「選択子3の値」が追加される。即ち、他のゲストOS33が処理する選択子3=noが記述される。
 一方、第1のテストケースCASE1において、「選択子の続き」に「選択子3の値」が追加され、ゲストOS33(#1)が処理する選択子3=yesが記述される。
 なお、実際には、第2~第4のテストケースCASE2~CASE4についても、同様の処理により、空行が挿入され、各々のデータが格納される。これに伴って、第2~第4のテストケースCASE2~CASE4において、当該ゲストOS33が処理する選択子3=yesが記述される。
 また、例えば、第1のテストケースCASE1と第2のテストケースCASE2の間に挿入された行が、新たな第2のテストケースCASE2とされる。それまでの第2のテストケースCASE2は、第3のテストケースCASE3とされる(他も同様である)。以上により、新たな第2、第4、第6及び第8のテストケースCASE2、CASE4、CASE6及びCASE8(以下、「新たなテストケース」という)が作成され、第1~第8のテストケースCASE1~CASE8が存在することになる。
 また、ホストOS31は、「新たなテストケース」について、これに対応するログ部312を新たに生成して、テスト進行状態制御テーブル313と同様にして、その時点までに選択された選択子の値を記述する。例えば、前述の新たな第2のテストケースCASE2について、ログ部312が新たに生成されて、これに第1のテストケースCASE1のログ部312のコピーが格納される。この時、例えば、選択子3即ちselect3を追加し、その値noを格納する。また、第1のテストケースCASE1のログ部312において、当該選択子即ちselect3を追加し、その値yesを格納する。他についても、同様である。
 この後、ホストOS31が、ゲストOS33のクローンを作成する必要がある場合、当該クローンを作成する資源(ハードウェア2のメモリ部21の空き領域)があるか否かを判定する(ステップS21)。ステップS21は、例えば処理#2-3に対応する。例えば、前述の「新たなテストケース」の全部を実行するためのクローンを作成する資源があるかが判定される。資源がない場合、ホストOS31は、予め定められた時間の経過を待ち(ステップS22)、この後、ステップS21を繰り返す。なお、ホストOS31は、ステップS21の開始に際して、ゲストOS33のクローンを作成する必要があるか(「新たなテストケース」が存在するか)否かを調べる。作成する必要がある場合にはステップS21が続行され、作成する必要がない場合には、ステップS21~S25が省略される。
 資源がある場合、ホストOS31が、ゲストOS33のクローンの作成を、仮想計算機モニタ1に依頼する(ステップS23)。ステップS23は、例えば処理#2-4に対応する。この依頼を受信した仮想計算機モニタ1は、クローン作成部12に対し、対象となるゲストOS33のクローンの作成を指示する。これに応じて、クローン作成部12は、メモリ部21の空き領域に、対象となるゲストOS33のクローンを作成する(ステップS24)。ステップS24は、例えば処理#2-5に対応する。これにより、例えば、「新たなテストケース」の各々について、これを実行するクローンが作成される。
 ホストOS31が、例えば仮想計算機モニタ1からクローン作成の通知を受信した場合、テスト進行状態制御テーブル313において、「状況」が「テスト未」であるテストケース(以下、未選択項目という)を選択し(ステップS25)、当該選択された未選択項目を更新する(ステップS26)。ステップS25は、例えば処理#1-5-2に対応する。ステップS26は、例えば、処理#1-6に対応する。
 ステップS26において、当該選択された未選択項目の「状況」が「テスト未」から「テスト中」に変更され、「実行ドメイン名」が当該テストケースを実行するゲストOS33の名前とされる。このゲストOS33は、基本的には、ステップS24において作成されたゲストOS33のクローンである。但し、図4(C)に示すように、例えば、第1のテストケースCASE1がテスト済である場合には、これを実行したゲストOS33(guest1)に、他のテストケースCASE3を実行させるようにしても良い。
 この後、ホストOS31が、ステップS15で通知された選択要求についてゲストOS33に対して応答する(ステップS27)。例えば、選択要求に対応する値である「選択子3=yes」が、ゲストOS33に返信される。ステップS27は、例えば処理#1-7及び#2-6に対応する。更に、ホストOS31が、ゲストOS33のクローン(ゲストクローン)が存在する場合には、当該ゲストクローンに対して、当該選択された未選択項目について応答する(ステップS28)。例えば、選択要求に対応する値である「選択子3=no」が、ゲストOS33のクローンに返信される。ステップS28は、例えば処理#2-7に対応する。更に、ホストOS31が、当該選択要求に関するログを、対応するログ部312に記録する(ステップS29)。例えば、選択子3=yesに関するログを、テストケースSASE1のログとして、各々の対応するログ部312に記録する。ステップS29は、例えば処理#1-8及び#2-8に対応する。
 この後、応答を受信したゲストOS33が、ステップS27及びS28の応答により得た選択子を実行することにより、テストを続行する(ステップS30)。即ち、ステップS13以下が実行される。ステップS30は、例えば処理#1-10、#2-9及び#2-10に対応する。例えば、ゲストOS33が選択子3=yesを実行し、ゲストOS33のクローンが選択子3=noを実行する。ゲストOS33のクローンは、ゲストOS33をコピーしているので、最初からテストを繰り返すことなく、途中の選択子2以降を実行すれば良い。
 図10は、図1の仮想計算機システムにおけるテスト結果の出力処理フローである。
 ゲストOS33が、当該ゲストOS33上で実行されるアプリケーション5について、仮想計算機モニタ1を介して、ホストOS31にテスト終了を通知する(ステップS31)。ステップS31は、例えば処理#3-4に対応する。この通知は、アプリケーション5についてのテストが終了した場合に行われる。
 この通知を受信したホストOS31が、仮想計算機モニタ1に当該ゲストOS33のクローンの削除を依頼し、この依頼を受けた仮想計算機モニタ1が当該クローンを削除する(ステップS32)。ステップS32は、例えば処理#3-5-1及び#3-5-2に対応する。具体的には、仮想計算機モニタ1からの指示を受けたクローン作成部12が、ハードウェア2のメモリ部21において、当該クローンに関するメモリ211を開放する。また、仮想計算機モニタ1は、通知を受信したゲストOS33のテスト終了の情報を、ゲストOS監視部11に記憶する。即ち、ゲストOS監視部11が、監視テーブル111に、テスト毎に、テスト中かどうかを識別するデータ(no)を格納する。
 この後、ホストOS31が、アプリケーション5について実行されたテストケースについて、その時点までにログ部312に格納されたログを読み出して(ステップS33)、読み出したログをテスト結果として例えばコンソール41に出力する(ステップS34)。これにより、例えば、図4(D)に示すテスト結果412が得られる。ステップS33は、例えば処理#3-6に対応する。ステップS33は、例えば処理#3-7に対応する。
 図11は、アプリケーションのテスト実行時の動作を示す図である。図11において、仮想計算機システムのOS上で動作するアプリケーション5のテスト時のコンソール上での表示画面411を示す。
 アプリケーション5のテスト時に、図11に示すように、コンソール41において、表示画面411が、アプリケーション5をテストするオペレータに対して表示される。アプリケーション5の開始の表示画面411(Start)が表示された後に、第1の選択画面(Select1)が、オペレータに対して表示される。この場合、オペレータは、アプリケーション5が要求する選択子4111(yes)又は選択子4112(no)の選択を行う。
 この時、選択子の選択要求は、アプリケーション5を実行するゲストOS33(#1)から、仮想計算機モニタ1を介して、ホストOS31に通知される。そこで、仮想計算機モニタ1において、クローン作成部12が、ゲストOS#1のクローンであるゲストOS#2を作成する。
 なお、図11において、第1の選択画面(Select1)についてのみ、クローンの作成について示す。他の選択画面(Select)については、記号Cを付して、クローン作成処理が実行されることを示す。
 以下、同様にして、オペレータは、第2の選択画面(Select2-1又はSelect2-2)の選択子(yes/no)を選択し、第3の選択画面(Select3-1~3-4のいずれか一つ)の選択子(yes/no)を選択する。この選択子の選択要求の都度、その時点でのゲストOS33のクローンが作成される。
 即ち、クローン作成部12は、選択要求された時点におけるゲストOS#1をコピーして、ゲストOS#2を作成する。この結果、2個の同じ状態のゲストOS33が存在することになる。これにより、選択画面Select1における選択子yesを条件として含むアプリケーション5(選択画面Select2-1に対応する)と、選択子noを条件として含むアプリケーション5(選択画面Select2-2に対応する)とを、双方共に、実行することができる。また、この実行は、並列に実行するようにしても良い。
 第1のテストケースCASE1は、オペレータが選択画面Select1でyesを選択し、選択画面Select2-1でyesを選択し、選択画面Select3-1でyesを選択した組合せであり、当該組合せによるテストである。選択画面Select2-1は、選択画面Select1でyesを選択した場合の選択画面である(他も同様である)。第2のテストケースCASE2等も、同様である。
 この場合、全てのケースについてのテストを実施するには、選択が3回行われるので、合計で8種類のテストケース(CASE1~CASE8に対応)を実施する必要がある。しかし、ホストOS31からのゲストOS33への選択要求を監視するので、ゲストOS33のアプリケーション5の網羅テストを実現することができる。その結果、アプリケーション5のテストの信頼性及びテストの効率性を実現することができる。
 また、本実施態様によれば、ゲストOS33の選択の要求時に、ゲストOS33のクローンを作成し、作成したクローンに並列にテストを実行することができる。このため、1テストケース毎に最初の条件からテストをやり直す必要はない。その結果、アプリケーション5のテスト時間を大幅に短縮できる。更に、例えば、アプリケーション5において、初回起動時のみに発生するバグが存在していた場合、アプリケーション5の1回目の選択のテストを完了する前のクローンを作成する。このため、1回目のテストも繰り返し実施が可能となる。そのため、初回起動時のみに発生するバグ等の検出が容易となる。従って、この点からも、アプリケーション5のテストの信頼性及びテストの効率性を実現することができる。

Claims (7)

  1.  CPUとメモリとを含むハードウェアと、各々が前記CPU上で動作するプログラムを備える複数の仮想計算機と、前記複数の仮想計算機の制御を行う仮想計算機モニタとを備える仮想計算機システムのテスト方法であって、
     アプリケーションのテストを実行する第1の仮想計算機が、前記アプリケーションのテストにおける条件の選択を、前記仮想計算機モニタを介して、前記仮想計算機システムを制御する第2の仮想計算機に要求するステップと、
     前記仮想計算機モニタが、前記条件の選択が要求された場合、前記第1の仮想計算機の複製であるクローンを作成するステップと、
     前記第1の仮想計算機及び前記作成されたクローンが、前記アプリケーションのテストを実行するステップとを含む
     ことを特徴とする仮想計算機システムのテスト方法。
  2.  前記第1の仮想計算機及び前記作成されたクローンが、前記仮想計算機モニタを介して、入出力命令を実行する第3の仮想計算機に前記入出力命令の実行を要求することにより、前記アプリケーションのテストを実行する
     ことを特徴とする請求項1に記載の仮想計算機システムのテスト方法。
  3.  前記仮想計算機モニタが、前記第1の仮想計算機及び前記作成されたクローンから前記第3の仮想計算機への前記入出力命令をトラップして、前記第2の仮想計算機に通知し、
     前記通知を受信した前記第2の仮想計算機が、前記メモリに前記クローンを作成するための領域が存在する場合に、前記仮想計算機モニタに前記クローンの作成を依頼する
     ことを特徴とする請求項1に記載の仮想計算機システムのテスト方法。
  4.  前記仮想計算機モニタが、前記第2の仮想計算機からの前記依頼を受けた場合、前記クローンを作成する
     ことを特徴とする請求項3に記載の仮想計算機システムのテスト方法。
  5.  CPUとメモリとを含むハードウェアと、各々が前記CPU上で動作するプログラムを備える複数の仮想計算機と、前記複数の仮想計算機の制御を行う仮想計算機モニタとを備える仮想計算機システムのテストプログラムであって、
     前記仮想計算機システムであるコンピュータに、
     アプリケーションのテストを実行する第1の仮想計算機が、前記アプリケーションのテストにおける条件の選択を、前記仮想計算機モニタを介して、前記仮想計算機システムを制御する第2の仮想計算機に要求するステップと、
     前記仮想計算機モニタが、前記条件の選択が要求された場合、前記第1の仮想計算機の複製であるクローンを作成するステップと、
     前記第1の仮想計算機及び前記作成されたクローンが、前記アプリケーションのテストを実行するステップとを実行させる
     ことを特徴とする仮想計算機システムのテストプログラム。
  6.  CPUとメモリとを含むハードウェアと、各々が前記CPU上で動作するプログラムを備える複数の仮想計算機と、前記複数の仮想計算機の制御を行う仮想計算機モニタとを備える仮想計算機システムのテストプログラムを記録するコンピュータ読み取り可能な記録媒体であって、
     前記テストプログラムは、前記仮想計算機システムであるコンピュータに、
     アプリケーションのテストを実行する第1の仮想計算機が、前記アプリケーションのテストにおける条件の選択を、前記仮想計算機モニタを介して、前記仮想計算機システムを制御する第2の仮想計算機に要求するステップと、
     前記仮想計算機モニタが、前記条件の選択が要求された場合、前記第1の仮想計算機の複製であるクローンを作成するステップと、
     前記第1の仮想計算機及び前記作成されたクローンが、前記アプリケーションのテストを実行するステップとを実行させるテストプログラムを記録する
     ことを特徴とする仮想計算機システムのテストプログラムの記録媒体。
  7.  CPUとメモリとを含むハードウェアと、各々が前記CPU上で動作するプログラムを備える複数の仮想計算機と、前記複数の仮想計算機の制御を行う仮想計算機モニタとを備える仮想計算機システムであって、
     アプリケーションのテストを実行する第1の仮想計算機と、
     前記仮想計算機システムを制御する第2の仮想計算機と、
     前記仮想計算機モニタに設けられた、前記第1の仮想計算機の複製であるクローンを作成するクローン作成手段とを備え、
     前記第1の仮想計算機がアプリケーションのテストにおける条件の選択を前記仮想計算機モニタを介して前記第2の仮想計算機に要求した場合、前記クローン作成手段が、前記クローンを作成し、
     前記第1の仮想計算機及び前記作成されたクローンが、前記アプリケーションのテストを実行する
     ことを特徴とする仮想計算機システム。
PCT/JP2008/068045 2008-10-03 2008-10-03 仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム WO2010038307A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010531694A JP5104958B2 (ja) 2008-10-03 2008-10-03 仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム
PCT/JP2008/068045 WO2010038307A1 (ja) 2008-10-03 2008-10-03 仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム
US13/064,566 US8584089B2 (en) 2008-10-03 2011-03-31 Virtual computer system, test method, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/068045 WO2010038307A1 (ja) 2008-10-03 2008-10-03 仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/064,566 Continuation US8584089B2 (en) 2008-10-03 2011-03-31 Virtual computer system, test method, and recording medium

Publications (1)

Publication Number Publication Date
WO2010038307A1 true WO2010038307A1 (ja) 2010-04-08

Family

ID=42073099

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2008/068045 WO2010038307A1 (ja) 2008-10-03 2008-10-03 仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム

Country Status (3)

Country Link
US (1) US8584089B2 (ja)
JP (1) JP5104958B2 (ja)
WO (1) WO2010038307A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2652600A2 (en) * 2010-12-17 2013-10-23 Microsoft Corporation Virtual machine branching and parallel execution
JP2016189087A (ja) * 2015-03-30 2016-11-04 ビッグローブ株式会社 基盤ソフト運用管理システム、基盤ソフト運用管理装置、制御方法およびプログラム
CN111639029A (zh) * 2020-05-28 2020-09-08 深圳市吉祥腾达科技有限公司 一种软ac产品的可靠性测试方法及测试系统
CN111639029B (zh) * 2020-05-28 2024-04-26 东莞市锐易电子科技有限公司 一种软ac产品的可靠性测试方法及测试系统

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8646052B2 (en) * 2008-03-31 2014-02-04 Intel Corporation Method and apparatus for providing a secure display window inside the primary display
WO2010038307A1 (ja) * 2008-10-03 2010-04-08 富士通株式会社 仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム
US9069640B2 (en) * 2012-03-23 2015-06-30 Hitachi, Ltd. Patch applying method for virtual machine, storage system adopting patch applying method, and computer system
US20140012704A1 (en) 2012-07-05 2014-01-09 Google Inc. Selecting a preferred payment instrument based on a merchant category
US9092767B1 (en) 2013-03-04 2015-07-28 Google Inc. Selecting a preferred payment instrument
US10339236B2 (en) * 2013-09-10 2019-07-02 Vmware, Inc. Techniques for improving computational throughput by using virtual machines
TWI608419B (zh) * 2013-09-23 2017-12-11 財團法人資訊工業策進會 軟體相容性預先檢測方法與其系統
US9858572B2 (en) 2014-02-06 2018-01-02 Google Llc Dynamic alteration of track data
US10726119B2 (en) * 2014-12-08 2020-07-28 Vmware, Inc. Monitoring application execution in a clone of a virtual computing instance for application whitelisting
US11429716B2 (en) * 2019-11-26 2022-08-30 Sap Se Collaborative application security
CN113760767B (zh) * 2021-09-10 2024-04-19 元心信息科技集团有限公司 操作系统的调试方法、装置、电子设备及计算机可读存储介质
US20230125567A1 (en) * 2021-10-22 2023-04-27 Sap Se Application security through global lockout and capture

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04195436A (ja) * 1990-11-28 1992-07-15 Hitachi Ltd 計算機システム自動テスト方式
JPH08137719A (ja) * 1994-11-08 1996-05-31 Hitachi Ltd プログラムテスト再実行方法
JP2004133894A (ja) * 2002-07-11 2004-04-30 Microsoft Corp 仮想マシンをフォークまたはマイグレートするための方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0969056A (ja) 1995-08-31 1997-03-11 Toshiba Corp 計算機プログラム部品のテスト支援装置
US7266808B2 (en) * 2001-08-10 2007-09-04 Parasoft Corporation Method and system for dynamically invoking and/or checking conditions of a computer test program
GB0213688D0 (en) * 2002-06-14 2002-07-24 Ibm Automated test generation
US6978401B2 (en) * 2002-08-01 2005-12-20 Sun Microsystems, Inc. Software application test coverage analyzer
US8122106B2 (en) * 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7707578B1 (en) * 2004-12-16 2010-04-27 Vmware, Inc. Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system
US20070168734A1 (en) * 2005-11-17 2007-07-19 Phil Vasile Apparatus, system, and method for persistent testing with progressive environment sterilzation
US7849362B2 (en) 2005-12-09 2010-12-07 International Business Machines Corporation Method and system of coherent design verification of inter-cluster interactions
US8151263B1 (en) * 2006-03-31 2012-04-03 Vmware, Inc. Real time cloning of a virtual machine
US7752501B2 (en) * 2006-07-27 2010-07-06 International Business Machines Corporation Dynamic generation and implementation of globalization verification testing for user interface controls
US8458695B2 (en) * 2006-10-17 2013-06-04 Manageiq, Inc. Automatic optimization for virtual systems
US9038062B2 (en) * 2006-10-17 2015-05-19 Manageiq, Inc. Registering and accessing virtual systems for use in a managed system
US8234641B2 (en) * 2006-10-17 2012-07-31 Managelq, Inc. Compliance-based adaptations in managed virtual systems
US8949826B2 (en) * 2006-10-17 2015-02-03 Managelq, Inc. Control and management of virtual systems
US8032351B2 (en) * 2006-11-30 2011-10-04 Symantec Corporation Running a virtual machine directly from a physical machine using snapshots
US8336046B2 (en) * 2006-12-29 2012-12-18 Intel Corporation Dynamic VM cloning on request from application based on mapping of virtual hardware configuration to the identified physical hardware resources
JP5088366B2 (ja) * 2007-03-27 2012-12-05 富士通株式会社 仮想計算機制御プログラム、仮想計算機制御システムおよび仮想計算機移動方法
US8181159B2 (en) * 2007-03-29 2012-05-15 Microsoft Corporation Test automation using virtual machines
US20090204964A1 (en) * 2007-10-12 2009-08-13 Foley Peter F Distributed trusted virtualization platform
US8336029B1 (en) * 2007-11-08 2012-12-18 Google Inc. Debugger connection
US8037032B2 (en) * 2008-08-25 2011-10-11 Vmware, Inc. Managing backups using virtual machines
WO2010038307A1 (ja) * 2008-10-03 2010-04-08 富士通株式会社 仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム
US20100293144A1 (en) * 2009-05-15 2010-11-18 Bonnet Michael S Using snapshotting and virtualization to perform tasks in a known and reproducible environment
JP5585140B2 (ja) * 2010-03-18 2014-09-10 富士通株式会社 仮想計算機システムの管理プログラム,管理装置及び管理方法
US8489929B2 (en) * 2010-09-30 2013-07-16 Salesforce.Com, Inc. Facilitating large-scale testing using virtualization technology in a multi-tenant database environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04195436A (ja) * 1990-11-28 1992-07-15 Hitachi Ltd 計算機システム自動テスト方式
JPH08137719A (ja) * 1994-11-08 1996-05-31 Hitachi Ltd プログラムテスト再実行方法
JP2004133894A (ja) * 2002-07-11 2004-04-30 Microsoft Corp 仮想マシンをフォークまたはマイグレートするための方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HIROO SHIRASAKI: "VMware Workstation 5.0.0", UNIX MAGAZINE, vol. 20, no. 6, 1 June 2005 (2005-06-01), pages 23 - 36 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2652600A2 (en) * 2010-12-17 2013-10-23 Microsoft Corporation Virtual machine branching and parallel execution
KR20130126938A (ko) * 2010-12-17 2013-11-21 마이크로소프트 코포레이션 가상 머신 브랜칭 및 병렬적 실행
JP2013546103A (ja) * 2010-12-17 2013-12-26 マイクロソフト コーポレーション 仮想マシンの分岐および並列実行
EP2652600A4 (en) * 2010-12-17 2014-07-09 Microsoft Corp BRANCHING AND PARALLEL VERSION OF VIRTUAL MACHINES
KR101957533B1 (ko) * 2010-12-17 2019-03-12 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 가상 머신 브랜칭 및 병렬 실행 기법
JP2016189087A (ja) * 2015-03-30 2016-11-04 ビッグローブ株式会社 基盤ソフト運用管理システム、基盤ソフト運用管理装置、制御方法およびプログラム
CN111639029A (zh) * 2020-05-28 2020-09-08 深圳市吉祥腾达科技有限公司 一种软ac产品的可靠性测试方法及测试系统
CN111639029B (zh) * 2020-05-28 2024-04-26 东莞市锐易电子科技有限公司 一种软ac产品的可靠性测试方法及测试系统

Also Published As

Publication number Publication date
US8584089B2 (en) 2013-11-12
JP5104958B2 (ja) 2012-12-19
JPWO2010038307A1 (ja) 2012-02-23
US20110252278A1 (en) 2011-10-13

Similar Documents

Publication Publication Date Title
JP5104958B2 (ja) 仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム
US10083022B2 (en) Applying update to snapshots of virtual machine
US8423997B2 (en) System and method of controlling virtual machine
US7552044B2 (en) Simulated storage area network
US8719800B2 (en) Accelerating replayed program execution to support decoupled program analysis
US8683440B2 (en) Performing dynamic software testing based on test result information retrieved in runtime using test result entity
US20070220350A1 (en) Memory dump method, memory dump program and computer system
JP6788178B2 (ja) 設定支援プログラム、設定支援方法及び設定支援装置
US20150081243A1 (en) Setsudo: Pertubation-based Testing Framework for Scalable Distributed Systems
US8752027B2 (en) Injecting faults into program for testing software
KR102025078B1 (ko) 단일 스텝 실행을 이용한 코드 진단
US8086900B2 (en) System, method and computer program product for testing a boot image
US10802847B1 (en) System and method for reproducing and resolving application errors
JP6009089B2 (ja) 計算機システムを管理する管理システム及びその管理方法
US20120216184A1 (en) Runtime code replacement
US20090276205A1 (en) Stablizing operation of an emulated system
US10725889B2 (en) Testing multi-threaded applications
JP2007133544A (ja) 障害情報解析方法及びその実施装置
US9274875B2 (en) Detecting memory hazards in parallel computing
US9195562B2 (en) Recording external processes
US20160259578A1 (en) Apparatus and method for detecting performance deterioration in a virtualization system
JP6356822B2 (ja) 計算機システム及びメモリダンプ方法
US8171345B2 (en) Disablement of an exception generating operation of a client system
US20160266951A1 (en) Diagnostic collector for hadoop
US11068371B2 (en) Method and apparatus for simulating slow storage disk

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 08877164

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2010531694

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 08877164

Country of ref document: EP

Kind code of ref document: A1