Software Quality Characteristics - 软件质量特性

题记:记得上次Interview时,boss问我对软件质量的理解。我说,对于企业级产品来说是稳定。对于个人级产品来说,就是易用性。boss讲,应该以是不是满足客户需求来衡量软件的质量;今天上午,陪同事去面试,问“你会从哪些方面考虑软件可能存在的缺陷”,同事答道“功能性,易用性”(PS:同事是个新人,刚入行两三个月,能想到易用性,出乎我的意料) --- 这两个问题,一个从正面,一个从反面,考证了一个测试人员对软件质量的理解。想起两周前看的这篇《Software Quality Characteristics》,为了加深自己的理解,献丑翻译一下。

浏览下面的列表,同时结合你所测试的产品/功能的实际,添加属于你自己的特定条目,构造出一份属于你自己的列表来。

功能性(Capability).这个产品有没有提供有价值的功能?

- 完整性(completeness):客户所预期的所有重要功能有没有已经实现。

- 准确性(Accuracy):产品中的任一输出,计算都是正确的,并以有效数字呈现给用户。

- 高效性(Efficiency):以一种高效的方式来执行操作(别做那些不希望你做的)。

- 交互性(Interoperability):产品中的不同特性(功能点)以最佳的方式交互。

- 并发性(Concurrency):如同其他进程一样,可以并发执行多个任务。

- 数据不可知(Data agnosticism):支持所有可能的数据格式,并能处理好异常。

- 可扩展性(Extensibility):客户或其他第三方能够添加新的特性,或则根据自己的需要做定制。

可靠性(Reliability).确信产品在许多不同的场景下都可以正常使用

- 稳定性(stability):产品不应该导致系统崩溃,正确处理异常和脚本错误。

- 健壮性(robustness):产品能够妥善处理那些可预期、不可预期的错误。

- 压力处理(stress handling):系统是怎么处理那些超出限制的情况。

- 可恢复性(recoverability):当发生一次致命错误以后,产品是否可恢复、继续使用。

- 数据完整性(data integrity):产品中的各种数据从始至终都是完整的。

- 安全性(safety):对于那些有恶意企图的人,是不是可以把它拒之门外。

- 灾难恢复(disaster recovery):如果最坏,最坏的情况发生了

- 可信赖(trustworthiness):产品的行为是不是一致的,可预期的,可信赖的。

易用性(Usability).这个产品很容易上手吗?

- 功能可见性(affordance):产品吸引人们去发现这个产品可能的功能。

- 直觉(intuitiveness): 容易理解和解释这个产品可以干些什么。

- 极简主义(minimalism):产品的内容,或外观没有重复冗余。

- 易学性(learnability):容易上手,能够快速简单的学习如何使用这个产品。

- 易记性(memorability):一旦你学习了如何使用某个功能,就不会忘记。

- 可发现性(discoverability):通过UI上面点点,便能够了解产品信息和功能。

- 可操作性(operability):一个有经验的使用者可以很快的执行一些常用的操作。

- 互动性(interactivity):产品的状态易于理解,通过GUI/API能够交互。

- 可控(control):用户感觉对于程序的整个过程都是可控的。

- 清晰(clarity):描述清晰,详尽,没有歧义。

- 错误(errors):提供出错提示,很难出错,一旦出错便能够修复。

- 一致性(consistency):从始至终产品的行为都是一致的。

- 程序的剪裁能力(tailorability):默认值和行为能够灵活的修改。

- 可访问性(accessibility):这个产品能尽可能多的为更多人使用,符合应用程序访问标准。

- 文档(documentation):提供覆盖功能点的帮助文档。

魅力(charisma).你的产品有吗

- 唯一性(uniqueness):产品是否可辨认,有一些别人没有的。

- 满意度(satisfaction):你用完这个产品后感觉怎样?

- 专业性(professionalism):产品是否具备专业品质,符合需求。

- 吸引力(attractiveness):产品的所有方面都很吸引眼球。

- 好奇心(curiosity):用户是否感兴趣,愿意尝试产品的方方面面。

- 入迷(entrancement):当使用这个产品时,有没有入迷,全身心投入其中。

- 大肆宣全(hpye):这个产品有没有使用一些最新的技术、想法

- 预期(expectancy):产品超出预期,满足了一些你都不知道的需求。

- 态度(attitude):产品和它的信息以一种正确的态度,语言和你交流。

- 故事(story):产品的开始,构造,或则使用过程中,有没有一些引人注意的故事。

安全(security). 产品对于那些不受欢迎的使用是否有足够的保护呢

- 身份验证(authentication):为用户提供识别

- 授权(authorization):产品能够处理授权的用户可以看到些什么,做些什么

- 隐私(privacy):没经授权的用户不能访问数据

- 安全漏洞(security holes):产品不应该引入社会工程学漏洞

- 保密(secrecy):产品不应该暴露底层系统的信息。

- 刀枪不入(invulnerability):能够抵挡得住渗透企图。

- 病毒免疫(virus-free):不要传播病毒,或则看上去像是在传播病毒。

