敏捷测试理论以及实践(6)

简介:

2、编码阶段:

  完成了需求设计阶段,就要开始进入编码阶段了,虽然说开发与测试需要同步的,但是功能还没做完也没法同步去测吧,不过还是有事做的,就是可以同步开始写测试用例,这个就用到DevTest工具了。DevTest主要用于管理测试用例,以及根据测试用例来进行在不同环境下、不同时间下和不同的范围里进行的手动测试与自动测试,并且可以生成报表供评估测试质量和产品质量。

  也许有人有疑问,敏捷测试还需要测试用例?我的答案还是“是”又“不是”。

  先说“不是”,对于敏捷测试本身而言,我们实际新功能测试中其实没有用到测试用例,完全是根据设计文档来进行测试的(也许又有人来问敏捷好像不需要测试文档,这个在这里不多说,详见我另外一篇文章《结合工具来实现敏捷开发》),所以这个时候是不需要测试用例的;

  而为什么又说“是”呢?因为敏捷在不同的公司不同的情况可以有不同的实现方式,我们公司不是做项目的而是做产品的,也就是说像微软Windows一样,我们公司的产品也是1.0,2.0这样做下去,现在已经9.0了,在这期间,或多或少有很多功能是在不同版本里都有的,特别是那些基本功能,为了测试新功能是否破坏原有功能,我们需要测试这些老功能是否能正常工作,也许有人说,那我只要在测试新功能时测一下老功能就行了,测试用例也不需要吧?是的,也许你们公司不需要,但是对于我们公司而言,特别对于9.0而言,之前所有版本的功能都是老功能,之前的老功能有几百个,几千个,你能在测试新功能时测一下吗?很显然,这个是很难做到的,新功能做完时,一般情况,测试人员会检查是否能正常工作,是否对一些基本功能没影响,至于对其他看起来不怎么搭嘎的功能其实不太会去关注,而且时间上也不允许。这样子的话,测试用例就显得很重要了,因为测试用例从本质上来说就是介绍需要测试的功能点以及怎么去测试它们,把每个版本的每个的功能点都通过测试用例的方式保存下来,测试时想漏掉一个测试点都难。所以测试新功能时没测到的地方,都可以在用测试用例生成测试任务时重新覆盖全面,不过这一步由于测试覆盖面太广,也就意味着所花时间会很多,所以一般情况下,一部分测试点会用自动化测试工具跑掉,另一部分只能人工来跑的也只在最后系统测试的时候做掉。

  看了这个“是”与“不是”,大家应该知道我们公司的“敏捷测试”其实是结合了敏捷测试与传统测试,也即是兼顾速度与质量,所以有时候我们称之为有我们公司特色的敏捷测试,呵呵。

  在写测试用例的时候,测试人员需要和设计人员进行大量的沟通,以彻底理解这个功能为接下来的实际测试做好准备,“沟通”在敏捷里是一个重要的原则,在实际工作,我们也真正体验到它的好处,只有通过沟通,几个部门之间对于产品才有一个认识高度上统一,才能设计出、开发出、测试出一个好的产品来。不过这点,我觉得大家也只能真正通过实践才能体验,我说得太多,其实也没法让大家信服的。

  3、敏捷测试阶段:

  好了,写完测试用例了,开发也做完几个功能了,咱们也可以开始测试了,《结合工具来实现敏捷开发》里也讲过,我们公司是采用Scrum方式的,所以会生成很多迭代周期(Sprint),每个迭代周期中会从Backlog里分配一些Story来做,咱们测的也就是做好的Story,其实也就是功能点了。

  这部分工作主要在DevTrack中完成

  DevTrack的主要用于开发完成功能点编码以及测试人员完成敏捷测试。当需求设计完成后,项目经理会通过DevSpec/DevPlan来分配开发任务给相应的开发人员,并且同时生成敏捷测试任务,而开发一旦完成功能以后,就会在DevTrack中把相应的敏捷测试任务打到“可测试”状态,这样子,测试人员就开始进行测试了,测试完了,就把任务关掉,这个功能点就算测试完成了,项目经理会通过检查测试任务是否已经关掉来判断这个功能是否已经完成。

  由于之前测试人员已经把当前迭代周期中的功能点写成测试用例了,对于做好的功能点其实已经从理论上很了解了,所以测试起来就“轻车熟路”了。测试总会发现Bug,但是Bug有严重和不严重之分,我们现在处理Bug的原则是,对于影响到这个功能让客户评估的Bug都必须在这个迭代周期和下个迭代周期中修复,这些Bug可能包括报错,功能彻底没法工作,也可能包括一些页面上的美观,因为我们的产品会定期给客户做评估,以让客户看看做完的功能是否符合他们的要求,所以对于做好的功能点起码需要能让客户能用起来,所以客户会最直接用到的看到的地方就需要优先处理掉。而对于其他普通的Bug,DevTrack会有专门的一个文件夹保存,这些Bug会在Release之前通过优先级来一一进行修复,有些实在优先级很低的或者暂时不能完成的可能就会推迟到下个版本再做或者直接就不修了,因为有时候修一个Bug可能会带来一些意想不到的问题,如果可修可不修的Bug,就不需要冒影响产品质量的风险去修了。

  不知道大家有没有注意到,上面说了Bug需要在这个迭代周期与下个迭代周期中修复,为什么不在这个迭代周期中修复呢,其实是这样的,因为测试总是在开发后面开始的,如果一个功能点在一个迭代周期的后期完成,从时间上可能测试无法在这个迭代中完成,但是迭代周期的时间又不是想改就可以改的,所以这种情况下,我们就会在下个迭代周期中把这个功能点测完。不过一般情况下,我们还是建议不要延迟到下个迭代周期中完成,因为一个迭代完成后,我们会给一个Build给客户做评估,如果有没测试完的功能,可能就有一些潜在的影响客户使用的Bug,这样子对销售就会产生不好的影响。所以,解决的方法就是一个功能点开发完成就必须马上让测试测,发现Bug马上修复,如果有功能点到了迭代末期才做好,则已经Check In代码确保没有严重Bug(主要是表明和这个功能最基本的使用),没有Check In 代码的就等到下一个迭代周期再Check In代码,测试也推迟到下个迭代中测试。

  就这样子,迭代周期一个个进行中,开发做了一个个的功能点,然后测试就会把这些测完,在这个周期中,开发与测试的工作量都会在DevTrack中被记录,主要是花费时间与剩余时间,从而得到了产品未来的一个进度趋势图,也就是所谓的燃尽图。

  4、需求变更:

  敏捷是欢迎变更的,客户有啥想法可以随时提出随时改进,我们公司的产品是定期给客户一个Build来进行评估的,所以客户经常会要求做一些更改,对于还没有测的功能点稍微好一点,因为只要改设计文档,但是对于已经做完或者正在做的,已经测完或者正在测的呢?答案当然是也得更改,做好的重做,测好的做完重测,对于瀑布模型来说,这个也许是难以想象的,但是对于敏捷来说,这个是家常便饭了。

  在实际操作中,我们可能会用到一个DevSpec的功能,这个功能比较不错,所以我单独提出来说一下。有些时候,如果一个功能已经在测试了,如果突然有了改动,而这个改动也已经做完了,如何通知测试人员重新测一下呢?口头通知?Email?其实都可以,只是有些时候,改动太多,需要知会的人太多,或者改功能的人不知道要通知哪些人,那怎么办?DevSpec有个功能可以自动提醒跟这个功能点有关任何开发、测试人员,让他们知道他们做的事情有改变了。


