What is it that draws an IT professional into test engineering? What does it mean to be a test engineer? This paper presents a view of the history of test engineering, defines it as a sub-discipline of systems engineering, and touches on some of the reasons software, information technology, and engineering professionals are drawn to this challenging and rewarding field.
Systems Engineering for a Complex Entrepreneurial Society
Since the advent of the first mechanical and electrical machines, improvements to their functionality, reliability, operability, safety, and cost have been an ongoing effort for corporations and their engineering staff. The American entrepreneurial spirit and free market forces during the twentieth century helped to bring about many new systems and enterprises. Competing and succeeding has required engineering companies to recruit very specialized engineers. For example, the companies (such as General Electric) that originally focused on the development of motors and the transfer of electricity evolved em>integrated engineering disciplines such as jet propulsion and nuclear energy. By bringing together electrical, chemical, mechanical, and aeronautical engineers, you can create a jet engine. These companies could not create these complex systems without bringing all of these disciplines together. So they had to recruit specialized engineers, and they had to get the engineers to work together in a coordinated fashion.
Coordinating diverse disciplines required a system engineering approach and the employment of a new type of engineer. The Systems Engineer assures that the final system is composed of properly integrated subsystems and components, and that it meets customer expectations. Systems Engineers support a mix of technical and managerial functions. The Systems Engineer is concerned with system requirements, system architecture (hardware and software), design, development, integration, testing, customer acceptance, and maintenance. The Systems Engineers operate at a level that encompasses the software and hardware architecture in combination with network elements, human operations, physical interfaces, computers, and non-computer hardware (for example, physical components such as solar panels, antennas, speed indicators, temperature gauges, switches, etc.) The Systems Engineer also operates as a liaison between corporate management and the specialized engineers and analysts, helping to coordinate resources, resolve issues, and plan project schedules. Additional information on Systems Engineering may be found at the website for the International Council on Systems Engineering1 (INCOSE), founded in 1990 to advance the state of the art and practice of systems engineering in industry, academia, and government.
Test Engineering as a Sub-Discipline of Systems Engineering
As systems and products became more complex, system engineering departments organized their test support engineers into groups dedicated to the test support tasks, and the Test Engineering profession was created. Gradually and through lessons learned it became apparent that these test support groups should operate independent from the development staff to assure objectivity in their testing and test results reporting. As a group separated from the designers and developers, the Test Engineers could perform an independent assessment of the system or products, and this provided an improvement to the quality. The discipline has had to evolve to meet the demands of complex systems with a low margin for error. Recent failures and system malfunctions reported in the news have been all too costly, and this confirms that the challenges ahead require a disciplined approach. Complex systems come in many forms. Whether a company is building a system composed of hardware and software components for a one-time delivery2, or a purely software system with planned revisions and upgrades3, or a million widgets for mass distribution4, proper test engineering applies. The Test Engineer is a specialized Systems Engineer, focused primarily on the verification of the system design and functionality. In many companies the Test Engineer also supports Quality Assurance functions related to process improvement. The larger companies may have a QA organization separate from the test organization, which allows the Test Engineer to remain specialized. However, the modern Test Engineer is fully aware of the system development life cycle components and issues and how they may affect the quality of the final product or system. The Test Engineer may also be considered a specialized Software Engineer, when the system being designed is composed of a purely software architecture. In this case the Test Engineer’s test environment and work bench is composed of software components only, but the duties and focus are the same–to discover and prevent defects from getting into the final system or products.
The Satisfaction of Test Engineering
Those fortunate enough to have supported a successful large-scale system project, from initial design through final acceptance, will likely have experienced a very satisfactory feeling of achievement. But they may also have experienced a range of emotions, from stress, frustration, disappointment, and dread, to amusement, pride, and triumph. Especially on development programs that run for several years, these emotions result from the long parade of urgent issues and milestones, and from the interaction with the personalities among the many engineers, analysts, and managers that make up a large program. More often than not, the negative days outnumber the positive days. Schedules are often tight or unrealistic. Test Engineers often have to report new system issues or product defects. So what is it then that keeps the Test Engineer plodding along, satisfied with completing today's verification tasks and planning tomorrow’s?
Few professions have the opportunity to apply scientific and computational principles to solve everyday human problems. This is what engineers do. They engineer solutions that solve problems or make life more comfortable. The nuclear engineer uses principles of nuclear physics, thermal physics, and electricity to safely move energy to where it is needed by people. The civil engineer uses principles of structural mechanics and materials science to design a safe bridge. The systems engineer coordinates the work products of others to orchestrate the design, development, and integration of a system. To accomplish this, the system engineer applies principles composed largely of process and project control methods and tools.
System Test Engineers utilize a distinct set of methods and tools to verify that a system will function as intended and will meet customer expectations. Some of these methods and tools, to name a few, include simulators, test data generators, written test plans & scripts, peer reviews, automated regression tests, data analyzers, requirement traceability matrices (RTM), inspection checklists, and
2 A satellite is an example of a very complex system with a one-time delivery (although some satellites now have onboard software, allowing for software revisions to be uploaded).
3 Pure software systems can also be very complex, such as a stock trading system.
4 Cell phones are mass produced, complex systems.