icrosoft’s Platform Tests help ensure that the many and varied applications available for Windows give users a consistent experience, and avoid application and operating system conflicts. The tests verify basic application stability, check for memory and other leaks, ensure that your application does not affect Windows stability, and ensure that your application works with operating system features such as fast user switching and running as a user with limited security permissions. The platform test is not a technology-agnostic test?it is specifically targeted at applications written in .NET for Windows platforms.
Customers have come to expect that Windows applications follow the “rules.” For example, modern Windows applications should install to C:Program Files by default, should not replace system files, and must not interfere with other applications or the operating system. To complicate matters for developers, the rules have changed over time as new Windows versions have appeared (remember when installing DLLs to C:WindowsSystem32 was not only allowed, but recommended?) The best way to ensure your applications adhere to the current set of rules is to use the Microsoft Platform tests, which encapsulate a minimum baseline of modern operating system support.
The primary reason given by Microsoft for completing the Platform tests is that they are one way to qualify for the Microsoft Certified Partner program if your organization is an independent software vendor (ISV). If your application passes five of the tests, your organization gets 50 “partner points,” and qualifies for the “Certified Partner” program. VeriTest runs the “certified” Microsoft Platform tests. You can enroll for those tests online at http://www.VeriTest.com/certification/ms/platformtest.asp.
But qualifying for the Microsoft partner program is not the only reason you should consider the platform tests?the tests help you to both verify and demonstrate to your customers that your software executes correctly and is robust and stable on Windows operating systems. Even if you choose to perform the tests in-house instead of getting VeriTest to perform and certify the tests, it’s well worth the effort to study the test specification and ensure that your application meets the requirements.
Using an externally-prepared test plan?saves you the time, cost, and effort of preparing your own test plan, and leverages the knowledge and experience of the team at Microsoft who prepared them. Finally, it’s important to perform tests such as verifying that your application works with fast user switching in Windows XP, or that it operates successfully when you are logged in as a user with restricted rights. Too often, we developers assume that our applications work in a variety of environments without actually putting them to the test. Making sure your applications pass the tests will reduce support requirements and improve customer satisfaction.
What Tests Do You Need?
The platform tests are broken up into two main areas: operating system tests and other components. You should initially aim to pass the fundamental operating system “core” tests; the other components tests essentially provide “extra points” for ISVs trying to qualify for the Microsoft Certified Partner program.
The core platform tests are the Windows Server and Windows Client tests. The Windows Server test verifies that your server components:
- Execute correctly on Windows Server 2003.
- Do not leak memory, locks, or handles.
- Do not attempt to replace files under Windows File Protection. Windows file protection maintains a list of operating system files, and actively monitors them for changes. If a protected file is changed, WFP will automatically restore the file from a backup it creates. Applications that use the Windows Installer will generally conform to this requirement.
The test also requires that your server application meets at least one of the following conditions:
- Does not require a reboot after installation or un-installation.
- Installs without disabling services (other than any services that are a part of your application).
- Supports Active Directory.
- Supports Windows Management Instrumentation (WMI).
- Uses SharePoint Services.
- Uses ASP.NET.
The Windows Client test verifies that your client components execute correctly on Windows 2000 Professional or XP and (just like the Windows Server test) the Windows Client test checks that your application does not leak memory, locks, or handles, and does not attempt to replace files under Windows File Protection.
The test also requires that your client application meets at least one of the following conditions:
- Does not require a reboot after installation, or un-installation.
- Supports “All users” installation.
- Supports fast user switching in Windows XP.
- Runs successfully as a “limited user.” Applications should not write to restricted parts of the registry. Settings should be stored in a subdirectory of the logged-on user’s Documents and Settings folder (Documents and Settings/Application Data/Your Application is recommended), or in the HKEY_CURRENT_USER hive of the system registry.
The “Other Components” Tests:
The other tests generally apply only if you are performing the Platform tests to gain points for the Microsoft partner program. Each test your application passes gives you an extra 10 points towards the 50 points required to join the program. Basically, these are “bonus points” for implementing Microsoft technologies in your application. These tests provide an indication of the kinds of tools and technologies being actively promoted by Microsoft, so if you implement some (or all) of them, you’ll be able to leverage some of Microsoft’s current marketing campaigns.
The SQL Server platform test applies if your application uses SQL server. It requires that you use ADO/ADO.NET, OLEDB, ODBC, or JDBC to connect SQL server, and that you either check for SQL Server service pack 3 or support both SQL Server authentication and Windows Authentication.
The Office test applies if your application contains a COM, VBA, or VSTO add-in, or exposes data using the Office 2003 Research and Reference feature or Smart Tags. If you can demonstrate your add-in or support for Research and Reference/Smart Tags, your application passes the test.
The Managed Code platform test applies if your application is written using the Microsoft .NET framework. The only requirement is that all application executables (DLLs and EXEs) are in managed code. You can use FXCop to check that all your DLLs and EXEs are in managed code, or you can try to load each DLL and EXE in your application using the ILDASM tool (ILDASM is one of the .NET Framework Tools?it installs by default as part of Visual Studio).
The Web Services .NET Framework test (this test is also called “.NET Connected” in some Microsoft literature) applies if your application consumes or exposes a public Web service, and is written using the Microsoft .NET platform. If you are exposing a Web service, it must support XML Schema, SOAP 1.1, WSDL 1.1, and if you are using a directory service, UDDI 2.0.
If your application consumes a Web service, using the .NET framework qualifies your application for the Web Services .NET Framework test, and there are no special requirements for the use of WSDL, UDDI, or any other protocols.
Preparing for the Tests
To begin preparing for the tests, follow these steps:
- Read the Application test specification.
- Work though the checklist sections and make sure that you think your application meets the requirements as listed.
- Prepare a client (and server, if required) test system with the latest Windows security patches installed, and run though the tests in the detailed section of the document. Make sure you write down your test steps, expected results, and actual results?it’s too easy to subconsciously assume that your application functions correctly. Writing down the results is a useful discipline to ensure you actually perform the tests. Ideally someone who was not involved in developing the application should perform the test.
- Sign up for testing at VeriTest.
How the VeriTest Process Works.
If you are performing the Platform Tests to join the Microsoft Certified Partner program, you must submit your application for testing by VeriTest. Even if you are not trying to qualify for the Microsoft Certified Partner program, you may want VeriTest to perform the testing as a kind of “independent audit” of your software.
VeriTest testing costs $400 per platform test. The sign-up process at the VeriTest site takes some time?you have to enter details about your organization and application, select tests, and answer questionnaires for each test. The test questionnaires contain questions that determine whether your application meets the requirements for Platform testing. You’ll have all the answers at hand if you followed the preparation steps shown earlier.
After completing the questionnaires, you submit your application for testing, and send VeriTest your application install media (you can upload a disk image to VeriTest, let them download an image from you, or mail it?but the process will run more smoothly if you submit your disk image electronically). VeriTest will review your questionnaires before testing begins and sort out any problems.
VeriTest is a worldwide company, so don’t be surprised if you receive e-mail messages from Ireland, China, and the United States as part of the process.
Testing takes from one to four weeks. VeriTest sends you an e-mail when the tests are complete, informing you of your successful pass (including a Product ID number you can enter at the Microsoft Channel Partner site to indicate that you have the required points for the “Certified Partner” program), or you will receive a failure report detailing the reasons your application did not pass, including the steps to reproduce the problem.
You can rectify any problems and re-submit the application for a re-test for an additional fee. If your application passes (for example) four of the five tests, you need to re-submit only that one test.
The Platform tests were designed as a means to qualify for the Microsoft Certified Partner program, but you can use them to independently verify that your application, its installer, and configuration meets the baseline level of operating support for both Windows client and server applications?whether you choose to have your application tested by VeriTest, or perform your testing in house.
After your application has passed the Platform tests, you will know (rather than just think) that your application meets the minimum requirements expected by your customers, and will run successfully on different Windows systems. It’s good to know?but make sure you prepare for the tests properly. You can maximize your chances of success by following the guidelines and preparation steps in this article.