关于软件质量的思考?什么是质量?
作者:网络转载 发布时间:[ 2016/2/24 13:53:11 ] 推荐标签:软件测试管理 质量管理
当选择一个商品的时候,我们常挂在嘴边的一个词是“质量”,这是影响我们选 择的一个很重要的指标。这一篇我们来探讨一下什么是软件的质量。当然,都是个人的一些观点,不同意可以拍砖或者来探讨。
质量这个词用得太普遍以至于混乱,有时候它表示质量这个指标,有时候它隐含质量好的意思。而且不可避免的,好的质量常常和它的反面联系在一起,好像以前的“质量万里行”,或者现在的3.15,列出的都是质量方面的问题,好像很少宣扬质量好的产品。所以很多时候,我们看质量是从反面(缺陷,或者质量不好的地方)来看 的。在下面讨论的时候我们也会用或正或反的例子来看。虽然是在探讨软件的质量,但是为了便于理解,可能也会举别的产品的例子。
前一篇里面 也提到,在传统的关于软件缺陷的定义中,是看实际做出来的产品是否和规格说明书(spec)一致,如果不一致那是defect或者俗称bug。如果只是 从这个范围来看,这个定义本身没有问题,因为如果做出来的东西不是我们想要的,那当然不对。所以下面我们得出质量的第一个方面。
Quality scope #1: 实现了说明书上的功能
比如你下载了一个电影播放器,它宣称可以支持MP4, MOV, RMVB, AVI格式,那么它必须可以正确播放这些格式的文件。这是一个很基本的要求,像洗衣机要能洗衣服。如果实现这样的基本功能出现的问题,那么用户会非常生 气,觉得质量太差,根本不能用,直接卸载掉,或者要求退货(商业产品)。
正因为这样的后果很严重,所以在测试中,对于这样的基本功能我们都会反复验证。
OK, 如果说明书上说的功能都实现了,那么是一款质量很好的产品了吗? 实际上可能并非如此。那么差别在哪里呢?
Quality scope #2: 一些不言自明的要求
为什么说是不言自明呢。举个例子, 还是洗衣机,客户可能会说“我想买一台洗衣机”。然后他买回去一台,价格也还不错。回去后发现确实能洗衣服(上面提到的基本功能实现了),但是有个问题, 这个洗衣机洗一次衣服需要3个小时,而且洗的时候噪音很大。
洗衣机是很普遍的一个商品,用户在一开始买的时候可能也不会问洗一次要多长时间或者噪 音多少分贝。这并不代表他没有这方面的标准,而是“不言自明”。 如果事先没有说明,这可能会带来一些纠纷,但是终生产这样的洗衣机的厂家一定是这些问题的受害者。因为大家都会知道这个牌子的洗衣服超慢,而且噪音大。 而如果只按照第一个scope的要求,它可能是一个很合格的产品,而且或许衣服还洗得挺干净的,通过了QA的测试。
我相信这一类的例子还 可以举出很多
笔记本: 发热量比较小,不会太烫
杀毒软件:占用系统资源不要太多,机器启动也不会变得很慢
网上购物系统:响应时间不能太长
这方面的要求有很多,比如包括safety, performance,stability,impact to other software...
也正因为这一类的要求是“不言自明”的, 所以开发的时候反倒容易被忽视。当然也可能是故意被忽视,因为技术和成本的原因,很多山寨产品是如此吧。
比较好的做法是我们把这些方面的需求明 确的列出来,并尽可能的进行量化。比如前面例子中涉及的时间和噪音问题,如果在内部的设计文档中有明确的要求,终出来的产品不会有这么大的问题。
关于这一类的需求,还有几个特点。
1. 这方面的要求不容易确定,也不容易评估或者验证。
比如performance,比单纯的某个功能点,要复杂很多,有时候甚至什么是performance够好或者很好都难以界定。所以这也要求产品的设 计和开发人员对产品和用户的需求有更输入的理解,而不只是照着做。
2. 这方面的产品特性是难以被抄袭的。
国内的山寨能力想必大家都见识过,很多产品出来后很快有了功能十分相近的仿制品。小到手机,大到汽车。iphone的山寨版长得很像哦,而且也可以全屏 触摸,multi-touch,而且不到1千块。还有双环的SUV,远一点看是BMW X5,之前一位美国同事来出差看到一辆还特意掏出手机拍照留恋,因为他是X5车主。现实中,iphone在国内依然火爆,X5也还是很多人的dream car。因为有很多看不见的特性(比如performance)在它们和抄袭者之间划清了明确的界限,质量高下立现。当然,差别也不只是这么提到的这些, 还有其他,比如branding。
好吧,如果我们的产品连这些不言自明的要求也考虑到了,那么是不是会被认为质量很好 呢? 不一定。
Quality scope #3: 设计符合用户的需求
在scope #1中,我们提到好的质量的起码的条件是实现了宣称的功能。那么引伸出另一个问题是,设计本身是合理的吗?
如果我们把developer定位 成实现所需要的功能的人,把QA定位成验证这些功能是否正确实现了的人,那么这一部门的质量我们没有办法覆盖到。因为如果是这样的定位,大家不会去 想,这样做合理吗?是用户想要的吗?做出来用户会喜欢吗? 反正我们只要按着spec做出来好了。
这样的例子其实也有很多,比如
1. by design,我们只支持IE浏览器。但是我们发现很多用户都在使用Firefox和Chrome。
2. 我们的邮件历史查找只支持按收件人,现实中有很多用户也需要按发件人来查找
3. 如果用户重装系统的话,需要把曾经在老系统上配置的policy一条条重新配置,包括white list和black list。
4. 如果中途网络断掉了,用户前面输进去的东西下次联网后要重新输入。
类似的例子我们还可以举出很多。这些问题有什么共同点呢,那是用户会 抱怨我们的系统质量不够好,会给售后服务部门提一个case过来,提出他们的合理(从他们的角度确实是)要求。
如果我们的软件测试只停留在验证功 能的角度,这些问题都不是问题,因为直接被我们排除在工作范围以外。但是终这些问题都会被用户遇到,而且形成一种印象,那是我们的产品质量不够好,特 别是当竞争对手能够做到的时候。这会形成一个gap,我们内部测试的时候觉得质量很好很稳定,但是用户还是不满意。
要解决这样的问题, 可能有两个方面的要求
1. 测试人员(其实也包括开发人员)应该更多的从用户的角度来考虑问题。也是常说的customer insight,从这个角度我们不是完全被动的按着spec走,而是可以challenge它,为什么做成这样,至少要知道为什么。
2. 测试人员要往开发流程的更前面走,而不只是等到产品做出来了之后去装起来验证。那样太晚了,而且修改的成本比早期要高很多。测试人员一开始应该参与到产 品的设计中,并且从用户的角度给出自己的意见。当然,这一部分也依赖于domain knowledge和个人的经验。
以上两个方面,对 测试人员来讲,是挑战,因为要求更高了,也是机会,因为工作更有value了。
到目前为止,看起来我们的质量范围已经比较完整 了? not yet。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11