Bugs in software can be due as much to organizational problems as bad coding. Finding errors reliably often requires some help.
When you stop and consider how complex some of today's software applications can be, it can seem like a minor miracle that they work as advertised. As we all know though, applications often don't do what they're supposed to do or don't do it the right way. When that happens, software testing tools and methodologies can be an important remedy.
However, the tangled nature of software errors sometimes makes the very nature of tracking them down a process in which multiple false leads dog every step. For example, simply defining what the problems are can bring out differing viewpoints among end users. That's also true when one asks application testing-tool vendors what the major problems are.
The Nature of the Beast
"The three most common software errors in our experience," reports Floyd Del Muro, vice-president of sales Americas for ARCAD Software, "are 'technical errors' (a program is overlooked or missed to be recompiled after a file change, missing parameters between program calls), 'functional' errors (changes in source code do not produce the expected results in the delivered application), and 'regression' errors (changes have an impact on other parts of the software that were not supposed to be affected)."
George Wilson, head of sales and operations at Original Software, characterizes the most common software errors differently. "Cosmetic errors are the most common, such as things not lining up, inconsistencies in style, and spelling errors. Unclear and incomplete requirements come in second. If a statement is open to interpretation, you can be sure two people will interpret it differently. Third in line for the glitch parade are errors lurking in data combinations. Developers will not usually test all the possible combinations before stamping a new function with the 'It Works' label."
Jennifer Fisher, an IBM i architect/analyst for Fresche Legacy, cites data errors, design flaws, and implementation errors as the three biggest sources of trouble. "In most software written for the IBM i, database integrity is enforced by the application program and not by the database, so the burden of handling data-related errors, which should not exist, falls to the developer," she elaborates on the first source. "Because most projects do not allow sufficient time for thorough testing, it's critical that the data used for testing be representative of production data, referentially accurate, able to satisfy all use cases, masked to protected private information, and easily refreshed to a known state." As for design flaws, she goes on to say, "This can be caused by poor communication, insufficient understanding of the application, and intentional compromises (due to time and other resource constraints)."
Sifting Through the Potential Problems
These responses raise the legitimate question of whether or not organizational errors are as much to blame for software bugs as bad code or other reasons.
"More often than not, requirements are the culprit. Developers for the most part write code that works as they intended," notes Original Software's Wilson. "But their expectation may differ from those who will be using the software."
"More software problems are introduced to existing systems because changes to the existing systems are made with an incomplete understanding of the system to be changed and by design compromises that are made to minimize the scope, risk, and testing effort associated with the changes," Fresche Legacy's Fisher points out.
"It depends on how the information system is built," observes ARCAD's Del Muro. "If it is composed solely of in-house code, software problems are mainly due to organizational issues, such as lack of formal communication between team members, lack of formal specifications, or poor or no workflow definition. If it's a third-party software package...what we see typically is that the upgrade introduces a set of changes to existing functionalities that may not have been requested but are provided as a new standard of features by the Independent Software Vendor (ISV). What is often the case in the large majority of IBM i customers we work with, the information system [problem] is a combination of these two scenarios."
As a result, he adds, upgrading customized code at the client site to remain in sync with the software package can become complicated and rigorous. "Existing manual processes and a lack of team awareness can produce some very undesirable results if that is the current development strategy in place."
What to Do, What to Do?
What are the implications if organizational errors are cited by testing-tool vendors as being as big a source of application software problems as under-the-covers technical issues? Is a consultant on internal processes going to be more productive in eliminating software problems than a testing tool or a testing regimen? These three vendor representatives advocate differing approaches to addressing such problems.
"As we say in London, 'Mind the gap!' Assembling combined IT and business teams during each phase—design, build, and test—really helps close that gap. Joint groups can dispel entrenched views resulting from mental and emotional investment in code that's off target," suggests Wilson.
"Today's enterprise systems are tremendously complex, especially at integration points. Business rules and process flows add another layer of complexity. If this layer is not fully understood or documented, testing becomes challenging. Interface points should be tested comprehensively to the standard—in both directions and independently—before trying to join systems. Virtualization is essential in this process. After clearing this hurdle, you can start making connections and performing end-to-end testing."
"The lack of a functional integrated tool set to properly manage the entire application landscape, including testing, is the dominant reason for software errors in production," Del Muro maintains. "The biggest difficulty is to be able to reproduce a sandbox that is closest to what currently exists in the production environment, specifically in the areas of application architecture and data. It cannot be stressed enough; it is all about having a repeatable and automated process in place with dedicated hardware configurations to mirror production and dedicated test databases with an automatic refresh process."
"The first challenge to overcome is the creation of a testing environment that contains accurate, meaningful test data that can easily be refreshed to a known state," agrees Fisher. "The second challenge is to gain a complete understanding of the applications in order to build a testing plan that thoroughly exercises and validates all of the decision points and dependencies in the logic."
Below is a compilation of application software testing tools for the IBM i that run either natively under i5/OS or under other operating systems that can operate on the i. The descriptions are simply summaries of general capabilities. Please use the associated links to the vendor websites to get more complete information about each product.
Application Testing Tools for IBM i
ARCAD Software
ARCAD-Verifer helps automate management of underlying test data and 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
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, including Web 2.0 apps. 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 (also available as a service via the cloud) for MS Visual Studio and can test apps in AJAX, Flex, Java, .NET, and Web 2.0 environments. It offers test-script playback, local and remote test execution across multiple machines, multiple browser support without script modification, and an automated run mode for "slow motion" test playback.
SilkTest is a test-automation solution for functional, regression, cross-platform, and localization testing of Web 2.0 and other applications. It runs either locally or within the cloud. Features include a collaborative environment for test creation, ability to test applications using multiple browsers, and integration with MS Visual Studio and Eclipse IDEs.
Databorough, a division of Fresche Legacy
X-Analysis is a tool suite for documenting and modernizing IBM i applications. Although not specifically designed for testing, it includes functions that can help with the process of application development and testing. These include application-code impact analysis, automated business-rule extraction, test-data extraction and cleansing, and automated data-model extraction.
X-Datatest specializes in testing of IBM i applications. Its functions include screen-testing automation tools, defect tracking, test-database preparation, test-data output comparisons, and test management.
IBM Corporation
Rational Functional Tester provides automated functional, regressive, GUI, and data-driven testing under Linux and Windows. It represents test actions in a storyboard format and offers total lifecycle traceability, fuzzy logic features that can find changed objects in successive tests, a recorder for user actions during testing, and a data-validation wizard.
Rational Performance Tester is a performance testing solution that validates the scalability of web and server applications. It identifies the presence and cause of system performance bottlenecks and reduces load-testing complexity. Features include code-free testing, root-cause analysis tools, load testing, and realtime reporting.
Rational Purify Plus is a set of dynamic software analysis tools that helps developers improve application reliability and performance. Product features include memory debugging, memory leak detection, performance profiling, and code coverage analysis. Rational PurifyPlus locates coding errors, identifies performance bottlenecks, and analyzes each component, even those without source code.
Rational Test Virtualization Server
Rational Test Virtualization Server can stub out any systems unsuitable or unavailable for functional, integration, and performance testing. Developers can build intelligent stubs from the interface definition of the system for a wide variety of protocols, including HTTP, web services, SOA, JMS, TIBCO, IBM WebSphere MQ, and Oracle.
LogiGear
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 uses keyword-driven action to test specific application attributes, records test actions for reply, offers a collaborative environment for test building, 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
Original Software's products are available as a suite or standalone.
TestBench facilitates establishment of limited but representative databases for testing IBM i 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, generates extraction reports for auditing, and supports error recovery and repeatable testing.
TestDrive automates test procedures for browser and legacy applications, as well as GUIs based on AJAX, Java, 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 multi-language 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.
Parasoft
C/C++Test provides automated software testing tools for applications written in C or C++. Features include static analysis, unit testing, runtime error detection, the ability to jump to any point in the product-highlighted analysis path, and tools for automating peer review processes.
dotTEST checks the validity of applications written in .NET (including C#, VB.NET, ASP.NET and Managed C++). 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 problems.
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.
Service Virtualization helps software testers build application test environments and access them from anywhere. Supported testing types include performance, agile, functional, mobile, and SAP apps.
PTC Integrity
PTC Integrity Test provides an application test-management 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.
SmartBear
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.
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
Worksoft Certify specializes in testing applications and business processes 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.
LATEST COMMENTS
MC Press Online