Alexander Forbes offers integrated retirement, investment, life and insurance solutions to create, grow and protect wealth and assets.
Great Migrations worked with Alexander Forbes to design and implement and end-to-end upgrade solution producing an integrated build-complete C# system with a specific set of custom upgrade features.
In addition to developing the upgrade solution to help automate the rewriting process, Great Migrations developed an automated UI testing tool and test scripts to help automated the functional testing process.
|FILES||187K LOC Logic and 89K LOC GUI in 327 Files: 259 Forms, 2 MDIForm, 35 Classes, and 16 Modules organized into 15 VBPs.|
|BINARIES||5 EXEs, 10 DLLs, 0 Controls, 0 OLE EXEs,|
|MEMBERS||8,079 unique subprograms: 2052 subroutines, 1276 functions, 404 properties , 148 externs , 4199 event handlers.|
|UI||240 unique UI containers containing 9612 instances of 45 different kinds of controls.|
|COM||242,613 calls to external COM components. The diversity of COM members is 759 unique members from 159 types in 17 COM components.|
|WIN32||225 calls to 66 unique entry-point APIs from 10 libraries. API Calls are made from 24 different user procedures.|
The upgrade solution used out Trace Logging feature. This feature instruments the VB6 code such that a record to a log file is written whenever execution enters or exits a method. Translating the instrumented VB6 code produces an instrumented .NET code as well. This technique, along with careful side-by-side testing, helps us analyze behind-the-scenes differences between the VB6 and .NET code.
The upgrade solution used our Lightweight Object-Oriented C# coding standard that uses various extension methods to more accurately emulate VB6 semantics.
A significant deliverable from the project was automated UI testing procedures for the test cases provided by the client. GM developed an automated testing framework based on Microsoft Test and the Coded UI Testing framework distributed with Microsoft Visual Studio 2013 Premium Edition. We refer to this as gmTest. gmTest employs a high-level scripting language called GM Testing Language (gmTL) to describe the steps of each test case. Because of the dynamic nature of gmTest, gmTL scripts are much easier to write and maintain than those written in any other test automation language.