本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
27天前
|
测试技术
软件测试的艺术:探索式测试的实践与思考
在软件开发的广阔海洋中,测试是确保航船稳健行驶的关键。本文将带你领略探索式测试的魅力,一种结合创造性思维和严格方法论的测试方式。我们将一起揭开探索式测试的神秘面纱,了解其核心概念、实施步骤和带来的效益。通过实际代码示例,你将学会如何将探索式测试融入日常的软件质量保证流程中,提升测试效率与质量。
|
17天前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
33 4
|
19天前
|
人工智能 JavaScript 前端开发
自动化测试框架的演进与实践###
本文深入探讨了自动化测试框架从诞生至今的发展历程,重点分析了当前主流框架的优势与局限性,并结合实际案例,阐述了如何根据项目需求选择合适的自动化测试策略。文章还展望了未来自动化测试领域的技术趋势,为读者提供了宝贵的实践经验和前瞻性思考。 ###
|
17天前
|
测试技术 Python
探索软件测试的深度与广度:从理论到实践
在数字化时代,软件已成为我们生活中不可或缺的一部分。随着技术的不断进步和用户需求的多样化,确保软件质量变得尤为重要。本文将深入浅出地介绍软件测试的核心概念、类型及其在软件开发生命周期中的重要性。我们将通过实际案例,展示如何实施有效的测试策略,并探讨自动化测试的未来趋势,旨在为读者提供一套完整的软件测试知识体系,帮助提升软件质量和开发效率。
|
18天前
|
测试技术 Python
探索软件测试的奥秘:从理论到实践
在软件开发的宇宙中,软件测试犹如一颗璀璨的星辰,指引着质量的方向。本文将带你穿梭于软件测试的理论与实践之间,揭示其内在的逻辑和魅力。从测试的重要性出发,我们将探讨不同类型的测试方法,并通过实际案例分析,深入理解测试用例的设计和应用。最后,我们将通过一个代码示例,展示如何将理论知识转化为实际操作,确保软件质量的同时,也提升你的测试技能。让我们一起踏上这段探索之旅,发现软件测试的无限可能。
|
21天前
|
jenkins 测试技术 持续交付
自动化测试框架的搭建与实践
在软件开发领域,自动化测试是提升开发效率、确保软件质量的关键手段。本文将引导读者理解自动化测试的重要性,并介绍如何搭建一个基本的自动化测试框架。通过具体示例和步骤,我们将探索如何有效实施自动化测试策略,以实现软件开发流程的优化。
43 7
|
20天前
|
测试技术
探索软件测试的奥秘:从理论到实践
本文深入探讨了软件测试的基本概念、重要性、主要类型以及实施策略。通过分析不同测试阶段和相应的测试方法,文章旨在为读者提供一套完整的软件测试知识体系,帮助他们更好地理解和应用测试技术,确保软件产品的质量和可靠性。
36 4
|
24天前
|
机器学习/深度学习 人工智能 自然语言处理
智能化软件测试:AI驱动的自动化测试策略与实践####
本文深入探讨了人工智能(AI)在软件测试领域的创新应用,通过分析AI技术如何优化测试流程、提升测试效率及质量,阐述了智能化软件测试的核心价值。文章首先概述了传统软件测试面临的挑战,随后详细介绍了AI驱动的自动化测试工具与框架,包括自然语言处理(NLP)、机器学习(ML)算法在缺陷预测、测试用例生成及自动化回归测试中的应用实例。最后,文章展望了智能化软件测试的未来发展趋势,强调了持续学习与适应能力对于保持测试策略有效性的重要性。 ####
|
24天前
|
敏捷开发 Devops 测试技术
探索自动化测试之美:从理论到实践
在软件开发的海洋中,自动化测试犹如一座灯塔,指引着项目向着质量和效率的彼岸。本文将扬帆起航,从自动化测试的意义出发,穿越工具选择的海域,停靠在实战演练的岛屿,最终抵达持续集成的港湾。我们将通过一个具体的代码示例,体验自动化测试的魅力,并分享如何将这些实践应用到日常的软件质量保证过程中。
|
23天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
37 2
下一篇
DataWorks