- 抵制盗版(piracy resistance):不得非法复制,发布软件,或代码。

- 合规(compliance):是否符合产品应该遵守的安全规范。

性能(performance). 你的产品响应够快吗?

- 功能(capacity):在不同环境下(如,网络环境比较差的时候),产品是否有很多限制。

- 资源利用率(resource utilization):对于cpu,内存,磁盘,及其他资源的占用是适当的。

- 响应(responsiveness): 一个操作的响应是可以接受的。

- 可访问(availability):当应该能访问的时候,就要能访问。

- 吞吐量(throughput):产品能够处理大数据量。

- 耐力(endurance): 产品能够长时间运行。

- 可伸缩性(scalability):横向,纵向拉伸产品,会怎么样

IT-bility。 产品是否容易安装,维护,售后支持

- 系统需求(system requirments):在正确的配置下能够运行,同时对于那些缺少组件等不同情况,也能处理。

- 安装(installability):产品能够安装在特定平台了,并留下痕迹。

- 升级(ungrades): 在不丢失配置,设定的情况下,升级到新版本。

- 卸载(uninstallation):当卸载产品时,和产品有关的文件,资源是否都已删除(用户的,或系统的文件除外)。

- 配置(configuration):安装是否可配,比如安装在不同路径下以适应客户需求。

- 部署(deployability):能不能由it 部门这对不同用户,环境进行部署

- 可维护性(maintainablity):产品及其组件是否容易维护,客户支持。

- 易测(testability):客户是否方便有效地测试已经部署的产品。

兼容性(compatibility). 产品和其他软件、环境的交互如何

- 硬件兼容性(hardware compatibility):产品在合适的硬件上可以运行。

- 操作系统兼容性(operating system compatibility):产品可以在指定操作系统版本上运行,符合典型行为。

- 应用程序兼容性(application compatibility):产品,及其数据能够和客户常用的一些其他程序共存。

- 配置兼容性(configuration compatibility):产品的配置和系统其它配置能够融合。

- 向后兼容性(backward compatibility):当前版本能做的任何之前一个版本能做的事情

- 向前兼容性(forward compatibility):是否能够应用一些将来版本可能用到的组件,接口?

- 易于维护(sustainability):如 节省能源,便于开关,省电模式、远程连接

- 标准一致性(standards conformance):产品遵守应用标准,规章,法律、伦理

 

内部软件质量特性

下面列出的这些特性并不为最终的用户所直接接触,但对于一个成功的产品而言,这些是同等重要的。

可支持性(supportability):客户的使用过程中的问题是否能够得到支持呢?

- 标识(identifiers):是否很容易的辨认软件的各个部分、软件版本,或特定的错误。

- 诊断(diagnostics):无论客户的环境如何,都能够找出产品的配置,日志等细节。

- 故障排除(troubleshootable):是否能够很容易的定位错误(如,log文件)、获得帮组。

- 调试(debugging):当需要时,能否观察到软件内部状态。

- 多用途(versatility):除了当初设计的使用场景,是否还有其他途径使用这个软件。

可测性(testability):是否容易检查、测试这个产品

- 可追溯性(traceability):产品以一定格式、一定等级记录产品的行为。

- 可控性(controllability):能独立的设置状态、对象、变量

- 可观察性(observability):能够观察被测试的部分。

- 可监控性(monitorability):产品能给出提示,它现在在干嘛、怎么做的

- 隔离性(isolateability):能够独立测试各个module.

- 稳定性(stability):软件的改动是可控的,不会太频繁。

- 自动化(automation):是否有公开的,或隐藏的借口可用。

- 信息(information):明确测试人员需要掌握的信息。

- 可审核性(auditability):产品,及其它产生的文件能够被验证

可维护性(maintainability).产品是否能以最小的代价维护和扩展

- 弹性(flexibility):可以根据用户需求来改变产品。

- 可扩展性(extensibility):在将来是否能够很容易的添加新功能。

- 简单化(simplicity):代码不要太复杂,测试的设计、执行、评估不要太晦涩。

- 可读性强(readability):代码的注释要全面,便于阅读和理解。

- 透明性(transparency):底层结构是否很好理解。

- 模块化(modularity):代码是否分成几个可管理的部分。

- 重构(refactorability): 满足单元测试吗

- 便于分析(analyzability):提供一些线索来发现defects.

可移植性(portability):把产品迁移到其他软件可行吗

- 重用(reusability):产品的部分代码是否可以在其他地方使用?

- 适应性(adaptability):是否能够改变产品以适应不同的环境呢

- 兼容性(compatibility):产品是否遵守通用接口和官方标准呢

- 国际化(L18N):是否很容易的翻译这个产品呢

- 本地化(L10N):产品的所有部分符合特定文化/国家的要求。

- UI 健壮性(user interface-roustness):翻译完以后,产品的外观是否同样美观。

posted on 2012-07-03 08:20  matt_chen  阅读(983)  评论(1编辑  收藏  举报

导航