四、产品元素
软件产品终体现为提供给客户的一种操作经历或解决方案,包括 支撑平台 、 软件元素 和用户 操作 ,以及相互之间的数据交互,具有多维的特点。为了测试工作取得成效,必须综合考虑这些层面。以下给出软件产品应包含的一些重要的元素类别,如果仅注意测试其中几个类别则可能会遗漏重要错误。这些类别提供了一个起始点,需要在特定环境中细化。
4.l 支撑平台
指软件产品所依赖的任何事物。
· 外部硬件
用于支撑软件产品工作的硬件元素和配置,不作为产品的组成部分,如 CPU 、内存、键盘、外设等等。
· 外部软件
用于支撑软件产品工作的其他软件元素和配置,不作为产品的组成部分,如操作系统、驱动程序、字体等等。
4.2 软件元素
· 结构
指组成软件产品的任何事物。
代码: 组成产品的任何代码结构,从可执行码直至单个例程。
接口: 子系统之间的连接和通信点。
硬件: 任何作为为产品组成部分的硬件元素。
非执行文件: 除程序外的任何文件如文本文件、样本数据、帮助文件等等。
其他介质: 软件和硬件之外的任何介质,如纸面文档、 Web 连接和内容、包装、许可证协议等等。
· 功能
指产品要完成的任何事情。
用户接口: 任何协调与用户交换数据的功能。
系统接口: 任何协调与用户之外的其他实体(如其他程序、硬盘、网络、打印机等等)交换数据的功能。
应用: 任何用于定义产品、区分产品或完成核心需求的功能。
错误处理: 任何检测错误和从错误中恢复的功能,包括所有的错误消息。
可测试性: 任何支持测试该产品的功能如诊断程序、日志文件、声明、测试菜单等等。
· 数据
指产品要处理的任何任何事物。
输入: 产品要处理的任何数据。
输出: 经产品处理后产生的任何结果数据。
预置值: 要作为产品的一部分提供给客户、或直接构建在产品内部的任何数据如预制数据库,缺省值等等。
固定值: 存储在内部、在多个操作中应保持一致的任何数据,包括产品模式或状态如选项设置、视图模式、文档内容等等。
时序: 数据和时间之间的任何关系,如每秒击键次数、文件的时间戳、或分布式系统的同步。
非法: 任何能够触发错误处理函数的数据或状态。
4.3 操作
指产品将被如何使用。
· 使用情景
与时间相关的操作模式,包括产品在相关领域要典型处理的数据模式,随用户而变化。
· 物理环境
产品运行的物理环境,比如噪音、照明等等。
五、质量准则
当声称一个产品是“高质量”时,意味着“高度”满足了该产品的受益人所定义的质量准则。测试工作常常不得不在质量准则不很明确的情况下进行,以下所给出的准则类别可帮助进行“头脑风暴式”思考或揭示那些需要知道的问题,尤其适合根据实际项目进行定制。建 议同时参考 ISO 9126 质量特性标准或其他相关软件工程标准。
5.1 操作准则
· 能力
产品能否执行要求的功能?
· 可靠性
在所有要求的情况下产品均能正常工作并抵御失败吗?
错误处理: 产品在错误的情况下可抵御失败,失败时能够妥善应对并很容易恢复。
数据完整性: 产品可 防止系统数据的丢失或损坏。
安全( Security ): 产品可防止未授权用户的访问。
保险( Safety ): 产品的失败不会造成生命或财产的损失。
· 可用性
产品是否很容易被真实用户使用?
易学习性: 产品操作可很快被潜在用户掌握。
易操作性: 产品的操作只需付出很少努力,不会引起混乱。
· 性能
速度和相应能力如何?
· 可安装性
是否能很容易地安装在目标平台上?
· 兼容性
能否与外部元素和配置协同一致地工作?
应用兼容性: 产品能够与其他软件产品一起工作。
操作系统兼容性: 产品可与某种特定操作系统协同工作。
硬件兼容性: 产品可与某种特定硬件平台元素和配置协同工作。
后向兼容性: 产品能够与其早期版本协同工作。
资源使用: 产品不会滥用内存、存储介质或其他系统资源。
5.2 开发准则
· 可支持性
产品技术支持工作的经济性如何?
· 可测试性
产品测试工作的有效性如何?
· 可维护性
产品构建、纠错或功能增强的经济性如何?
· 可移植性
移植或在其他环境下重用产品相关技术的经济性如何?
· 可定域性
以其他语言发布产品的经济性如何?
六、测试技术选择
需求: 包括产品元素、质量准则、测试环境和参考资料,从总体上表达了受益人的愿望以及各种资源限制。完整需求的获得决非易事,并随着受益人经验的增加或环境的改变而处于连续变化当中。 参考资料是任何可用作需求来源的文档或实体,包括显式参考(由受益人明确指定)和隐式参考(任何其他未指定的有用资料)。