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