Introduction
Before
any system can be completely implemented on a production computer, the analysts
and programmers working on the system must be able to state unequivocally that
the programs work exactly as they were designed to work and that any errors
or mistakes found in any of the data to be processed by the system will be handled
properly. Since testing is quite unpredictable in terms of the results and,
in some cases, the availability of the hardware required for testing, it is
difficult to establish a day-to-day detailed testing schedule in advance. It
should be possible, however, to estimate with some accuracy the time which will
be required to test any given program. The most likely area for the "slipping"
of deadlines in the implementation falls within the area of program and systems
testing. When testing schedules are established, there should be adequate time
allocated for testing.
To effectively test a program, the systems analyst should establish procedures which are to be followed. Basic rules for program testing and debugging that should be followed are summarized below.
- Individual
programs should be compiled and all diagnostics removed prior to using test
data.
-
Test data should be created by the programmer that first tests all main routines.
-
Additional test data should be created to assure that every routine and every
instruction has been executed correctly at least once.
-
Program testing should include testing with as many types of invalid data
as is likely to occur when the system is in production.
-
After each program has been individually tested and debugged, related programs
in the system should be tested as a unified group. This is called "link" or
"string" testing.
- A
final "systems test" should be performed using data prepared by the systems
analyst and, in some cases, data which has been previously processed through
the "old" system.
This
is Part One of a two-part note.
Part
One will discuss the roles of programmers and analysts during testing; how to
test individual programs; and what type of test data should be created to ensure
a successful system implementation.
Part
Two will discuss the modes of testing and management and user approval.
Testing Individual Programs
The
testing of each individual program, called unit testing, should be
handled by the programmer who has written the program. The amount of testing
which is required to certify that a program is ready for production and the
amount of reliability which can be given to a program can be controversial.
However, from a programmer's standpoint, a program should never enter systems
testing and be put into production if the programmer has any doubt that the
program will work.
Programs should first be compiled without using test data in order to eliminate all diagnostics in the program due to programming errors.
After
a "clean" compilation is obtained, that is, one without any compilation diagnostics,
the programmer should then desk check his or her program. Desk-checking
refers to the process of "playing computer" with the source code/listing, that
is, following every step in the program and analyzing what will take place as
the routine is processed. Desk-checking is probably the most useful tool in
debugging a program and it is the most neglected and abused. Many programmers,
immediately upon obtaining a compilation with no diagnostics, resubmit the program
for a test run with test data. This is not a good testing technique as time
should be taken to review the source listing.
Desk-checking has an added benefit of re-familiarizing the programmer with the program. In a complex program, there may be a period of ten or more weeks between the time the program is started and the time it is compiled. During this time the programmer could forget some of the routines or other portions of the program which were written. When desk-checking, however, the programmer must go completely through these routines again. Thus, the routines will be refreshed in the programmer's mind. This can be of great aid if the program fails because the programmer is more likely to be able to isolate the problem faster and with more accuracy than if he or she had not reviewed the program in detail.
Creating Test Data
After the program has been desk-checked, it must be tested on the computer using test data. To properly test the program there must be good test data available. In all applications, the programmer should use data to test the program which has been designed specifically to test the routines within the program. Test data should be designed to test main routines first. When it is found that the main routines produce the desired output, additional test data should be created that tests all other routines. This data should contain both valid and invalid data to test both the normal processing routines and the error routines of the program. In addition, the test data should be designed so that limits within the program are tested. For example, data should contain both minimum and maximum values which can be contained within a field. The data should be designed to allow maximum values and minimum values to occur in any intermediate fields which are to contain totals. There should be variations in the various formats which the program can process so that all possibilities can be covered. All of the codes which can be used in records should be contained in the test data so that the various routines which are called based upon different codes can be tested.
Another important area which must be tested is the files which are to be used in the program. If an indexed file is used, the file must be loaded and, in addition, must be tested using data to add records and delete and change the records within the file. When a direct file is used, the algorithm used to determine record addresses must be tested and also the routine which handles synonyms must be heavily tested. Any time data is stored on a file, such as disk, CD, or cartridge, whether it is relational, sequential, indexed sequential, or direct, the data should be "dumped" by using a utility program so that the file contents can be examined in detail. A programmer cannot assume that the data is correct because the file was built or that the data on the file was used successfully as input to another program. The data must be closely examined.
Most of the responsibility for program testing rests with the programmer who wrote the program. The programmer should design the test data, conduct the tests, and check the output from the tests. The analyst, however, can play an important role in program testing by first attempting to ensure that good testing techniques are followed and then reviewing and making suggestions to the programmer concerning data to be tested. The analyst can look at on-line screens, reports, and file dumps to ensure, early in the program testing, that the results correspond to what is expected. If there are variances, they can be corrected. The analyst should look at the test data which is being used to determine if he or she sees any areas which should be tested and which have been overlooked by the programmer. The analyst should not dictate to the programmer what data should be used to test the program. The analyst serves in an advisory capacity. The only time this may not be true is if the programmer is having difficulty with the program.
Summary
To effectively test a program, the systems analyst should establish procedures for testing and debugging. The programmer who wrote the program should then be responsible for conducting unit tests, desk-checking, and creating the test data. With clearly defined roles, this critical aspect of implementation can be handled successfully.
This
is Part One of a two-part note.
Part
One will discuss the roles of programmers and analysts during testing, how to
test individual programs, and what type of test data should be created to ensure
a successful system implementation.
Part
Two will discuss the modes of testing and management and user approval.
About
the Author
Dr.
Moskal is a professor in the Computer Science Department at Saint Peter's
College located in Jersey City, New Jersey. Prior to becoming a professor three
years ago, Dr. Moskal worked for over twenty years for fortune
100 companies directing and managing system implementation projects on mainframe,
mid-range and client-server computing platforms. Systems included financial,
human resource, manufacturing, marketing, customer relationship management,
e-commerce, enterprise resource planning, retail, legal, project management,
shareholder, and administrative. His web link is http://edmoskal.tripod.com.
A Guide to Software Test Tools | CRM Testing Throughout Implementation | Program Testing Methodology
Part Two: Running Tests and Getting Approval | Whose ROI is it Anyway?
Part One: Introduction | Justification of ERP Investments
Part Three: Costs of Implementing an ERP System | Audit Considerations for Enterprise Software Implementations
Part 2: Applying Controls and Audit Emphasis | InsideOut Firewall Reporter Unravels the Mysteries of Your Firewall Logs | PowerTrieve, A LEAP For CRM? | Top 10 Reasons For Having A Project Kickoff - Part II | Top 10 Reasons For Having A Project Kickoff - Part I | Hosting Horrors! | What’s All This Benchmark Stuff, Anyway? | Identix Leads Biometric Authentication | Are ASP Applications Right for You? Part 2: Decision Criteria | Are ASP Applications Right for You?
Part 1: Decision Factors | SCT Corporation Means (e)Business For Process Manufacturing |
Seagate Software 'Crystallizes' Its New Name: Crystal Decisions |
AMD Hooks Up with Transmeta – For Now |
Red Hat Plays 'Love You, Love You Not' with CPUs |
Dell Sharpens Its Linux Focus |
Prophet 21 First Quarter Revenues Suffer But Pipeline Grows |
Palm to Give Developers a Leg Up |
Web Testing Has Changed the Testing Landscape |
Gates Previews Pen-Based Computer |
Quantum Snaps Off Its NAS Group |
eMachines to Ship Appliance |
What’s in a Name? |
Technology Hardware Maintenance-Acquiring and Managing Cost Effective Service |
frontpath Announces Mobile Internet Appliance |
Transmeta to Intel/AMD: Eat Our Dust |
Ariba Holds Announcement Festival |
Sun Buys Cobalt |
VA Linux Releases NAS Server |
How Do You Categorize Notebooks? |
IMI Sees Red In Dawn Of Fiscal 2001 |
Turmoil in CPU-Land |
Red Hat’s Linux Domination Weakens |
GNOME Will Try to Buff Up Linux |
New Internet Appliances Coming from Compaq |
How Do You Categorize Servers? |
Compaq to Offer Co-Branded iPAQ BlackBerry Wireless E-mail Solution |
Compaq Wins Supercomputer Contract, But Is It Enough? |
PC Market Figures Show Compaq, Dell, and HP Lead |
Computer Manufacturers Shifting Their Focus to Start-Ups |
Rackmount Server Sales Surge |
Manhattan Associates Completes Second Quarter On Record Pace |
Red Hat Releases Clustering Software |
Windows 2000 Bug Fixes Posted |
Should It Be Renamed 'Unobtainium'? |
Dell Drops WebPC |
21st Century Fox Hunt - US vs. Microsoft |
Netpliance’s 4X Price Hike - Will It Spell Boom or Doom? |
HP’s LT 6000r Six-CPU Server |
Handspring’s Visor Passes Pocket PC |
Active Voice Adds Unified Messaging to Cisco’s CallManager |
NetWare for Small Business – NetWhy? |
New Storage Array from Sun |
Compaq to Open Tru64 Unix? |
Intraware Acquires Janus for its Extranets |
Lucent Receives Engineering Award in Unified Messaging |
Technology Project Selection and Management in Community Banks |
Dell and Red Hat Form Alliance |
At Least It Hasn’t Been Renamed Linux 2001 |
Intel 820 Chipset Delays Again, Again, Again… |
Cobalt Releases Linux "Clustering" Software |
It Takes More Than a Fast CPU to Rule the Web |
Compaq’s 'Photon' Comes into the Light |
Caldera eDesktop Edges Out Microsoft Windows 2000 in Functionality – Part II |
IA-64 Linux From Red Hat |
Gateway & AOL Follow Crusoe’s Footprints |
Bezos to McNealy: Drop Dead! |
MicronPC.com, or, “Where Are They Now?” |
Mirapoint Adds Web-Mail Client to Messaging Appliance Line |
They Test Web Sites, Don’t They? |
Network Appliance to Ship Sub-$10K Caching Hardware |
Compaq Reorganizes Again |
i2 Technologies Gets Reporting Help From Hyperion |
Dell Tops in Customer Satisfaction |
Intel Faces 820 Chipset Problems (Again) |
Intel Small Server Market |
eBay Looking For Sun Block? |
HP “Medals” In U.S. PC Olympics |
AMD Server Plans De-Railed |
Net Woes for NetWare |
Voice-Over-Broadband Standards on the Horizon |
Intel Reorganization |
It’s a Portal...AND It;s a Gateway |
Cooler-running Notebooks from HP, Toshiba, et al. |
Netpliance Responds Quickly to Hardware Hack |
Intel Server Trends |
AMD Earnings Beat the Street! Intel Earnings Beat the Street? |
Desktop PCs: Meet the New Boss, Same as the Old Boss… (Dell) |
HP e-Vectra Product Follow-up |
Dell Updates Its Appliance Line |
Apple Displays Its Core in Mac OS X |
U.S. vs. Microsoft: Another Day of Reckoning |
Why Would Anyone Need More Than 50 IP Addresses? |
Will Intel Take a Loss on Each CPU, but Make It Up in Volume? |
Segue Software is First to Provide the Capability to Load Test Wireless Applications |
“Whistler” Beta on the Web? |
HP Reorganizes Storage Group, Addresses NAS-cent Market |
Brio Technology Expands Support for WML and XML |
HP: Why Not Just Call It “e-Vectra.com”? |
Compaq Streamlines Product Line |
Will MS try the "Open Source" Gambit with WinCE? Why Not – Nothing Else Seems to Work |
“It’s a Notebook!” “It’s a Paperweight!” “Wait - It’s Both!” |
Cisco: IPv6 is Coming, Eventually |
Gosh, There’s a Bug in Windows 98 |
Wintel Tries to “Embrace and Extend” the English Language |
Information/Internet Appliances |
Hewlett-Packard’s NetServer Division – #3 to Get Ready, or #4 to Go? |
Palm IPO: 3Com’s morning after, or “Do you know the way to San Jose?” |
Does Microsoft Have Something Against 64-Bit Processors? |
Sterling Software Sees the Light with Eureka:Intelligence |
Acta Technology Helps Add Business Intelligence Capabilities to Major ERP Vendors |
Total Uptime Guarantees? It Must Be A New Millennium! |
Tentative Unification in Server I/O Architecture Battle |
Dell Unveils Internet-Enabled Customer Support Strategy |
Compaq, Dell Announce Eight-Way Intel Servers |
Dell Takes Over the #1 Spot in the U.S. PC Market |
Dell to Acquire ConvergeNet International |
Gateway Drops AMD |
Intel Delays Shipment of 820 Chipset |
Flaw in Intel Xeon 550 Chips: Shipments Stopped |
Sun to Make Solaris Source Code Available |
Palm Tries to Take the Desktop in Hand |
MainWin for Linux - NT Apps without NT |
TurboLinux Clusters One More Step Taken |
Cisco Tries to Cache In By Buying Software Start-Up Tasmania Networks |
Intel Throws its "Red Hat" into Linux Ring |
NEC Pulls Packard Bell PCs in US |
Corel and PC Chips to Accelerate Mass Desktop Deployment of Linux |
Gateway, Dell Plan Windows-free Appliances |
Here Come the "Information Appliances" |
Sony Picks Palm OS |
Intel Invests in eSoft - "Lintel" Continues to Grow |
AMD Athlon Debuts |
EMC to Buy Data General |
Compaq to Halt NT on Alpha Development |
eMachines Considering Internet Appliance |
Sun to "Community Source" Almost Everything |
eMachines to Buy FreePC |
Dell Jumps Into Internet PC Arena |
Be Announces Software Licensing Agreement With Compaq |
Acer to Jump on Internet Appliance Bandwagon |
Sun's StarPortal Opens Its Gates Early |
OS SmackDown! |
What If They Shipped an OS and Nobody Came? |
Presarios Freezing - and Not Because it's Winter |
Intel's "New Best Friend" for Web Appliances is Linux |
Compaq Buys a Chunk of Inacom - But Will It Help? |
Gateway, Jilted by Intel, Kisses and Makes Up with AMD |
Be to Be FreeB(i)e |
HP Joins the Athlon Pile-On |
Will Sun Burn Linux with "Free" Solaris? |
HP says "When in Doubt, Buy It Out" for Server Appliances |
Intel Chip Shortage Continuing |
Embedded Linux for Handhelds |
Linux Laptops from Dell |
Come See the Softer Side of Linux? |
Windows 2000: Paragon for Partisans, Skewered by Skeptics |
Compaq Plans Direct Sales. DTja vu All Over Again? |
Goodbye PCs, Hello Appliances? |
Intel Tries to Give it Away - AMD Says "No Way" |
Linux at 25% of Server OS Market - Is Redmond Hearing Footsteps? |
Dell Uses its Muscle to Beat Side-Effects of Taiwan Quake |
IBM to Make Cuts in PC Business Real Change, or Just Buying Time? |
Micron to Push "Subscriber Computing" Rentals 'R' Us? |
Compaq Partners with Red Hat in Linux Support Deal |
Bristol Technology Ships Win-to-Lin Migration Tool |
Compaq and Samsung in Deal to Save Alpha |
Gateway Announces Server Appliances |
Dell to Factory-Install Red Hat Linux on Servers |
Windows 2000 Releases to Manufacturing - Finally |
Catalyst International Ties Fate to SAP |
Geac Computer Corporation: Mastering Growth by Acquisitions |
Dell's High-End Rackmount Servers - Challenging Compaq's Wintel Dominance |
Compaq's High-End Wintel-based Rack Servers - Working Hard to Stay #1 |
Compaq's Alpha - Moving Toward Its Omega? |
High-End Wintel-Based Rackmount Servers - The Big Get Bigger |
IBM's Four-CPU Wintel-Based Rack Servers High Performance, High Cost |
HP's Four-CPU Wintel-Based Rack Servers: Focusing on Reliability and Expandability |
Dell's 8-CPU Intel Servers Increasing Its Enterprise Focus |
Compaq's 8-CPU Intel Servers: the New "Big Iron" |
Network Engines, Inc. - Double the CPUs for Web Serving |
#2 Dell Tries Harder, Compaq Hurts |
Server Appliances - "Caching" In on Internet's Growth |