论文部分内容阅读
【摘要】测试是软件开发的一个重要环节。本文论述了软件测试自动化测试的实施。从自动测试的好处、影响软件测试自动化实施的因素产生原因等几个方面出发,总结软件自动化测试的实施思路,并提供某软件公司实施软件测试自动化案例,供各位同行参考。
【关键词】软件测试自动化引入条件风险分析
1概述
软件测试自动化,从计算机这一庞大学科发展至今,最根本的意义是解决手工劳动的复杂性,成为替代某些重复性行为模式的最佳工具。
2实施软件测试自动化的理由
(1)提高测试效率和降低测试成本。
(2)将重复性强的测试由手工转为可以独立开来自动实现的。
(3)实现快速的回归测试,提高新版本发布的速度和质量,尤其是不能适应目前流行的迭代开发,回归测试频度高、工作量大,人工的测试很难对新的迭代版本作出快速评估。
(4)自动测试可以避免人工测试容易犯的错误:错误测试、漏测试、多测试和重复测试等。
(5)典型的应用,例如多用户并发注册、并发交易请求和并发交易应答,这种情况用人工测试几乎是办不到的,而自动测试却很容易。
(6)对于很常用的功能性边界测试测试,人工测试非常耗费时间,而自动测试很快且准确。
可以说,实施测试自动化是软件行业一个不可逆转的趋势,如果在这个领域走在了前列,无论从企业的核心竞争力还是个人的工作技能来说,都有巨大的优越性。
3软件测试自动化的引入条件
自动化测试能大大降低手工测试工作,但决不能完全取代手工测试。完全的自动化测试只是一个理论上的目标,实际上想要达到100%的自动化测试,不仅代价相当昂贵,而且操作上也是几乎不可能实现。一般来说,一个40-60%的利用自动化的程度已经是非常好的了,达到这个级别以上将过大的增加测试相关的维护成本。
测试自动化的引入有一定的标准,要经过综合的评估,绝对不能理解成测试工具简单的录制与回放过程。实际上,从实现成熟度来说,自动化测试分五个级别,如表1所示。
自动化测试能提高测试效率,快速定位测试软件各版本中的功能与性能缺陷,但不会创造性的发现测试脚本里没有设计的缺陷。测试工具不是人脑,要求测试设计者将测试中各种分支路径的校验点进行定制,没有定制完整,即便事实上出错的地方,测试工具也不会发觉。因此,制订全面、系统的测试设计工作是相当重要的。
自动化测试能提高测试效率,但对于周期短、时间紧迫的项目不宜采用自动化测试。推行自动化测试的前期工作相当庞大,将企业级自动化测试框架应用到一个项目中也要评估其合适性,因此决不能盲目的的应用到任何一个测试项目中,尤其不适合周期短的项目,因为很可能需要大量的测试框架的准备和实施而会被拖跨。
实施测试自动化必须进行多方面的培训,包括测试流程、缺陷管理、人员安排、测试工具使用等。如果测试过程是不合理的,引入自动化测试只会给项目团队带来更大的混乱。
那么应该具备什么样的条件才可以引入自动化测试呢,才可以最大可能的减少引入风险,并能够可持续性的开展下去呢?
(1)从项目规模上来说,没有严格限制。无论项目大小,都需要提高测试效率,希望测试工作标准化,测试流程正规化,测试代码重用化。所以第一要做到的,就是从公司高层开始,直到测试部门的任何一个普通工程师,都要树立实施自动化测试的坚定决心,不能抱着试试看的态度。一般来说,一个这样的软件开发团队可以优先开展自动化测试工作:测试与开发人员比例合适,比如1:3到1:5,开发团队总人数不少于10个。
(2)从公司的产品特征来说,一般开发产品的项目实施自动化测试要比纯项目开发要优越些。但决不是说做纯项目开发不能实施自动化测试,只要软件的开发流程、测试流程、缺陷管理流程规范了,自动化测试自然水到渠成。
(3)从测试人员个人素质和角色分配来说,除了有高层重视外,还应该有个具有良好自动化测试背景和丰富自动化测试经验的测试主管,不仅在技术方面,更重要的是在今后的自动化测试管理位置起着领导的作用。还要有几个出色的开发经验良好的测试人员,当然也可以是开发工程师,负责编写测试脚本、开发测试框架,还有一些测试执行者,他们要对软件产品业务逻辑相当熟练,配合测试设计者完成设计工作,并在执行自动测试时,敏锐的分析和判断软件缺陷。
综合分析上述三个条件,就可以决定是否推行自动化测试;但是为了减少实施风险,还要预测到其他潜在的风险,做好事先解决问题规避风险的思路。
4对实施自动化测试的风险分析
资金风险,虽然有些项目具备实施自动化测试的条件,但还是要引入自动化测试后组织结构调整等方面的成本估算是很必要的。
自动化测试对软件功能类型的切入点的风险,开发的产品业务和功能是否需要自动化测试?包括白盒自动化测试、功能自动化测试和性能自动化测试。
软件自动化测试切入方式的风险,一定要将自动化测试与手工测试结合起来使用,不合理的规划会造成工作事倍功半。首先,对于自动化测试率的目标开始是20/80(20%的自动化测试和80%的手工测试),当这些目标都实现了,再将自动化测试率提高。
时间估算,在评估完前面几项指标后,需要估算实施测试自动化的时间周期,以防止浪费不必要的时间,减少在人员、资金、资源投入上的无端消耗。虽然到测试自动化步入正轨以后,会起到事半功倍的效果,但前期的投入巨大,要全面考虑各种因素,明确实施计划并按计划严格执行,才能最大限度降低风险。
工作流程变更风险,测试团队乃至整个开发组织实施测试自动化,或多或少会因为适应测试工具的工作流程,带来团队的测试流程、开发流程的相应变更,而且,如果变更不善,会引起团队成员的诸多抱怨情绪;所以应该尽量减少这种变更,并克服变更中可能存在的困难。
5什么条件下使用自动化测试
一般在这样的条件下使用自动化测试:
(1)具有良好定义的测试策略和测试计划(知道要测试什么,知道什么时候测试)。
(2)对于自动化测试你拥有一个能够被识别的测试框架和候选者。
(3)能够确保多个测试运行的构建策略。
(4)多平台环境需要被测试。
(5)拥有运行测试的硬件。
(6)拥有关注在自动化过程上的资源。
如下条件下是宜采用手工测试:
(1)没有标准的测试过程。
(2)没有一个测试什么、什么时候测试的清晰的蓝图。
(3)在一个项目中,测试责任人是一个新人,并且还不是完全的理解方案的功能性和或者设计。
(4)整个项目在时间的压力下。
(5)在团队中没有资源或者具有自动化测试技能的人。
6某软件公司实施软件测试自动化情况
某软件公司在ITS、GIMIS、HPC等项目中实施了自动化测试,自动化测试比例较高(如ITS自动化测试占65%,手工测试占35%),经过多年来自动化测试的实施,收效较好的原因主要有:
(1)在测试工作本身流程上、组织结构上根据实际情况进行了多次有效的调整与改进,甚至也包括需求、设计、开发、维护及配置管理等其他方面的进行了有机的配合。
(2)软件开发团队工作尤其注重以人为本,项目团队一开始的组建就非常重视人员之间的配合、测试组织结构的设置,每个角色都要将自己的责任完全担负起来,减少和解决设计、开发和测试之间的矛盾。
(3)项目管理部门对开展自动化测试的监督和评估起到了积极的作用,也包括对项目测试的检查和人员的考核。将自动化测试全面深入地贯彻到测试工作中。
该软件公司自动化测试实施相对比较成功,但或多或少还有些问题需要继续完善和改进,比如工具选择问题,培训到位问题,文档完备问题,人员合理分配问题,脚本可维护度等等,如表2所示。
表1自动化测试分五个级别
表2某软件公司测试自动化案例汇总表
【关键词】软件测试自动化引入条件风险分析
1概述
软件测试自动化,从计算机这一庞大学科发展至今,最根本的意义是解决手工劳动的复杂性,成为替代某些重复性行为模式的最佳工具。
2实施软件测试自动化的理由
(1)提高测试效率和降低测试成本。
(2)将重复性强的测试由手工转为可以独立开来自动实现的。
(3)实现快速的回归测试,提高新版本发布的速度和质量,尤其是不能适应目前流行的迭代开发,回归测试频度高、工作量大,人工的测试很难对新的迭代版本作出快速评估。
(4)自动测试可以避免人工测试容易犯的错误:错误测试、漏测试、多测试和重复测试等。
(5)典型的应用,例如多用户并发注册、并发交易请求和并发交易应答,这种情况用人工测试几乎是办不到的,而自动测试却很容易。
(6)对于很常用的功能性边界测试测试,人工测试非常耗费时间,而自动测试很快且准确。
可以说,实施测试自动化是软件行业一个不可逆转的趋势,如果在这个领域走在了前列,无论从企业的核心竞争力还是个人的工作技能来说,都有巨大的优越性。
3软件测试自动化的引入条件
自动化测试能大大降低手工测试工作,但决不能完全取代手工测试。完全的自动化测试只是一个理论上的目标,实际上想要达到100%的自动化测试,不仅代价相当昂贵,而且操作上也是几乎不可能实现。一般来说,一个40-60%的利用自动化的程度已经是非常好的了,达到这个级别以上将过大的增加测试相关的维护成本。
测试自动化的引入有一定的标准,要经过综合的评估,绝对不能理解成测试工具简单的录制与回放过程。实际上,从实现成熟度来说,自动化测试分五个级别,如表1所示。
自动化测试能提高测试效率,快速定位测试软件各版本中的功能与性能缺陷,但不会创造性的发现测试脚本里没有设计的缺陷。测试工具不是人脑,要求测试设计者将测试中各种分支路径的校验点进行定制,没有定制完整,即便事实上出错的地方,测试工具也不会发觉。因此,制订全面、系统的测试设计工作是相当重要的。
自动化测试能提高测试效率,但对于周期短、时间紧迫的项目不宜采用自动化测试。推行自动化测试的前期工作相当庞大,将企业级自动化测试框架应用到一个项目中也要评估其合适性,因此决不能盲目的的应用到任何一个测试项目中,尤其不适合周期短的项目,因为很可能需要大量的测试框架的准备和实施而会被拖跨。
实施测试自动化必须进行多方面的培训,包括测试流程、缺陷管理、人员安排、测试工具使用等。如果测试过程是不合理的,引入自动化测试只会给项目团队带来更大的混乱。
那么应该具备什么样的条件才可以引入自动化测试呢,才可以最大可能的减少引入风险,并能够可持续性的开展下去呢?
(1)从项目规模上来说,没有严格限制。无论项目大小,都需要提高测试效率,希望测试工作标准化,测试流程正规化,测试代码重用化。所以第一要做到的,就是从公司高层开始,直到测试部门的任何一个普通工程师,都要树立实施自动化测试的坚定决心,不能抱着试试看的态度。一般来说,一个这样的软件开发团队可以优先开展自动化测试工作:测试与开发人员比例合适,比如1:3到1:5,开发团队总人数不少于10个。
(2)从公司的产品特征来说,一般开发产品的项目实施自动化测试要比纯项目开发要优越些。但决不是说做纯项目开发不能实施自动化测试,只要软件的开发流程、测试流程、缺陷管理流程规范了,自动化测试自然水到渠成。
(3)从测试人员个人素质和角色分配来说,除了有高层重视外,还应该有个具有良好自动化测试背景和丰富自动化测试经验的测试主管,不仅在技术方面,更重要的是在今后的自动化测试管理位置起着领导的作用。还要有几个出色的开发经验良好的测试人员,当然也可以是开发工程师,负责编写测试脚本、开发测试框架,还有一些测试执行者,他们要对软件产品业务逻辑相当熟练,配合测试设计者完成设计工作,并在执行自动测试时,敏锐的分析和判断软件缺陷。
综合分析上述三个条件,就可以决定是否推行自动化测试;但是为了减少实施风险,还要预测到其他潜在的风险,做好事先解决问题规避风险的思路。
4对实施自动化测试的风险分析
资金风险,虽然有些项目具备实施自动化测试的条件,但还是要引入自动化测试后组织结构调整等方面的成本估算是很必要的。
自动化测试对软件功能类型的切入点的风险,开发的产品业务和功能是否需要自动化测试?包括白盒自动化测试、功能自动化测试和性能自动化测试。
软件自动化测试切入方式的风险,一定要将自动化测试与手工测试结合起来使用,不合理的规划会造成工作事倍功半。首先,对于自动化测试率的目标开始是20/80(20%的自动化测试和80%的手工测试),当这些目标都实现了,再将自动化测试率提高。
时间估算,在评估完前面几项指标后,需要估算实施测试自动化的时间周期,以防止浪费不必要的时间,减少在人员、资金、资源投入上的无端消耗。虽然到测试自动化步入正轨以后,会起到事半功倍的效果,但前期的投入巨大,要全面考虑各种因素,明确实施计划并按计划严格执行,才能最大限度降低风险。
工作流程变更风险,测试团队乃至整个开发组织实施测试自动化,或多或少会因为适应测试工具的工作流程,带来团队的测试流程、开发流程的相应变更,而且,如果变更不善,会引起团队成员的诸多抱怨情绪;所以应该尽量减少这种变更,并克服变更中可能存在的困难。
5什么条件下使用自动化测试
一般在这样的条件下使用自动化测试:
(1)具有良好定义的测试策略和测试计划(知道要测试什么,知道什么时候测试)。
(2)对于自动化测试你拥有一个能够被识别的测试框架和候选者。
(3)能够确保多个测试运行的构建策略。
(4)多平台环境需要被测试。
(5)拥有运行测试的硬件。
(6)拥有关注在自动化过程上的资源。
如下条件下是宜采用手工测试:
(1)没有标准的测试过程。
(2)没有一个测试什么、什么时候测试的清晰的蓝图。
(3)在一个项目中,测试责任人是一个新人,并且还不是完全的理解方案的功能性和或者设计。
(4)整个项目在时间的压力下。
(5)在团队中没有资源或者具有自动化测试技能的人。
6某软件公司实施软件测试自动化情况
某软件公司在ITS、GIMIS、HPC等项目中实施了自动化测试,自动化测试比例较高(如ITS自动化测试占65%,手工测试占35%),经过多年来自动化测试的实施,收效较好的原因主要有:
(1)在测试工作本身流程上、组织结构上根据实际情况进行了多次有效的调整与改进,甚至也包括需求、设计、开发、维护及配置管理等其他方面的进行了有机的配合。
(2)软件开发团队工作尤其注重以人为本,项目团队一开始的组建就非常重视人员之间的配合、测试组织结构的设置,每个角色都要将自己的责任完全担负起来,减少和解决设计、开发和测试之间的矛盾。
(3)项目管理部门对开展自动化测试的监督和评估起到了积极的作用,也包括对项目测试的检查和人员的考核。将自动化测试全面深入地贯彻到测试工作中。
该软件公司自动化测试实施相对比较成功,但或多或少还有些问题需要继续完善和改进,比如工具选择问题,培训到位问题,文档完备问题,人员合理分配问题,脚本可维护度等等,如表2所示。
表1自动化测试分五个级别
表2某软件公司测试自动化案例汇总表