引言
产品元素是指那些你需要进行测试的东西。软件产品是提供给用户的问题解决方案,具有复杂性和隐蔽性——软件产品有多个维度。测试需要覆盖产品的多个维度,测试那些重要的,而不仅是哪些容易观察到的。
结构:产品的组成部分
1 代码结构
2 硬件结构
3 非可执行文件,例如:多媒体文件、帮助文档等
4 附属产品,例如纸质文档、在线文档、打包文件、许可证书等
功能:产品做的每一件事
1 应用:产品的核心需求的功能
2 计算:产品功能中的算数功能或操作
3 时间相关:超时设定、每日或月末报告、夜晚批处理、时区、工作日节假日、利息计算、项目或权限有效周期、计时功能
4 变化:修改或变更某些东西,例如改变账户余额、修改订单状态等
5 启动和关闭:在请求、初始化以及退出服务时,注意方法和接口的处理
6 多媒体:声音、位图、视频等
7 错误处理:功能对错误的检测、从错误中如何恢复,还有错误的信息提示
8 交互:各服务、接口间的交互通讯
9 可测性:辅助测试的功能,例如诊断功能、日志文件、断言等
数据:产品处理的那些东西
1 输入:产品处理的输入数据
2 输出:产品的处理结构
3 预置:作为产品的一步的数据或者内置的数据,例如:数据库、程序中写死的或配置的默认值
4 持久:需要存储的数据,像记录、样式、状态等
5 顺序/组合:有序的数据,例如:字母顺序、已排序的数据等
6 基数:对象的个数或值域,例如取值范围从1到9,有限个枚举,唯一性
7 大和小:数据的变化区间和集合的最大最小值
8 杂音:无效或具有破坏性的数据、产生于不受控制的或错误的处理过程的数据。
9 生命周期:必须覆盖数据从生成、读取、修改、删除的生命周期。
接口:产品可用的通道
1 用户接口:让用户可以改变数据的元素,例如操作面板、按钮等
2 系统接口:与其他系统、磁盘、网络等交互的接口
3 api/sdk:可编程的接口或工具
4 导入/导出:可以提供打包数据的功能,导入其他数据的功能
平台:产品所依赖的
1 硬件:为了使产品能够提供服务的,非产品本身需要的硬件设备。例如负载均衡器、网络交换器、加密机等
2 软件:为了使产品能够提供服务的,非产品本身需要的软件设施。例如操作系统、驱动程序等
3 其他组件:库或者组件,是产品提供服务所需但产生于项目外部的。
操作:产品将如何使用
1 用户:每类用户使用产品的特征是什么
2 环境:产品将被使用的物理环境怎样?噪音、灯光、网络情况(APP测试特别需要关注)
3 通常的使用:产品通常遇到的输入的形式和操作顺序
4 不受欢迎的使用:不在意的、错误的、恶意的输入形式和操作顺序
5 极端的使用:具有挑战性的输入形式和操作顺序
时间:产品与时间的关系
1 输入输出:什么时候输入,什么时候输出,输入输出间延迟多少
2 快和慢:使用“快”和“慢”的输入操作
3 改变速率:一会快一会慢,例如平缓加快输入、突然加大输入、挂起处理导致瓶颈、中断操作)
4 并发:多用户、时间片、多线程、信号量、共享数据
翻译说明:之前介绍的HTSM模型,弱化了模型的详细内容。HTSM本身只是个框架,现在按James Bach 2015年的版本,做一个翻译。这是译文的第三部分:产品元素。
有不太清楚和错漏的,也欢迎大家指正,在此表示感谢。
另外,HTSM本身最重要的是适合自己的使用。James Bach的版本未必就是适合你的。仅作为参考。所以你发现有你不同意的,或者不以为然,都是正常的。