IP Library › Granted Patent US 12,253,936
Granted Patent B2
US 12,253,936 · App. 17/177,149 · Granted Mar 18, 2025

Validating inter-partition communication in microservice decomposition

Inventors: Eli Arbel (Nesher, IL); Rachel Tzoref-Brill (Haifa, IL); Saurabh Sinha (Danbury, CT); Maja Vukovic (New York, NY)
Assignee: International Business Machines Corporation
G06F11/3688G06F11/3676G06F11/3684G06F11/3692
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,253,936
App. No.
17/177,149
Granted
Mar 18, 2025
Kind
B2
Abstract

A system, computer program product, and method are presented for executing a validation test on at least a portion of a refactored application. The refactored application is resident within a partitioned computing architecture including a plurality of partitions and communication between the partitions uses one or more boundary methods. The refactored application is at least partially similar to a transformed monolithic application. The method includes automatically generating one or more test sequences for exercising one or more functional behaviors for each boundary method of the one or more boundary methods.

Claims (52)

1. A computer system that comprises:

a partitioned computing architecture comprising a plurality of partitions, wherein each partition of the plurality of partitions comprises one or more processing devices and at least one memory device operably coupled to the one or more processing devices, the one or more processing devices are configured to:

analyze a monolithic application in a non-runtime environment and therefrom determining parameter types to be tested;

automatically create a combinatorial test design (CTD) model, wherein one or more coverage objects includes one or more combinations of a plurality of parameter types;

automatically generate, the one or more of combinations of the plurality of parameter types; and induce a plurality of different return types; wherein each return type of the plurality of different return types is induced as a function of a respective combination of the plurality of parameter types;

automatically generate, for each boundary method in one or more boundary methods, an optimized vector of parameter types configured to execute a boundary method invocation;

automatically generate one or more test sequences for a validation test of one or more functional behaviors executed by a refactored application after transformation from a monolithic application for each boundary method of one or more boundary methods; and

execute the validation test on at least a portion of the refactored application that has been transformed from the monolithic application, wherein the refactored application is resident within the partitioned computing architecture and is configured to communicate between the partitions based upon the one or more boundary methods, and the refactored application is at least partially similar to the monolithic application, wherein the validation test is configured to compare portions of the monolithic application with the refactored application.

2. The computer system of claim 1 , the one or more processing devices are further configured to: automatically generate one or more test sequences for exercising one or more of serialization and deserialization behaviors for each boundary method of the one or more boundary methods.

3. The computer system of claim 1 , the one or more processing devices are further configured to: automatically generate one or more test sequences simultaneously for single parameter type and multiple parameter types.

4. The computer system of claim 1 , wherein the parameter types comprise scaler parameter types.

5. The computer system of claim 1 , wherein the one or more processing devices are further configured to: generate an n-way covering array from the CTD model, wherein: the n-way covering array includes a plurality of rows therein, each row of the plurality of rows is at least partially representative of one or more parameter types of the plurality of parameter types.

6. The computer system of claim 5 , wherein the one or more processing devices are further configured to one or more of: generate a plurality of Junit test cases from the n-way covering array through one or more automatic test generators; and test a plurality of boundary methods of the one or more boundary methods together.

7. The computer system of claim 5 , wherein the one or more processing devices are further configured to: place a plurality of block sequences within a block sequence pool; and reuse one or more block sequences of the plurality of block sequences to use a parameter type of the plurality of parameter types with more than one boundary method of the one or more boundary methods.

8. A computer program product, the computer program product comprising: one or more computer readable storage media; and program instructions collectively stored on the one or more computer readable computer readable storage media and configured to, the program instructions comprising:

analyze a monolithic application in a non-runtime environment and therefrom determining parameter types to be tested;

automatically create a combinatorial test design (CTD) model, wherein one or more coverage objects includes one or more combinations of a plurality of parameter types;

automatically generate, the one or more of combinations of the plurality of parameter types; and induce a plurality of different return types; wherein each return type of the plurality of different return types is induced as a function of a respective combination of the plurality of parameter types;

automatically generate, for each boundary method in one or more boundary methods, an optimized vector of parameter types configured to execute a boundary method invocation;

automatically generate one or more test sequences for a validation test of one or more functional behaviors executed by a refactored application after transformation from a monolithic application for each boundary method of one or more boundary methods; and

execute the validation test on at least a portion of the refactored application that has been transformed from the monolithic application, wherein the refactored application is resident within the partitioned computing architecture the comprises a plurality of partitions and is configured to communicate between the partitions based upon the one or more boundary methods, and the refactored application is at least partially similar to the monolithic application, wherein the validation test is configured to compare portions of the monolithic application with the refactored application.

9. A computer-implemented method comprising:

analyzing a monolithic application in a non-runtime environment and therefrom determining parameter types to be tested;

