Clearly this can not be achieved without a highly automated testing and analysis process integrating tools and information sources and exploiting idle computing resources. The perpetual testing project is developing technologies to support seamless, perpetual analysis and testing of software through deployment and evolution. Whereas the current dominant paradigm treats testing as a phase that succeeds development and precedes delivery, we are building the foundation for treating analysis and testing as on-going activities to improve quality assurance without pause through several generations of product, in the development environment as well as the deployed environment. Software in the deployed environment is monitored not only to check conformance to required properties but also to validate and refine the models and assumptions on which quality assurance activities in the development environment depend. The degree of monitoring and transmission of information to the development environment differs depending on performance and security requirements of the end-user and is always be under user control.
Perpetual testing is necessarily incremental.
Analysis and testing processes are carried out in response to changes in software artifacts or associated information or in anticipation of change. Improvements to existing technologies focus largely on scalability and incrementality for large evolving systems. Analysis and testing is aimed at attaining and maintaining adequate adherence of all software artifacts to relations captured by a rich web of hypercode links, including dependence relations among software components and among properties and analysis techniques.