How sound is your software?If you cannot prove the quality of your software, how do you know whether it is good, or whether there are bugs waiting to surface?
Are you confident that you can regression test your software at the drop of a hat?
Do you have a secure delivery path between your Development, QA, UAT and Live environments?
If the answer to any of these is 'no', you need an automated testing solution, and mvTest is the only one built specifically to work with MultiValue applications for new and legacy code.
I wrote mvTest to improve the way I design and test my own software and I hope it will help you do the same.
Unit TestingIf your QA department is solely responsible for testing, that is too late for catching bugs. Modern practices including Test Driven Development (TDD) and Behaviour Driven Development (BDD) expect professional developers to take responsibility for the quality of their code, and to demonstrate its correctness through unit and workflow tests.
mvTest provides a framework, structure and language for writing and sharing tests by adapting the conventions of standard unit testing frameworks to MultiValue applications and requirements.
With its powerful built in editors and test runners you can develop and refactor your MultiValue code alongside test scripts for fast red/green/refactor cycles.
Terminal Driven TestingFor legacy systems, the prospect of harnessing old code for unit testing may just be too daunting or costly to consider or your application may be locked in a 4GL such as SB+ that does not allow for unit testing.
mvTest offers a unique solution - you can script user interface actions through its fully featured built-in terminal library allowing you to automate your testing from the outside, send and expect text, respond to messages and read data from the screen.
mvTest UI tests maintain two parallel connections to the database, allowing you to both run your screens and check what they are doing beind the scenes (preparing test data, checking updates have succeeded, setting and checking for record locks) all in the one script.
Use the mvTest UI recorder to build and edit your scripts by running your application, capturing your activity and hot-spotting what you wish to capture.
Workflow and Volume TestingUnit tests can help the quality of your code, but for regression and integration testing you need to scale these up to end-to-end processes.
mvTest lets you organize your tests into workflows for business testing, and into test runs for regression testing., and includes a profiling model for mocking files and routines and a data model for generating and importing test data.
Test runs can also kick off multiple parallel sessions with optional support for randomly selected workflows, allowing for volume testing of your application with up to hundreds of concurrent users.
Continuous Integration TestingThe add-on mvTest CI Runner integrates mvTest with the standard open source build monitors such as Jenkins and CruiseControl.NET as part of a managed delivery pipeline.
Use the mvTest Builder to prepare your test account by pulling updates from source control or running mvInstaller packages, then kick off test runs whilst reporting back to the build monitor using industry standard formats for reporting.
With Jenkins and with mvInstaller you can easily integrate the build into your cutting procedures, allowing you to use a single paragraph to package, deploy and regression test your applications.
Acceptance TestingWith automated testing you can ensure that your software is consistent and functional, but how can you check that it meets your users' requirements?
Automated Acceptance Testing is a relatively young discipline based on the concept of executable specifications, in which users (or analysists) prepare scenarios that are then run against the software under test. This both documents the system and ensures that it meets with expectations.
One of the more popular tools for Automated Acceptance Testing to emerge is the open source FitNesse, an easy-to-learn wiki-based product for documenting an application with embedded tables that hold a variety of different test cases ranging from simple decision tables through queries and scripts and designed for end users to communicate both what a feature should do, and the expected results when given example data.
The add-on mvTest SLIM Runner integrates mvTest with FitNesse using the SLIM prototol to map decision and other test table types to mvTest scripts, with extensions to the mvTest language for sharing test data and reporting results back to FitNesse.
Training and ConsultancyAdopting automated testing is a journey that changes the way you approach software development. It is a mindset not just a technology and adapting this to the methods and expectations of developing and maintaining new and established MultiValue applications and teams is a sensitive and complex affair that is not the same as for java, .NET or other mainstream languages.
I have trained dozens of MultiValue developers in test driven development, unit testing, behavioural and integration testing, and guided organizations as they have wrestled with the practicalities of testing legacy software and what this means for teams and budgets.
The lightbulb moment for many MultiValue developers switching to automated testing is not when they write their first tests, but when they start to gain the advantages of repeated testing and inheriting tests alongside code from their colleagues: what seemed initially to add to their workload starts to diminish it as teams leverage existing tests and learn what to test and what not to test.
I offer a full package of training and consultancy from classroom training to best practices and coding dojos, establishing continuous delivery pipelines, integrating your multivalue development with source code control systems, tacking legacy code and business engagement.