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 Engineering 1 (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 delivery 2, or a purely software system with planned revisions and upgrades 3, or a million widgets for mass distribution 4, 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