Whether just for use in-house, or destined for sale, software apps must be tested before being put into production environments. Testing tools can help significantly.
There's pretty much no getting around it: New software applications have to be tested before putting them into general use. However, unless producing software for sale is your primary line of business and you already have a testing process in place, the odds are that your enterprise could use some help in this area. Fortunately, there are some software solutions available that can facilitate this process.
The Need for Testing
Software testing has become critical as businesses become more reliant on computer systems to carry out important functions. In times past, software producers could sometimes get away with a "we'll fix a problem when someone complains about it" strategy in which meeting a sales deadline was more important than overall software quality. But those days are over.
"The litigious nature of our society has led us to see [that] more damages associated with software failure are calculable," warns Wayne Ariola, vice-president for strategy at Parasoft. "With software failing, we're seeing lost business, lost revenue, lost income, increased expenses, and damages to human beings." It's become easier to calculate those losses and assign them if faulty software is to blame, so software quality is not to be taken lightly.
Another aspect is that in the Internet age, an important part of an enterprise's public face is how enterprise software looks to its customers, which particularly means the UI. "When you're interacting with the business, your primary interface is going to be software," Ariola points out. "It's a user experience, and it's the quality of that application that matters." This puts an emphasis on UI as well as application functional testing.
"[Our customers] are demanding a solution that can support all their platforms and UIs. So, for example, an ability to create an automation asset over Internet Explorer but run it over Firefox or Chrome is both immensely attractive and unique," reports Colin Armitage, CEO of Original Software.
"[The most common request for new features in testing tools that our company receives is] to be able to manage both GUI and IBM i processes in one test case," notes Floyd Del Muro, VP Americas for ARCAD Software. He also cites regression testing, the ability to link that test type with the workflow of the application lifecycle, and better test automation.
Software Testing Methodologies
One complicating factor in software testing is that there are actually numerous kinds of software testing, and the type of testing any enterprise may need to conduct will vary depending on the nature of an application and its features.
The most straightforward kind is called acceptance testing. This is when testing personnel basically take a checklist of functions the software is supposed to perform and figure out if the software actually does what it's supposed to in the way it's intended. However, that sort of quality assurance may not be enough. For example, if there's concern about how well the application will perform if it's accessed by a large number of users, some performance testing will be required. If the number of users concurrently accessing the app or supporting databases is a potential issue, then some concurrency testing is called for.
If there's concern about how readily users can adapt to a new application, or even a new version of an existing one, that introduces a need for usability testing. If the end users have signoff authority on adopting software for production use, that's called user acceptance testing. And if some new hardware accompanies the new software, the overall performance of the new system may require some benchmark testing. Does an application's intended function include passing information to a sequence of users for use or approval? Then some workflow testing would be in order.
Because most software allows users to affect business records, protecting against access by unauthorized users raises a requirement for security testing. If the new app needs to interact with older ones, making sure everything that used to work just fine still does, that's regressive testing, while ensuring that the new software functions in its proposed existing environment is integration testing. Finally, if a software app's functions need to meet any sort of industry or international standards in its output, some conformance testing will be in order.
So part of determining what testing tools are best for a given situation requires some up-front analysis of what kinds of testing are needed, both for the type of software that requires the testing and for the context in which that software will be used.
Qualities Required in Testing Tools
With so many bases to cover, today's software test tool vendors are under pressure to deliver the goods on many fronts.
"Aspects of application testing software valued by our current customers and in demand by potential customers are the ability to create and protect test data simply, automatic provision of information for rapid remediation when performing manual tests, automation of the most complex tests without programming skills, creating test automation assets [that can] stay current for the application under test, and concurrent support for any process and development model," enumerates Original Software's Armitage.
ARCAD's Del Muro specifies abilities such as "managing database changes where the final data is stored, product ease of use, and creating multiple versions of a test case for a different sub case." As an example of the last feature, Del Muro points to green-screen applications that need to also function in client-server, Web, and mobile environments. "The ability to test each case or sub case would require multiple versions of the same test. It could be that the client-server application corrupts the data but the Web and traditional 5250 [versions] do not."
Parasoft's Ariola cites abstraction of test creation to less technical users and better access to test environments as top demands. "What we need are the abilities to create test environments on the fly [and letting] an organization test incomplete or evolving systems," he specifies, pointing to his company's Service Virtualization technology, which provides testing environments that are accessible by any authorized personnel, not just programmers or managers.
Software Testing Faces the Future
Looking forward, application testing tool vendors see a number of challenges.
Del Muro sees application development methodology as one important aspect in the future. "In the classic waterfall development cycle, we can have a program being worked on for three months with several changes being done to the same program over that time. You deploy that program once in three months, so you test essentially one time if it passes the test area. In a similar Agile cycle, you may roll out that same program three or four times in the same three-month span. That would require you to test that program three or four times in the equivalent three-month window."
Original Software's Armitage sees expanded demand for server apps on mobile devices, particularly tablets, as a driver. He also criticizes the need for programmers to be involved with testing on a continuing basis. "The market for test products is dominated by tools that demand programming skills despite the facts that they add cost, slow development, and cannot easily deal with changes in the application under test—the very things they were meant to address. We stand almost alone in demonstrating that this need not be the case, and it is key to us that we can maintain this approach as we extend our capabilities onto mobile devices and into usability testing."
Ariola points to Software as a Service (SaaS) having a great impact. "The switching costs associated with software are at an all-time low, due to SaaS-based applications, due to data and integration strategies that are open and of a service-oriented nature. The ability to swap an application that is not serving a business function is easy. The era of vendor lock-in associated with large enterprise applications has been significantly reduced."
Below is a summary of the major players and software products available in IBM i application testing tools. These descriptions simply summarize a few major features to help you decide where to focus your own research efforts first.
As always when looking for products or services, be sure to check the MC Press Online Buyer's Guide.
Application Testing Tools for IBM i
ARCAD-Verifer helps automate the process of conducting regression testing on applications, as well as the process of creating regression-testing campaigns. Verifier highlights UI differences between program versions, detects database differences after app execution, and records all keystrokes and system responses that occurred during a test.
Borland's products run on Windows PCs but can test .NET and Java client applications that attach to IBM i servers via MicroFocus Rumba.
Silk4J helps developers test applications written in Java. It tests apps using multiple browsers (e.g., IE, Chrome, Firefox), supports Eclipse and Java, and offers a standalone test recorder with customization, export, and replay functions.
Silk4Net is a plug-in test tool suite for MS Visual Studio and can test apps in
SilkTest is a test-automation solution for functional, regression, cross-platform, and localization testing. Features include a collaborative environment for test creation, support for testing of Web 2.0 applications, ability to test applications using multiple browsers, and integration with MS Visual Studio and Eclipse IDEs.
X-Analysis is a tool suite for documenting and modernizing IBM i applications. Although not specifically designed for testing, it includes functions for application-code impact analysis, automated business-rule extraction, test-data extraction and cleansing, and automated data-model extraction. These functions can all help with the process of application development and testing.
Rational Function Tester runs under Linux and Windows to provide automated functional, regressive, GUI, and data-driven testing. It represents test actions in a storyboard format and offers total lifecycle traceability, fuzzy logic features that can find changed objects in successive tests, and a data-validation wizard.
TestArchitect runs under Linux and Windows but can be customized to test i5/OS and mobile-device apps and carry out API and protocol-based testing. It provides a collaborative environment for test building, uses keyword-driven action to test specific application attributes, records test actions for reply, and provides a library of preprogrammed test actions for supported UIs.
LogiGear offers software testing as a service. It can test software with its tools (TestArchitect), your tools, or third-party tools such as Borland's SilkTest or IBM's Rational Function Tester.
Original Software's products are available as a suite or standalone.
TestBench facilitates establishment of limited but representative databases for testing applications that use DB2, Oracle, and SQL Server databases. It helps test the effects of applications on databases, manages test environments, verifies and validates application data, and supports error recovery and repeatable testing.
TestDrive automates test procedures for browser and legacy applications, as well as GUIs based on AJAX, Java, Adobe Flex, and Silverlight. It lets users create tests via a point-and-click interface, supports data-driven testing, and supports Agile applications.
TestDrive-Assist is designed to help manual testers for situations where automated testing is inappropriate. TestDrive-Assist includes multilanguage spelling and link checking, offers step-by-step detail capture, seeds regression tests from captured processes, and automatically builds an audit trail.
TestSmart helps ensure that variable data used for testing applications is optimized and consistent. It can create test data automatically, imports test data from spreadsheets, lets testers define business rules and requirements, and calculates every possible data combination that fits those rules.
C/C++Test provides automated software testing tools for applications written in C or C++. Features include static analysis, unit testing, runtime error detection, and tools for automating peer review processes.
dotTEST checks the validity of applications written in .NET. In addition to static analysis and unit testing, dotTEST handles plug-in testing by setting up a test environment and launching tests from within it.
Insure++ is a runtime checking tool that identifies programming and memory-access errors in C++ application code. It protects against corrupted heap and stack memory errors, uninitialized pointers, memory leaks, and type mismatches in global declarations, among other errors.
Jtest provides static analysis, unit testing, code-review, and runtime error-detection tools for applications written in Java.
SOAtest automates Web application testing, message/protocol testing, cloud testing, and security testing. It provides end-to-end app testing, application environment managing, and a workflow regime for app testing.
Virtualize helps software testers build application test environments and access them from anywhere to facilitate software testing of most kinds.
PTC Integrity Test provides an application testing solution under UNIX and Windows that helps QA managers plan comprehensive test programs, assists test executors in recording test results and spotlighting defects, facilitates preparation of manual test cases, notifies developers of test results, and documents analyst requests for test specifications. The product also integrates with .NET, Open API, and Eclipse.
Create, configure, and redistribute API and Web-service load tests under Linux and Windows with loadUI Pro, which includes automated test-creation tools, server monitoring aids, and a statistics workbench for tracking and reporting test results.
An API and Web-service tester for programs running under Linux and Windows on the i, soapIU Pro administers functional and regression testing, helps generate test reports, tests against common security vulnerabilities, and records all test actions and data transmissions during tests.
Sogeti offers software testing of server and mobile device apps as a service via the cloud. Services include 24/7 access, planning, implementation, execution, and reporting of test results.
Thenon Holdings, Ltd.
SmartTest400 provides automated regression and functional testing of IBM i applications. It administers tasks assigned to test teams, automates creation of test environments, enables recording and playback of business processes, and helps assemble appropriate testing databases.
Worksoft Certify specializes in testing applications that interact with SAP software products. Certify uses desktop- and browser-based clients for testing, validates business processes and data access, and promotes component reuse.