zoukankan      html  css  js  c++  java
  • 浅谈软件质量保证

    浅谈软件质量保证

    宣言:xuanyan356@163.com

     

    引言

              当今,越来越多的公司都开始真正重视起软件质量问题来,那么软件究竟如何才能保证软件质量呢?下面分别从质量属性、质量目标、人员素质以及公司规范几个方面进行阐述。

    一、质量属性

             CMM 对质量的定义是:①一个系统、组件或过程符合特定需求的程度;②一个系统、组件或过程符合客户或用户的要求或期望的程度。

            以上定义比较抽象难懂,我们换个角度而言,那么一款好的软件质量究竟有哪些特点呢?或者说我们从哪些方面来评价一款软件是高质量的好的软件呢?

            我们评价一款软件可以从以下一些角度进行:正确性、可靠性、健壮性、美观性、性能、易用性、兼容性、安全性、可移植性、可扩展性等。以下分别阐述:

    1.正确性

            正确性是指软件按照需求正确执行任务的能力。正确性也涵盖了精确性方面。

             无庸质疑,这是对一款软件最基本的要求,比如我们通过ATM自动取款机取款时,在输入1,000时,结果只输出了800或者输出了1,200,可想而知这会对银行和客户会产生多大的影响。一款软件满足不了正确性的要求,再谈其他任何方面都没意义。

    2.可靠性

            可靠性是指在一定的环境下,在给定的时间内,系统能够正常运行的概率。

             我曾在手机中遇到一个问题:在待机状态下,手机网络信号等一切显示正常,会出现一些无法通信的情况,电话无法拨打,短信不能收发,重新开机后方可恢复正常。想象下如果情人约会,或者紧急救助时遇到这种情况会产生什么样的后果。

    3.健壮性

             健壮性是指在异常或者不利情况下,软件能够正常运行的能力。我们可以用生活中的一个例来说明,当流感出现的时候,在同样环境下,有些人很容易就生病,而有些人却任你东南西北风,就是安然无恙。

    4.美观性

            美观性主要指软件UI设计的情况,美观性就是从大众化审美以及心理学角度对软件提出的一个要求,这个要综合考虑软件的使用人群特点等。美观性包括软件的颜色搭配,字体使用,排版布局等方面。

    5.性能

            性能也就是一个软件效率问题,也就是软件特定时间空间环境下系统的响应能力。我们平时在使用手机进行编写短信时,可能有的手机在输入一个字符后,手机显示的很缓慢!这就是软件性能比较差的一个表现。

    6易用性

            顾名思义,易用性是软件能否满足客户容易操作使用程度。易用性也是衡量一款软件质量好坏的一个重要方面,我们经常会听到有些人说某些手机太复杂了,不好用,不会用,那我想这样的软件并不能真正能称为好软件。在开发过程中,如果软件开发人员一味关注技术而不从用户使用的角度来考虑那就大错特错了。

    7.兼容性

            兼容性指一款软件和其他不同软件通信(或交换信息)的能力。以前我在做一些蓝牙耳机测试的时候,就出现有蓝牙耳机和某些手机配对后通过耳机端无法对手机端进行控制的问题,这就造成了和某些手机无法搭配使用,问题比较严重。

            在做兼容性测试方面,首先要保证所做软件能和市场上一些知名品牌产品以及市场占有率比较高的产品的兼容。

    8.安全性

            安全性是指软件系统防止被非法入侵的能力。如我们会有听说某网络系统被黑客入侵导致瘫痪的情况就是一个例子。当然一个系统的安全性既和软件本身的抗入侵能力有关又和一些相关保护措施有关,如是否有加密、安装防火墙等。

    9.可移植性

             可移植性指的是软件不经修改或稍加修改就可运行于不同软硬件环境(CPUOS和编译器)的能力,主要体现为代码的可移植性。

    10.可扩展性

             可扩展性反映软件适应变化的能力,如增加新功能等。可扩展性和可移植性一样,主要都是从开发的角度对软件提出的要求。

             以上,从一些不同角度来评价一款软件,当然实际评测过程中还要根据嵌入式、B/S架构、C/S架构等不同特点软件来有所侧重,同时还要结合软件软件使用对象、生命周期等来综合评价。当然,以上各点满足了也不能就能说明就是一款好软件了,其他比如可维护性可复用性、可测试性等也是我们要根据实际情况来考虑的因素。

    二、质量目标

             软件公司生产软件的最根本目标是为了让产品赢得市场、赢得顾客,从而获取利润。如果企业连生存的能力都没有了,软件的质量做的再完美也无用。

             软件公司开发一款软件,并不是说质量越高越好。质量越高,成本相对会越高,这样企业就可能支持不力,无法生存;或者价格很高,客户无法接受。

              在此并不是说软件质量并重要,质量很重要!好和坏从来都是相对的。从用户的角度而言,在能够正常满足使用要求的软件就是好软件;对企业而言,在软件生命周期里,能够软件能够满足用户使用,能给自己带来更多利润的软件就是好软件。

            不同场合对软件质量的要求是不一样的,比如我们国家发射神州五号而后神州六号宇宙飞船,这就要求其软件质量要百分百可靠,不能出哪怕一点点的差错,相信在不久的将来我们国家在发射载人登月宇宙飞船时,对飞船软件质量的的重视程度会有过之而无不及。

    三、人员素质

            软件是人做出来的,软件质量的好坏和开发、测试以及有关管理人员都息息相关。在软件开发方面,我们在此不谈,只从测试的角度来谈软件质量保证。

            说质量保证,先问下自己,从事质量保证的人员真的有能力去做好质量保证吗?

           大学毕业我刚从事工作的时候,是给佳能做传真机的测试,印象最深的就是他们的QA人员,一款经我们测试后提交的软件,结果到他们QA人员手里短短两三天的时间能够找出一大堆的问题来,无论是协议层的技术问题还是可靠性问题,他们都能测出。比如概率性问题,他们能够测到如1/3603/529的程度,而且有些只有在特定时间点进行某些操作的问题他们也都能测出来。更厉害的是有些问题他们的QA人员还能指导我们开发人员进行解决问题。

             虽然在民族感情上我们都很痛恨小日本,但该向人家学习的地方还是要学习的。

             质量保证的人员能力问题是个重要方面,如果连软件中潜在问题都发现不了,想解决问题,做高质量的软件,谈何容易?

             测试人员能力是一方面,其他如从事软件测试人员的职业素养也是个重要方面。如果一款软件未有充分去测,甚至对有些概率性的问题一笑而过,耐不住性子深入去测,或者在发行版本时只简单测试一下,这些都无法真正保证软件的质量。而这种情况下的出现,测试人员根据简单的测试,下了个软件没问题的结论,这样对顾客而言影响是很大的,最终对公司而言无论形象还是未来产品销售等方面的都是不利的。

    四、公司规范

             测试人员的能力再强,测出的问题再多,如果在些问题没有解决的情况下匆匆将软件release给客户,软件问题一大堆。这样的测试其实是没有多大的实际意义的。测试的目的是发现问题,解决问题,保证软件质量。

             当然这个保证单凭测试人员、QA是不行的,在我们国内,其实很多企业测试人员和QA人员在软件发行问题上根本没有发言权,基本上都是公司领导说了算,如果公司领导说“这些问题没关系,我觉得软件可以发行”,那这时软件基本都会发行的。至于所谓的测试、QA以及项目经理等人员,你就一边吹风去吧。

            所以,在软件问题评估,软件发行等问题上一定要给质量保证人员(通常是QA)足够的权力,QA测评通不过就是通不过!

            可惜目前真正能做到这一步的公司并不多。企业为了生存,也很难把这方面真正做好,比如有些产品赶在某些节假日上市时有着良好的时常,而过了那一段时期,可能产品就很难卖了。当然,这些就不是测试人员考虑的范围了。

             要真正把软件质量保证落到实处,开发、测试以及有管管理人员的的密切配合,一款软件在发行前,一定要经过一番严格的测试,然后对软件进行评估才是!

    五、过程管理

            过程管理是对公司规范的执行情况。

             一般公司都有一套完整的产品开发流程、规范,流程各个环节执行的情况是能否开发出一款好软件必要条件。这包括文档管理、版本控制、测试管理等很多方面,在此就不做阐述了。

  • 相关阅读:
    Python 基础 字符串拼接 + if while for循环
    JTable 的使用方法
    java与数据库连接的几个步骤
    socket通信 _ 一个简单的群聊系统
    基本的文件读写
    多线程之碰撞小球
    java类的继承
    java类和对象
    java中的关键字
    java 线程实现方式
  • 原文地址:https://www.cnblogs.com/itest/p/758864.html
Copyright © 2011-2022 走看看