原文引自:
http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/AppendATestCases.mspx
附录 A – 测试用例
发布日期: 8/19/2004 | 更新日期: 8/19/2004
Microsoft Corporation
内容:讨论 Offline Application Block 的测试方法。
本页内容
附录 A 说明了针对 Offline Application Block 运行以确保其正常工作的测试。在开发自己的应用程序时,我们可以将它们作为要考虑的测试类型的建议。
这些测试包括以下七个方面:
• |
功能测试,确保应用程序符合指定的要求 |
• |
白盒测试,测试小范围特定区域的代码 |
• |
安全性测试,测试应用程序及其数据是否受到保护、隐私是否受到保护,以及数据是否正确加密 |
• |
性能测试,测试应用程序在各种情况下的处理和响应时间 |
• |
集成测试,确保应用程序与其他系统和组件配合工作 |
• |
内容测试,验证文档的正确性 |
• |
安装测试,验证应用程序已正确安装在客户端计算机上 |
文档的每个部分都与其中一个类别相对应。我们为每个类别提供了两个表格。
第一个表格包括:
• |
范围,是指该测试类别所覆盖的领域 |
• |
时间,是指这些测试应在开发周期的何时开始 |
• |
用于执行这些测试的工具 |
• |
自动测试是否适用于这些类型的测试 |
第二个表格是属于该类别的示例测试的清单。
功能测试
功能测试可确保应用程序符合指定的要求。
表 1:功能测试定义
范围 |
这些测试覆盖了智能客户端应用程序的功能,以确保它符合指定的要求。它们可提供应用程序的有效性和使用性的反馈,以解决要求和实际应用程序之间的偏差。它们使用基于功能和基于案例的方法来测试图形用户界面 (GUI)。 |
开始时间 |
在确定要求后,就应尽早计划测试并撰写文档。随着越来越多的端到端功能投入使用,测试的数量将不断增加。 |
要使用的工具 |
要使用的工具包括:
在 GUI 可用之前测试已公开功能的示例窗体。
GUI 记录和播放工具。 |
自动角色 |
建议使用自动功能针对新的软件内部版本启用多个快速的版本验证测试。 |
表 2:功能测试
|
应用程序具有脱机和联机状态的视觉显示。 |
|
应用程序允许用户通过 Internet 登录。 |
|
应用程序允许用户通过企业网络登录。 |
|
当用户登录时,应用程序提示用户是进入脱机状态还是联机状态(仅当用户处于联机状态时适用)。 |
|
当用户注销时,应用程序提示用户同步化工作队列数据(仅当用户在脱机状态下对工作队列进行了更改,才会发生这种情况)。 |
|
测试应用程序在联机时显示工作项目。 |
|
测试应用程序在脱机时显示工作项目。 |
|
测试应用程序能够更改要求应用程序联机的工作项目。 |
|
测试应用程序能够提示用户为已更新的队列数据同步化工作项目。 |
|
测试用户可以手动强制系统脱机。 |
|
测试用户可以手动将系统切换回联机状态。 |
|
测试应用程序具有自动连接状态检测策略。 |
|
测试应用程序具有用于下载工作项目的下载界面。 |
|
测试用户可以下载工作项目、脱机、在脱机状态下更新工作项目、联机以及在联机状态下进行同步。 |
|
测试应用程序在编辑数据时将其标记为 dirty,并检查陈旧数据和废数据是否过期。只能从服务器覆盖陈旧数据。 |
|
测试检查 MSDE 缓存存储提供程序是否用于缓存数据。 |
|
测试检查独立缓存存储提供程序是否用于缓存数据。 |
|
测试检查“消息队列”队列存储提供程序是否用于排队数据。 |
|
测试检查 MSDE 队列存储提供程序是否用于排队数据。 |
|
测试在脱机状态下对客户端数据进行的多个更新在联机时进行同步。 |
|
测试可以为 ConnectionDetectionStrategy 配置多个提供程序。 |
|
测试支持使用 ReferenceDataCache 的不同缓存存储区。 |
|
测试可以为 QueueProvider 配置多个提供程序。 |
|
测试 ConnectionDetectionStrategy 的轮询间隔配置。 |
|
测试 Executor 操作的轮询间隔配置。 |
|
测试 QueueProvider 的最大队列消息配置。 |
|
测试缓存数据的过期配置。 |
|
测试用于连接到 MSDE 的连接字符串配置。 |
|
测试使用自定义提供程序的加密是通过 ICryptographicProvider 接口实现的。 |
|
测试下载频率的配置属性。 |
|
测试错误和边界条件。 |
|
测试可以跨多个 Offline Application Block 的运行实例来存储和检索数据。 |
白盒测试
白盒测试主要用于小范围特定区域的代码。
表 3: 白盒测试定义
范围 |
这些测试覆盖小范围的代码单元,并使用代码演练、代码检查以及使用测试框架的单元级别测试来执行。 |
开始时间 |
这些测试在开发周期的早期进行。应在代码刚被开发出来、并且还是可随时演练的小型独立代码单元时执行测试。 |
要使用的工具
代码范围的工具
内存分析工具 |
要使用的工具包括:
查看代码是否符合开发准则的代码检查
单元测试框架工具(应该能够自动执行) |
自动角色 |
单元测试自动化对于针对仍处于开发中的应用程序执行可重复的全面测试是至关重要的。 |
表 4:白盒测试
|
演练代码并检查它是否满足质量要求,例如是否符合逻辑,是否符合开发标准和最佳做法,以及是否具有高可读性的注释。 |
|
使用代码范围的工具运行代码,以确保所有可用的代码都在进行测试。 |
|
执行代码的内存分析,以确保正确释放对象和收集垃圾。 |
|
使用单元测试框架工具来创建用于测试公共方法的单元测试。在代码开发过程中扩展这些测试,并定期运行它们。单元测试可作为一种快速检查,用于确保代码在更改后不会被损坏。要使单元测试具有更强的逻辑性,请将它们映射到“功能测试”部分中说明的测试用例。 |
安全性测试
安全性测试用于测试应用程序及其数据是否受到保护,隐私是否受到保护,以及数据是否正确加密。
表 5:安全性测试定义
范围 |
这些测试覆盖的范围包括:验证隐私是否受到保护、数据是否加密、数据是否防篡改,以及应用程序是否能够承受各种类型的恶意攻击。安全性测试应主要用于独立的系统单元和整个应用程序。 |
开始时间 |
在确定要求后,就应计划这些测试。这些测试应在实现安全措施和方法时执行。 |
要使用的工具 |
要使用的工具包括:
DOS 攻击模拟
网络探测工具
此外,请参阅清单章节 |
自动化 |
不适用 |
表 6:安全性测试
|
测试应用程序能够将参考数据安全地下载到本地计算机。 |
|
测试应用程序能够将更新后的参考数据安全地上载到服务器。 |
|
测试应用程序能够将对已下载数据的访问权限制给经授权的用户。 |
|
测试可以确保通过公司 Intranet 访问服务的安全。 |
|
测试可以确保通过 Internet 访问服务的安全。 |
|
测试可以安全存储已下载的消息。 |
|
跟踪查看已下载的参考数据是否被篡改。 |
|
测试检查是否可以通过正确的登录凭据限制对排队数据的访问。 |
|
测试检查排队数据是否已正确加密并签名。 |
|
测试检查是否可以通过正确的登录凭据限制对缓存数据的访问。 |
|
测试检查缓存数据是否已正确加密并签名。 |
|
测试检查是否可以通过第三方证书(例如 Verisign)使用服务进行下载。 |
|
测试检查程序集是否在部署服务器上进行加密和数字签名,并在客户端下载时进行验证。 |
|
测试检查为服务生成的代理是否具有有效的终结点,以防止欺骗。 |
|
测试检查多个用户的缓存数据和排队数据共享一个客户端是否安全。 |
|
验证 DemandReflectPermission 在使用反射的代码中正确实现。 |
性能测试
性能测试用于测试应用程序在各种情况下的处理和响应时间。
表 7:性能测试定义
范围 |
这些测试覆盖了在各种数据加载、内存压力条件、网络可用性以及不同的连接速度下,应用程序的处理和响应性能。 |
开始时间 |
在确定要求后,就应该计划这些测试。可以通过使用内部测试存根和性能测试工具来对已完成的单元进行测试。随着越来越多的端到端功能投入使用,测试的数量将不断增加。 |
要使用的工具 |
要使用的工具包括:
性能测试工具或自定义测试工具(应自动化)
PerfMon
内存清理工具
磁盘空间清理工具
性能分析工具 |
自动化 |
建议使用自动功能针对较新的软件内部版本启用多个快速的性能测试。这将确保应用程序符合可接受的性能标准,同时还有助于比较研究。 |
表 8:性能测试
|
测试检查在超出延迟时间段后是否会发生下载。 |
|
测试检查在超出延迟时间段后是否会发生上载。 |
|
通过在一段时间内在某一行中数百次地下载项目来测试性能。 |
|
通过在一段时间内在某一行中数百次地上载项目来测试性能。 |
|
通过在一段时间内下载和上载不同大小的数据来测试性能。 |
|
通过使用不同的带宽和延迟时间下载和上载数据来测试性能。 |
|
通过使用有限的内存和磁盘空间下载和上载数据来测试性能。 |
|
分析以下类型的数据:
线程数量
系统池资源
争用
进程工作集
系统队列
进程 CPU 上下文
内存和 IO
网络
系统资源
进程可用性
异常
进程资源
事务处理时间。 |
集成测试
集成测试可确保应用程序与其他系统和组件配合工作。
表 9:集成测试定义
范围 |
这些测试覆盖了应用程序与外部组件和已存在系统的集成。测试应用程序与 Web 服务的交互就是一个示例。这些测试可验证整个工作流,以及组成应用程序的各个组件之间的所有交互。 |
开始时间 |
在确定要求后,就应该计划这些测试。随着不同系统部件的集成,测试的数量将不断增加。 |
要使用的工具 |
不适用。 |
自动化 |
不适用。 |
表 10:集成测试
|
测试客户端应用程序代码和 Web 服务之间的集成。 |
|
测试工作项目的下载和随后的已修改工作项目的上载。 |
|
测试脱机状态下工作项目的排队,以及重新联机后排队消息的处理。 |
|
验证不同队列提供程序与不同缓存提供程序的配合工作。 |
|
在脱机状态下将多个更新应用到工作项目,并在重新联机时检查同步。 |
|
测试在服务器端筛选参考数据的方法,以下载数据库的适用部分。 |
|
测试应用程序可以根据服务器通知,为用户显示与其他用户所作更改冲突的工作项目列表。 |
|
测试应用程序可以根据定义的时间段将日志与服务器日志进行同步。 |
|
测试在客户端修改数据的同时、该数据正在服务器中进行更新所导致的冲突情况。 |
|
测试能否通过在服务器上添加新的数据(工作项目)来刷新客户端。 |
|
测试添加到客户端的新数据(工作项目)能否与服务器进行同步。 |
|
修改服务器中工作项目的架构并更新客户端。 |
|
测试两个或更多独立联机客户端同时更新服务器上的数据的情况。 |
|
测试两个或更多脱机客户端修改数据并更新服务器的情况。 |
|
确保测试用例覆盖了所支持平台上应用程序工作流的验证。 |
内容测试
内容测试用于验证文档的正确性。
表 11:内容测试定义
范围 |
这些测试可验证在安装和操作过程中为用户提供的说明内容。这些测试覆盖了补充的用户指南和帮助文件。这些测试可验证内容的使用性、正确性和完整性。 |
要使用的工具 |
内容测试大多通过手动完成。熟悉应用程序的使用性和测试工程师能够指出矛盾或缺少的信息,以及应用程序和文档之间的差异。 |
要使用的工具 |
不适用。 |
自动化 |
不适用。 |
表 12:内容测试
|
测试内容在技术上的正确性。 |
|
测试有关操作、流程和时间安排的步骤的顺序是否正确。 |
|
测试内容的相关性。 |
|
测试内容不是模棱两可并且是易于遵循的。 |
|
测试内容的一致和统一。 |
|
测试内容为每个主题都提供了完整的信息。 |
|
测试需要进一步说明的主题带有有助于更好理解的适当示例。 |
|
测试主题带有对相应和相关主题的引用。 |
|
测试内容是否考虑到期望用户的技术水平和熟悉的交流语言。 |
安装测试
安装测试用于验证应用程序是否正确安装在客户端计算机上。
表 13:安装测试定义
范围 |
这些测试可验证应用程序最后交付的功能和客户端计算机上的安装,并验证所有适用文件的交付。 |
开始时间 |
这些测试通常在开发和测试周期的最后进行。 |
要使用的工具 |
要使用的工具包括 GUI 记录和播放工具(应该能够自动运行)。 |
自动角色 |
使用在功能测试过程中创建的版本验证测试 (BVT) 自动脚本,以便在安装后快速验证应用程序的主要功能。这就提供了验证安装是否正确的快速方法。 |
自动工具 |
针对已安装的应用程序执行 BVT 测试所使用的 GUI 记录和播放工具。该工具提供了验证安装的快速方法。 |
表 14:安装测试
|
测试应用程序安装、运行脚本时未出现错误,以及所有主要功能都能通过测试。 |
|
测试安装在客户端计算机上的所有文件的版本(包括代码和内容)都正确。 |
|
测试可以卸载应用程序并测试清理的验证。 |
|
在安装中验证文件的命名标准。 |
|
验证安装程序在遇到错误情况(例如磁盘空间不足)时可以正常退出。 |
|
在安装过程中验证注册表项,以及在卸载过程中验证注册表的清理。 |
|
执行全新的计算机安装。这台计算机带有新安装的操作系统和少量必需的已安装组件。 |
|
测试具有不同软件配置的计算机上的安装。 |
|
测试安装程序创建了正确的 Start 菜单项。 |
|
测试安装程序将文件置于正确的文件夹中。 |
|
测试程序集是否在部署服务器上进行加密和数字签名,并在客户端下载时进行验证。 |
转到原英文页面