Build and test, then review the results of the software builds; follow up after deployment with the end users to ensure quality assurance, make the changes that improve the quality. It is simple as that, except that it is difficult to implement these processes in a matter that is cost effective for the software project stakeholders, and is painless for the end users.
To perform testing, analysis, QA and reviews, a centralized production, tester and project server that manages change across organizations of all sizes, which enables secure management or all project artifacts and source code in one repository. The ability of the centralized server to automatically captures the information you need to provide full traceability between source code, builds and work items (such as requirements, bugs and tests) will enhance the ability to successfully complete a project in cost and allotted timeframe.
Manage the test life cycle[i]
Software tests should have the same life cycle as, and be managed in the same way as, development code. The tool that you select should be able to manage a large number of tests and provide automatic status to the architecture group that includes the software engineer. The test management tool should also allow the grouping and sorting of tests using attributes or categorize into lists to manage as a single artifact. An integration with the provides a single view of test, code and requirement metrics to measure the effectiveness of test teams and tests for effective test planning as well as customizable test process and workflow.
Comprehensive Web Testing[ii]
Comprehensive web testing tools provide coverage for Web Services, HTTP, XML and streamlined for testing web-based applications. The web testing tool should include automated record playback functionality to quickly create and execute web tests. The tool should include: leveraged automatic handling of cookies, redirects, dependent requests, hidden fields as well as a variety of simulated environments, networks and browsers to create tests that are stable, repeatable and require less maintenance. The comprehensive test tool should also be able to data bind web tests to broaden coverage and also add custom validation or extraction rules to the recorded tests all through a simplified Web Test editor. In addition the test tool should be able to generate code automatically from recorded tests to create highly specialized tests, so that developers can use existing coding skills to extend and debug tests.
Prescriptive Performance Testing[iii]
A larger team of testers and developers can uncover architectural and design issues to identify bottlenecks early in the development lifecycle using prescriptive performance testing. Simulations of production loads should be able to diagnose performance issues in pre-production environments. In selecting tools, it is important to evaluate whether or not the tools allow an increase in software productivity by converting existing tests into load tests. A prescriptive performance testing tool will provide guidance such as pre-packaged counters, pre-set thresholds, pre-built views of load statistics and describe via reports the effect of these tests on the servers under load and built-in knowledge of server behavior.
To create top quality software, a centralized server is needed to track the versions of files under source control, keep a record of their change history, and support advanced functions like branching, merging, and labeling.
The server records the history of any file, folder, or project that is placed under source control. Users have managed access to the latest version of the file and can view, compare, and roll back to previous versions of the file. Even if the file is deleted, the history is preserved, and it can be retrieved if the development project requires it.
The centralized server should control tracks versions of files through advanced actions such as branching a project or merging branches together. A version of a set of items can also be labeled, making it easy to identify important versions such as betas or release candidates. Ease of use is also important, as well as command line capabilities for batch processing, and so forth.
[i] Manage the test life cycle: http://msdn2.microsoft.com/en-us/teamsystem/bb507729.aspx
[ii] Comprehensive Web Testing: http://msdn2.microsoft.com/en-us/teamsystem/bb507729.aspx