本周开始读《全程软件测试》。其中谈到的“软件质量分为内部质量、外部质量和使用质量。”引起了我的好奇。因为我之前没有太听说过使用质量,不知道这种分类方法的具体定义,所以到网上搜索了一下。发现关于内部质量、外部质量、产品质量、使用质量,还真的是众说纷纭。
http://wiki.c2.com/?InternalAndExternalQuality
Internal quality is about the design of the software. This is purely the interest of development. If Internal quality starts falling the system will be less amenable to change in the future. Hence the need for refactoring, clear coding, relentless testing, and the like. You need to be very careful about letting internal quality slip. Ward has a wonderful DebtAnalogy that discusses it.
External Quality is the fitness for purpose of the software. It's most obvious measure is the Functional Tests, and some measure of the bugs that are still loose when the product is released. There is more to it than that, however.
维基百科上这个定义的中文意思大概是:内部质量指的是产品的设计。它是开发关心的问题。如果内部质量有问题,将来软件将变得难以维护。因此重构、简洁的代码,不间断的测试,都需要用来保障内部质量。
外部质量是软件和它存在的目的的匹配度。最明显的一个度量方法就是功能测试,还有就是产品上线后出现的bug数。当然,不仅仅是这些。
https://blog.csdn.net/lanny2008/article/details/39022675
可以简单的将内部质量等同于开发人员自己发现的代码或设计缺陷的问题集合;将外部质量等同于测试人员在实验室测试所发现bug的集合。
https://blog.csdn.net/dylanren/article/details/13290575
产品的质量可以划分为外部质量与内部质量。外部质量是用户可见、用户可以体验到的质量,比如你新买了一辆车,你可以感受到车的外观、车提速的快慢等,这是车的外部质量;再如我们买了新房子,我们可以看到房子的地面是否水平、墙皮是否脱落等。内部质量是用户难以看到、难以体验到的质量,是制造方、维修方等可以体验到的质量,比如车是否易于维修等,有些车打开前盖后,可以看到内部走线的情况,好车的内部走线很清晰,而差的车内部走线则是一团乱;再如也有新闻报道新买的房子在装修中发现墙皮内塞满了塑料泡沫。内部质量是隐蔽工程,客户难以直接感受到。
对于软件工程而言,我们的内外部质量是什么呢?对客户、最终用户、间接用户的需求满足程度即是产品的外部质量。客户是出资者,是花钱购买软件的一方,最终用户是使用者、操作者,是真正使用软件人,间接用户即不出资也不使用软件,但是间接用户影响了系统的成败或系统的成败影响到了他,比如证监会就是我们证劵与期货交易软件的间接用户,它制定了相关的标准与规范,约束了系统的行为。软件的内部质量最主要的就是软件的可维护性!在公司内对代码的编写要求遵守编码规范,对于设计要求符合基本的设计原则,这些都是软件的内部质量!
使用质量
https://baike.baidu.com/item/%E4%BD%BF%E7%94%A8%E8%B4%A8%E9%87%8F/6163236
使用质量指产品使用过程中表现出来的质量。高使用质量的产品应该使用方便,可信度强,没有繁琐复杂的应用手续。
使用质量是质量的重要决定因素之一,一种产品或者体系能否成功地实现自身质量在相当程度上取决于使用的质量。
例如现实生活中的很多家用电器采用了较先进的电子控制面板,虽然在实际性能上没有大的改进,但是操作的便利性上比之前的机械操作控制进步很多,我们就可以认为其在使用质量上表现更加,从而可以获得更高的售价。
我的理解:
内部质量关注的是软件有没有正确地做事。(do things right) 即假设需求正确的情况下,开发团队内部的设计、编码、测试是否达到其应有的质量。内部质量对使用软件的人来说相对是不容易感知的,隐蔽的。例如,一段结构很差的代码如果运行结果是对的,可能用户就感觉不到它和结构更好的代码之间的差异。
外部质量关注的是软件有没有做正确的事。(do right things) 即开发团队交付出去的产品,多大程度地解决了客户的问题/满足了客户的需求。
使用质量关注的是真实的用户使用后感知的质量。它可能涵盖外部质量没有考虑的方面,或者在同一个方面质量要求实际更高。
这3者有关联,但其中一个的好坏,不代表另外二者的好坏。
其实我的理解也很含糊,也可能是错的。毕竟分类这种东西还是只有当时提出来的人才能给出正解。