The process of deploying, installing, and using software upgrades (also called updates or patches) is riddled with problems resulting from a poor integration between upgrade development, deployment, and remote (user-site) testing. Thus, we are building a distributed framework, called Mirage, for integrating deployment and remote testing into a structured and efficient upgrade development cycle that encompasses both software vendors (as well as software contributors and distributors) and users. When completed, our framework will produce upgrades that behave properly with high confidence when widely deployed, thereby reducing the exposure of users to problematic upgrades and facilitating the debugging of problems by the vendors. Given these benefits and the extreme importance of upgrades for most computer users and vendors, the practical impact of Mirage can be significant. We will disseminate our findings and source code through our educational program, over the Web, and through scientific publications in major conferences and journals.