automatically creating a combinatorial test design (CTD) model, wherein one or more coverage objects includes one or more combinations of a plurality of parameter types;

automatically generating, the one or more of combinations of the plurality of parameter types; and induce a plurality of different return types; wherein each return type of the plurality of different return types is induced as a function of a respective combination of the plurality of parameter types;

automatically generating, for each boundary method in one or more boundary methods, an optimized vector of parameter types configured to execute a boundary method invocation;

automatically generating one or more test sequences for a validation test of one or more functional behaviors executed by a refactored application after transformation from a monolithic application for each boundary method of one or more boundary methods; and

executing the validation test on at least a portion of the refactored application that has been transformed from the monolithic application, wherein the refactored application is resident within the partitioned computing architecture including a plurality of partitions and communication between the partitions uses one or more boundary methods, and the refactored application is at least partially similar to the monolithic application, wherein the validation test is configured to compare portions of the monolithic application with the refactored application.

10. The method of claim 9 , wherein automatically generating the one or more test sequences comprises:

automatically generating one or more test sequences for exercising one or more of serialization and deserialization behaviors for each boundary method of the one or more boundary methods.

11. The method of claim 9 , wherein automatically generating the one or more test sequences comprises:

automatically generating one or more test sequences for: testing each boundary method of the one or more boundary methods individually; and generating a sequence of boundary method calls, thereby setting up a state in which at least one boundary method of the one or more boundary is called.

12. The method of claim 9 , wherein the parameter types comprise scalar parameter types.

13. The method of claim 9 , further comprising:

generating an n-way covering array from the CTD model, wherein:

the n-way covering array includes a plurality of rows therein, each row of the plurality of rows is at least partially representative of one or more parameter types of the plurality of parameter types.

14. The method of claim 13 , further comprising:

generating a plurality of Junit test cases from the n-way covering array through one or more automatic test generators; and

testing a plurality of boundary methods of the one or more boundary methods together.

15. The method of claim 13 , further comprising:

placing a plurality of block sequences within a block sequence pool; and

reusing one or more block sequences of the plurality of block sequences to use a parameter type of the plurality of parameter types with more than one boundary method of the one or more boundary methods.

16. The method of claim 14 , further comprising:

executing a first Junit test case on the monolithic application;

recording a first value associated with the execution of the first Junit test case;

inserting the first value into an assertion;

inserting the assertion into a second Junit test case;

executing the second Junit test case on the refactored application;

recording a second value associated with the execution of the second Junit test case;

comparing the first value and the second value;

determining a difference between the first value and the second value exceeds a threshold; and

indicating an assertion failure.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 16, 2021
From: ARBEL, ELI; TZOREF-BRILL, RACHEL; SINHA, SAURABH; VUKOVIC, MAJA
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 055278/0081 →
Continuity (1)
Related Publication 20220261337A1 · Aug 18, 2022
References Cited (15)
US 8127275B1 · Hampapuram · 2012 [cited by examiner]
US 10467220B2 · Li · 2019 [cited by applicant]
US 10489279B2 · Rajagopalan · 2019 [cited by applicant]
US 10698806B1 · Scholz · 2020 [cited by examiner]
US 11422797B1 · Zhang · 2022 [cited by examiner]
US 11442725B1 · Chawda · 2022 [cited by examiner]
US 20070220370A1 · Branda · 2007 [cited by examiner]
US 20080184206A1 · Vikutan · 2008 [cited by examiner]
US 20200401506A1 · Sathianarayanan · 2020 [cited by examiner]
Felbinger et al., “Adapting Unit Tests by Generating Combinatorial Test Data,” 2018 IEEE International Conference on Software Testing, Verification and Validation Workshops, Apr. 9-13, 2018, pp. 352-355. [cited by applicant]
Mell et al., “The NIST Definition of Cloud Computing,” Recommendations of the National Institute of Standards and Technology, U.S. Department of Commerce, Special Publication 800-145, Sep. 2011, 7 pages. [cited by applicant]
Mishchuk, “Communication layer design for Ruby microservices,” Medium.com, May 31, 2017, 10 pages. <https://medium.com/matic-insurance/communication-layer-design-for-ruby-microservices-98b388174aef>. [cited by applicant]
Savchenko et al., “Microservices validation: Mjolnirr platform case study,” MIPRO 2015, May 25-29, 2015, pp. 235-240. <https://ieeexplore.ieee.org/abstract/document/7160271>. [cited by applicant]
Taylor, “4 Best Practices for Testing Microservices,” Saucelabs.com, Nov. 28, 2018, 2 pages. <https://saucelabs.com/blog/4-best-practices-for-testing-microservices>. [cited by applicant]
Zamli et al., “Designing a Combinatorial Java Unit Testing Tool,” Proceedings of the Third Lasted International Conference Advances in Computer Science and Technology, Apr. 2-4, 2007, 6 pages. [cited by applicant]