`
javasee
  • 浏览: 968825 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

基于软件度量的测试体系建设

阅读更多

去年年底在质量年会上的发言稿,感谢赛迪现场的录入

信息产业部软件与集成电路促进中心(CSIP)已成功地主办了两届中国软件质量年会。本届年会将以“软件质量创新 助力两化融合”为主题,继续深化我们已取得的成绩,把软件质量年会做实,为增强我国软件企业竞争能力、振兴我国软件产业,助力信息化与工业化融合做出积极贡献。

贺炘 北京慧灵科技有限公司总经理 软件测试虚拟社区测试时代负责人

时间也比较晚了,希望最后一个内容对大家来说有一定的帮助。

今天跟大家分享的题目是基于软件度量的测试体系建设

下面是我的一个介绍,大家都上过测试时代网站,所以掠过了。

在以下半个小时的时间大家有任何疑问或者不明白的,你就举手说,会场可以产生互动,没有任何问题。

在座有多少测试人员,很高兴,大概是百分之百,大家都是同行,看有没有这样的问题。

虽然觉得软件测试很重要,但苦于没有办法组建规范的测试中心,什么叫规范的测试中心,有章有法,你的技术是可控的,你的人是可控的,很少有这样的公司,我做过企业内训的公司有上百家了,但很少,大多数认为是成本中心,或者是花钱,公司一直在不停的投入,但是对产品的质量没有多少帮助。有多少帮助?你能说出来的,老板持续给你买工具,组建团队,招聘新人,由于你的存在,由于你的团队的存在,你为公司创造了很多效益,有吗?你隐隐约约觉得有,但没有办法拿数字说明,所以没有办法证明你存在的价值,或者你部门存在的价值。

无法衡量软件测试工作的成果,你说我的测试工作很规范,很努力,我写了一千的测试用力,工作成果好不好?很难说,因为你的老板会说,才写了一千个啊?我认为应该是上万个,因为我的系统很复杂。可能还会问什么呢?你怎么能写一千个呢?我认为咱们系统有一两个足够了,你用力怎么写的,是不是花了很多无用功,都有这样的疑问。你还没办法说明它。

总感觉测试工作,或者测试团队的工作是不可控的。不可控在什么程度,在座有这么多测试人员,大家都会有这样的感觉,我可能今天很累,累在什么地方,我好好测试我的软件一个BUG都没有发现,你的老板问你工作成果是什么,你没办法说。你可能今天很闲,你心情不好,不想干活,你可能上了一天网,被测的软件没有打开,虽然今天没干活,但是对整个质量也没产生影响,你可以心安理得的回家,第二天再说,对吗?可能都有这样的经历。作为公司,作为部门经理如何对你监控,从公司的角度来说,这是一件很可怕的事情。

测试过程混乱,无法进行有效的持续改进。什么叫持续改进,没有人有能力,没有公司有能力,一次把所有的事情都做正确,都做好,做对,没有人,没有公司。你要知道你现在目标在哪儿,而且能判断到你持续向你的目标迈进。

我们这么多做软件测试的,软件测试的目标是什么?上午和下午有很多嘉宾说,保证产品质量,认为是保证产品质量的我看看,很遗憾,保证不了,谁可以说经过你的测试,这个软件质量就可以保证,谁敢说?那么多第三方的评测机构,哪个评测机构敢说这个软件经过它的评测,质量就没问题,谁敢说,你保证不了。

做一个简单的数学题,一个软件有一百个功能点,这个软件大吗?很小。如果从测试的角度来说,它可能有的功能点组合有多少?概率,C100、100,C100、100的数学等等多少?等于100的阶乘,已经是天文数字了,从数学模型来讲,测试无法建立,这个目标你可以影响,但保证不了。

验证需求和实际软件的相符程度,同意这个举手我看看?同意吗?软件和需求相符就证明软件的质量高吗?需求就做错了,你怎么办?

开发团队进行有效的考核?行吗?好象都不对。

软件测试的目标是什么?可能是一个很大的问号。

我现在提出两个目标,这两个目标可能在其他的书上,或者在网上都看不到,最近才提出来的,两个什么目标?

第一个,稳定控制软件产品质量的振幅,ISO做了那么多质量管理体系,它能保证单一的产品进来就肯定出去是一个优秀的产品吗?不可能。它能做什么?是以统计学的观点控制软件产品质量的振幅,你通过我的流程,出现一个高品质产品的概率高,同意吗?是概率高,不可能完全控制。

稳定控制软件产品质量的振幅这件事情不归测试人员管,归谁管?头长是通过SEPG组,建立度量体系,进行有效跟踪和监控实现,是统计学。

第二个,测试做什么?高效的提高软件测试用例的覆盖率。好的测试人员和差的测试人员有什么区别?放在日常工作中,就是你想不到,同意吗?你的组长或者你的老板永远比你想的多一点,多的那点是什么?就是测试用例的覆盖度,同意吗?我们找了两个关键字,一是高效,二是覆盖度,后面我会证明这两个怎么度量。

怎么样能高效?通过测试用例的复用来达到高效,以数据驱动的形式自动化测试用例可以提高效率,通过有效的测试用例设计方法,扩大覆盖率。我现在要做什么事情?首先我把软件测试的质量分解为一个目标,这个目标是高效提高软件测试用例的覆盖度,把一个复杂的问题简单化,简单为一个明确的问题。下面我又做了分解,我把高效提高软件测试用例的覆盖度分为三个指标。就是通过测试用例的复用,以数据驱动的形式自动化测试用例,通过有效的测试用例设计方法扩大覆盖率。

这是典型软件测试过程文档体系结构,我们来看通常情况下,我会把整个软件测试划分为几个步骤,首先最关键是软件测试策略的制订,测试策略提供几个信息,项目实施范围,可见可衡量的指标,验证方法和阶段。通常情况下,我们会把整个软件测试过程划分为单元集成系统。从所有的软件工程或者从所有方法来说,都需要怎么做呢?都需要单元集成系统,一个都不能少。通常在不同企业里面做不同程度的裁减,单元测试必须要做吗?

WPS1.0你相信第一个版本出现的时候会通过单元集成系统测试,我不相信,你们相信吗?我肯定也不相信,但是不影响这个产品。产品在每个阶段有不同的竞争要求。WPS刚出现的时候,是功能上的竞争,填补市场空白,只要有就OK,只要能用就OK,当竞争到一定程度,WPS到现在你能相信它不进行单元集成系统测试就可以卖吗?不可想象。你现在就是选择适合你的过程,当我们明确完策略以后,我们一般会把测试分为计划、方案、实施、报告几个阶段。计划主要解决五个W问题,谁,什么时间、什么地点,干什么事,由谁来完成,就是做资源合理分配,然后进行专项测试方案。专项测试方案就是性能测试方案,安全测试方案,易用性测试方案,加密狗测试方案等等,然后进行测试实施,测试实施主要做两个内容,首先是测试记录,通过写记录证明你执行到哪儿,没通过的写缺陷报告,整个阶段完成写阶段完成报告,包括测试评估,然后做测试结论。

通常情况下测试策略我们会明确以下几个内容:

1、明确测试需求,你要对什么进行测试,这个点很重要,重要到什么程度?这么多人做软件测试,我问大家一个问题,如果产品发布了以后,产生了质量问题,谁的问题?是测试员的问题吗?是吗?同意是测试员的问题,举手我看看,不同意是测试员的问题我看看。经过你最后一道手发布出去了,产品出现问题了,你说不是你的问题,你能解释吗?很重要一个问题要明确测试的工作范围,如果在你测试范围内发现问题,肯定是你的问题,在你测试范围外发现的问题,就不是你的问题吗?不一定。我们要明确测试工作范围,需要测试的对象,达到的目标等,可以来源于软件需求,个人经验,以前发生的错误等。我们要确定测试目标,确定测试类型和方法,测试风险分析。

策略完成以后,大家一定要注意,策略里面不包括人和时间,为什么不包括这两项,从项目的角度来讲,这两项变化的风险太大。测试策略中一定不包含可能变化比较频繁的要素,目的就是测试策略不允许随便修改,它确定了该项目最关键的要素,当我们确定测试策略以后,将进行测试计划的制订。测试计划包括什么呢?目标、方法、环境、工具,确定时间段,确定资源,自动化测试分析。一个项目里一定要进行自动化测试分析吗?完全没必要,自动化测试不能帮助你解决发现BUG的问题。首先大家要对自动化或者功能类自动化工具产生明确的认识,它不能帮助你发现新的BUG,它能帮助你提高效率,提高测试用例覆盖效率。

但计划完成以后,我们要进行专项测试方案制订,我们要把计划策略中所有需求拿出来,进行备案,然后细化测试规矩等等。

测试实施包括测试记录和测试报告。

阶段总结报告要提供测试执行株距,证明测试过程完整的执行了测试计划内容,提供测试分析数据,证明系统的质量达到要求或未达到要求,如果比较重要的系统要提供模拟测试,比如说银行或者电信系统,当它一个周期是一个月的数据,如果你随意切换,你的系统不行怎么办,有一种方式就是这一个月的数据,原来的系统跑一遍,新上线的系统在另外一套系统跑一遍,两个出现的结果对比一下,走一个月就可以顺利切换了。

其次提供遗留问题及后续的解决办法,刚才都问到一个问题,测试什么时候结束,测试结束有两个必要条件,缺陷处于收敛状态,所有遗留问题都有了明确的解决方案。

刚才跟大家简要的说了一下我们认可的,或者我们觉得比较合适的一个软件测试过程控制方法,谈到度量,谈到对过程的控制,我们首先要明确过程是什么,刚才我们过程摆在那儿了,我们再来看。

我们把复杂的问题明确为两个问题,一是质量振幅,二是高效提高软件测试用例覆盖率。质量振幅如何控制,针对软件测试过程的符合度进行控制,通过由EPG组进行监控,SQA进行检查,检查报告就是振幅的一个指标,不在我们讨论范围之内。

我们谈测试相关的东西,高效提高软件测试用例的覆盖率,高效和覆盖度是我们关注的目标。通过这两个目标,我们去抓整个的软件测试过程,我们看怎么抓。

软件测试工作如何提出效率,可能的指标有什么?我只能说可能的指标,因为度量也好,过程也好,针对每个公司都是个性化的过程,比如说我们通常在网上能拿到的数据,最完备的过程是什么?是RUP,一张光盘,上头有整个从项目需求一直到最后部署,整套的文档,整套的模板,你能用吗?我跟IBM的工程师聊过,RUP的精华在什么?精华在裁减,你只有了解的全部,了解到本企业的现状才知道自己用什么,不要盲目套用任何一套你看的好的方法或者模板,必须要个性化定制。这块谈到的目标只是参考。可复用的产品多,可能提高效率吧,如果每次做项目能用到复用的产品很多,一定会提高效率,我们的指标就是测试资源复用率,包括计划、方案、用例,自动化测试脚本等等一系列,你在一个项目中产生的所有文档、代码或者思想,这些复用率有多高,拿一个指标控制。

无用的工作少,上礼拜我们在对面开测试时代的交流会,有几个人,测试用例我们写到什么程度,大家想象,如果你只有一个礼拜的测试时间,五个工作日,你花三天写测试用例,两天做测试执行,合理吗?五天全部做测试执行,我不写测试用例,合理吗?假设一年我八个月写测试用例,四个月做执行,合理吗?我一年不写测试用例,只执行,合理吗?所以当你看你项目的时候,绝对没有一个统一的方法、指标让你去做,要根据目标来决定。

上午在说我推崇一句话,这句话是两部分,第一部分是目标决定过程,一定要注意,目标决定过程,第二部分,过程决定质量。为什么目标决定过程?跟敏捷开发方法的理念是一样的,你想做什么,想达成什么样的结果,就让过程不多不少的配合你,你要做什么,完全跟你的目的有关系,不要做过多或者过少的工作。所以它都是定制化的过程。无用的工作少,你要做度量,比如说以前我作为测试组,或者你们作为测试人员,有多少测试人员在写文档,我指的文档是用户使用手册说明书,举手我看看。在小组织小工作量下是没问题的,如果你的测试工作或者测试有效工时三分之一以上都被明显跟工作质量无关的工作就有问题了,所以我们要拿到有效测试工时率。

和开发的配合好,在研发过程中,测试是辅助流程,还是主流程?辅助流程,如果你是辅助流程,你当然要跟主流程配合。跟主流程如何配合,首先协作点的数量,你跟开发人员有多少次交互,我指的正式交互,不是你平常没事吃饭、打球、聊天,而是在技术方案中你跟开发人员做的交互有多少点,协作点的正确率,正确率主要指时间和质量,1月1号说给你协作点,1月1号没给你,这个协作点没有成功,如果给了你,你没有评估,这也没有成功。

测试项目进度贴合度好,什么叫贴合度好?第一,我没看到过没有发现BUG的项目,有没有这样的测试人员,我测试一个产品压根没发现BUG。项目变化率,你作为项目经理,你写了份测试计划,你的计划会有多少次变化,变化的程度会是怎样的,也是判断你的效率。工期贴合率,你们之间的工期是否有很好的贴合。

自动化测试提高效率,首先自动化测试不能发现BUG,它可以把你的手工测试用例自动化,自动化手工测试用例的数量,跟手工用例的比例,这个比例越高越好,但一定要考虑成本和产出,值不值得这样做。以前我看一个项目,它的测试经理给我们展示QDP做的自动化测试,从头到尾自动化,所有的操作不用人工干预,我看了挺高兴,后来我问他,它发现过BUG吗?没发现,你平常测试用它吗?也不用。做它干什么?演示。你就看到鼠标在那儿点,一个流程一个流程完成。为什么这么做?处于测试人员自我的爱好,他觉得这个有意思,技术含量高,想学这门技术,也给老板做演示,老板看了很高兴,它不产生实际的效率。

测试用例的覆盖度,测试用例的覆盖度是一个求积分的过程,什么叫求积分的过程?可以无线接近,但是永远到达不了,只可能无限接近,但不可能等于。

有效度量测试用例覆盖度增加的条件:

1、现有测试用例进行了有效的管理,首先测试用例你需要用工具或者手段管理起来,一条一条放在那儿,做一个基线。

2、明确测试用例编写的颗粒度,大家都有这种感觉,你写测试用例,你测试这个产品的时候,你十条测试用例就测试完了,有人写三十条,你就觉得奇怪,我觉得十条已经是局限了,怎么你能写到三十条,你去看他的用例,发现这也能算一条,这是组织内部测试用例颗粒度没有达成一致,颗粒度你可以跟代码行数对应,跟功能点对应,组织内部测试用例颗粒度要统一,保证所有人员大致是一致的。

3、单个功能点都进行了有效的规整,确定最小测试范围。你如果做测试用例的度量,需要保证单一个功能点进行了规整。

4、提高的方式放在功能点的组合和测试数据的增加上,如果你想提高效果,很重要的两个目标,就是功能点的组合增加了多少,测试数据又增加了多少。

5、每轮新增测试用例量和率,通常情况下测试一个软件,你的测试用例要跑好几轮,三到五轮,有的可能更多,每轮会新增一些用例,这些新增的量和率是多少,如果在组织稳定的时候,新增数量不会太大,如果组织不稳定,或者产生新的功能点比较多的时候,新的功能点组合比较大,这个率就会比较高。对于你进行一个项目控制也是有借鉴意义的。

软件测试过程的定制是一个个性化很强的工作,每个企业都应该不一样,如果一样了,就会有问题,指标确定确立不能照抄,你抄没问题,你照着人家的进行,就有很大问题,需要根据能力成熟度进行有效的分析和定制。

质量的提高,工作的改进是一个渐进的过程,绝不能一蹴而就。

通过分析,要先解决重要的事情,要有总体的规划,而不是头痛医头,脚痛医脚。

我大致的发言就到这儿,谢谢大家。

文章来源于软件测试时代 http://www.ltesting.net/

推荐软件测试时代的主要栏目:

软件测试技术: 软件测试工程师  测试用例 功能测试 测试管理 缺陷管理 手机测试 自动测试 单元测试 性能测试 安全测试 软件测试环境: Windows Unix 网络知识  服务器 开源测试: 开源功能测试 开源性能测试 开源缺陷管理 开源配置管理 开源解决方案  测试开发: JAVA .net UML 脚本语言 数据库 中间件  测试资料: 商业测试工具 开源测试工具 软件测试教程 质量保证: 项目管理 需求管理 软件度量  项目估算 质量模型 解决方案 测试工具: Mercury测试工具 Rational测试工具 Silk测试工具 其它 软件测试时代 软件测试服务 |软件测试培训

分享到:
评论

相关推荐

    质量度量之三级指标体系

    软件测试体系建设质量度量指标建设软件质量度量是软件测试体系建设的重要组成部分。三级指标体系是将质量度量的三级指标体系化,以便更好地实施质量度量和改进。 一级指标,即结果指标。起到“后视镜”的作用,有...

    基于大数据的软件研发度量:从理念到实践.pdf

    软件研发度量的实践可以分为三个方面:度量的意义、度量平台建设和度量体系。 ### 度量的意义 度量的意义在于让目标更明确、让现状更清晰、让改进更精准。度量可以帮助我们更好地了解软件开发的整体进展情况,提高...

    CMMI实用软件度量

    - **项目控制**:基于度量信息,采取措施纠正偏差,确保项目目标得以实现。 - **关键指标**:如开发生产率(KLOC/人月)、开发成本(元/KLOC)、开发过程中的缺陷率(个/KLOC)、发布后的缺陷率(个/KLOC)、缺陷...

    软件质量管理体系建设方案参考.pdf

    在构建软件质量管理体系建设方案时,我们首先需要理解软件质量的重要性及其对企业的深远影响。软件质量不仅关乎产品的稳定性、性能和用户满意度,而且是企业声誉、市场竞争力和可持续发展的关键因素。以下将详细阐述...

    优化测试过程:软件测试知识体系实战

    《优化测试过程:软件测试知识体系实战》是一门深度探讨软件测试流程改进的课程,由拥有12年经验的专业测试顾问郑文强所创建。课程旨在帮助测试团队提升测试效率和有效性,通过优化测试流程来确保软件产品的高质量...

    软件质量管理体系建设方案.doc

    质量管理的实践策略 ............综上所述,本方案为软件质量管理体系建设提供了一个全面的蓝图,旨在通过系统的质量管理,确保软件产品的高质量,提升公司的竞争力,满足客户需求,并为公司的长期发展打下坚实的基础。

    AS深圳2018-《超大规模软件架构度量与演进的思考和实践》-吴文胜.pdf

    - **标准化建设**:继续完善架构度量的标准体系,使之更加成熟和完善。 - **最佳实践推广**:总结成功案例,将最佳实践推广应用到更多的项目中去。 通过这一系列的努力,华为不仅提高了软件产品的质量,还提升了...

    2023中国互联网测试开发大会(公开)PPT汇总(25份).zip

    2023中国互联网测试开发大会(公开)PPT汇总,共25份。 1、主会场 拒绝质量团队内卷——低代码质量平台的产品实践 支付宝业务监控布防 AREX:新一代开源自动化回归...隐私计算测试体系建设 DevOps平台在实业的生根发芽

    2023年QECon全球软件质量效能大会深圳站(公开)PPT汇总.zip

    2023 QECon全球软件质量效能大会深圳站,共63份。 LLM时代的软件研发的机遇与进化 穿戴设备测试左移之工程实践 ...快手大数据SRE技术运营体系建设之路 零代码智能测试在银行业全链路场景中的探索与实践 ……等等

    MTSC深圳 2020中国互联网测试开发大会PPT合集(54份).7z

    智能合约测试体系建设及实践 持续交付平台演进 单测智能生成技术在召回异常问题的应用实践 全链路效能提升体系 实时数据质量保障体系实践 中间件技术在云原生测试应用实践 自动化测试探索之路 智能化的精准测试实践 ...

    2021 QECon全球软件质量&效能大会(上海站)PPT汇总(57份).zip

    质量过程度量体系建设思路 十三、智能测试 Cherry Driver高级智能UI自动化驱动引擎实现 酷家乐智能设计AI算法的效果评测体系搭建 测试日志智能分析实践 基于融合AI技术实现的智能探索测试 移动端分布式智能测试系统...

    4-自动化体系建设.66e4f510-bc86-11e7-9a52-9bd0f40b56c0.pdf

    自动化测试体系建设是提高软件测试效率和质量的重要手段,在互联网行业中尤为关键。孟国军在其介绍中提出了一系列关于如何建设和维护服务端自动化测试体系的策略和工具。下面将基于提供的文件内容,详细解析这些知识...

    03.景韵-基于DevOps标准的研发运营能力建设分享

    综上所述,“基于DevOps标准的研发运营能力建设”不仅涉及到具体的工具和技术应用,更重要的是需要构建一套完整的体系框架,包括明确的目标设定、合理的资源配置以及持续的学习与改进机制。对于企业而言,只有将...

    软件测试改进.rar

    8. 风险驱动的测试:基于风险的测试方法论是另一个重要话题,书中阐述了如何识别、评估和优先处理高风险领域的测试工作,以最大程度地降低软件风险。 9. 回归测试与测试优化:对于频繁变更的软件项目,回归测试的...

    基于猪齿鱼构建企业研发体系.pdf

    不过,根据标题“基于猪齿鱼构建企业研发体系.pdf”和描述“基于猪齿鱼构建企业研发体系.pdf”,我们可以推测文档的主题是关于“猪齿鱼”这个研发工具在企业研发体系建设中的应用。 猪齿鱼(Chinasea,简称CS)是一...

    某院安全运营中心建设方案.pptx

    【某院安全运营中心建设方案】的PPTX文件详细阐述了如何构建一个高效、全面的安全运营中心。该方案旨在解决企业在网络安全管理中面临的诸多挑战,如安全事件处置效率低下、安全现状不可见、大量无效告警以及信息架构...

    腾讯互联网测试实践_-_吴凯华.pdf

    #### 一、测试管理体系建设 在《腾讯互联网测试实践》这份资料中,吴凯华重点介绍了腾讯在互联网测试领域的一些先进实践和技术经验。测试管理体系建设是整个文档的核心部分之一,其目标是构建一个高效、规范且可...

    基于人工智能的软件安全文化监测.pptx

    ### 基于人工智能的软件安全文化监测 #### 软件安全文化评估框架 ...这些内容共同构建了一个全面的基于人工智能的软件安全文化监测体系,旨在提高组织的安全防护能力,降低安全风险,保障业务连续性和数据安全。

    5-有赞-有赞资损防控体系及实践-黄紫娟.pdf

    资损防控体系建设-平台实现架构数据库变更binlog业务变更触发点系统业务活动增删改数据订正人工变更出金结算退款业务系统资金流出拦截业务数据解析存储数据模型转换检测规则判断检测点存储数据存储hbase规则引擎前置...

Global site tag (gtag.js) - Google Analytics