Software Quality Characteristics - 软件质量特性

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):翻译完以后,产品的外观是否同样美观。

原文链接:http://www.cnblogs.com/matt123/archive/2012/07/03/2574109.html

你可能感兴趣的:(软件质量)