对于开发人员而言,测试是产品的生命周期中非常重要的一环。在团队成员都明白测试的重要性的情况下,开发人员往往不会太过重视,觉得自己不需要花精力去测试,也不会花时间去编写代码,这样的情况下,开发人员往往会忽视测试。然而,随着时间的推移,如果开发人员不了解自己目前做的是什么工作,就会觉得做不到或者做得很糟糕。因此,开发人员会更加重视探索测试。那么如何进行探索测试呢?这篇文章就为大家介绍一下探索测试是什么。
探索测试是指开发人员先设计一个新的、有价值的系统,然后使用一个新的、与之前系统的不同之处的代码对其进行测试。这是一种新的测试方法,即通过观察当前系统的数据,分析其数据表现,来评估系统目前在运行过程中是否存在不准确的地方。这种方法会更容易的发现系统中存在的不准确的地方。对于系统本身来说也是一种提升。我们可以通过这个方法来对项目进行评估,同时也可以对产品在运行过程中出现的不稳定等现象进行分析。探索测试可以分为两种方式分别为:无测试流程探索测试和有测试流程探索测试。无测试流程探索测试是通过无测试流程来收集用户数据。
1、对于有测试流程的探索测试,我们需要根据当前系统和产品的具体情况进行设计,并使用一个合适的工具对系统进行探索。
我们需要建立一个合理的测试流程,根据设计来规划探路过程。具体来说就是设计好每个节点的功能、流程、代码、数据等方案,再设计好每个环节的流程,让开发人员明确每一个环节的功能流程和数据要求等,以便根据需求,制定最优计划,保证每一个节点可以顺利探索到。当然每个工具的探路方式也是不同的。比如我们给系统划分了5个任务和3个查询模块,这就需要开发人员根据任务来进行探索,然后才能在每个模块上执行相应的任务。这种模式下会大大缩短系统的时间,减少错误发生数量,并且可以实现快速测试过程中出现误差以及遗漏的模块。同时在测试过程中也不会浪费太多时间与资源。
2、有测试流程的探索测试,我们可以直接用测试软件(HTML或 Java)从不同的用户处收集数据,并将这一步与研发无关。
这种方式的好处是,测试软件可以根据数据分析结果发现系统存在有问题的地方。这对于用户和团队来说都是一种提高。而且这类方法在测试环境更灵活,可以让我们更加自由地开发新系统。另外,从测试人员获取用户信息以及对他们进行分析和评价对于整个开发过程来说,也是有很大启发的。需要注意的是:无测试流程的探索测试需要开发人员自行动手进行,对于某些情况下也可以根据自身的需要去选择其他方法。而且这类方法在进行测试时不需要将测试流程加入到开发进度中去。需要注意的是我们需要做好基础工作,为后期探索测试打下基础。
3、有测试流程的探索测试,我们需要直接测量数据并且将结果反馈给开发人员。
有测试流程的探索测试可以收集到足够的数据来帮助我们分析当前产品的表现。通过数据分析可以帮助我们了解哪些地方出了问题,从而能更好地了解我们产品是否存在缺陷或者漏洞。但因为目前还没有一个标准的测试流程,所以我们对测试的要求还是非常高的。一般来说分为两种方式:1、以最终用户为中心,直接测量数据,例如:如果这位用户每天都会浏览网页,那么需要直接测量这位用户每分钟打开网页的次数。2、以最终用户为中心直接测量数据并反馈结果给开发人员。这样能够让开发人员更加快速地找到不存在问题的地方。
4、如果只有一个探索者在使用该工具(HTML)时,我们需要对产品的流程和操作进行指导,并且在使用过这一类无压力的探索者后(或使用后)给予指导意见。
在没有使用 HTML工具的时候,开发人员需要去阅读一些相关的介绍。如使用 HTML中比较常用的一些接口等等。这一类探索者一般对我们都比较熟悉。我们也不需要在探索者接触产品之前就对他进行指导,可以让其中一个测试人员帮助我们使用产品,来让他们认识到产品的操作流程和相关细节。当他接触你时,他就能对你提供的相关操作进行更好的指导和帮助,从而更好地了解这个功能和产品在实际操作过程中存在哪些问题。
因为开发人员在开发过程中会遇到各种各样的问题,所以我们要根据实际的情况来进行探索测试,而不是一次性的去做所有的测试。所以,要根据实际的情况来进行相应的探索测试,一般在开发完一个功能之后,开发人员都会有自己的想法,也会有自己对这个功能的理解,这时我们可以通过查看开发人员所编写代码中的问题来了解这个功能到底有没有问题。因此就需要我们不断完善探索测试的过程来不断发现问题。在我们进行探索测试时,应该及时记录测试过程中遇到的各种问题,包括我们发现的一些小问题、小漏洞等。而且,我们也可以利用这些测试来不断完善我们的探索测试过程。
1、新开发完一个功能之后
一般开发完一个功能之后,是很容易会有各种各样设计缺陷和 bug,这个时候对于产品来说,我们需要进行不断的设计更新,来完善这个产品,完善产品功能,提高用户体验。同时,开发人员还要不断创新,开发新的功能,来满足用户需求。所以这个时候我们需要在做完探索测试之后再做最后一次测试,通过测试来完善它。但是通常这些问题在出现的时候都是不需要进行验证的,因为开发人员就已经在测试了,这时候我们通过检查开发人员所编写代码中出现的问题以及查看他们编写代码中是否出现了 bug来了解他们编写代码中是否存在一些问题,以及他们是如何去设计新功能的。如果我们发现了这些 bug,那么在设计完新功能之后就应该对其进行一定的修改然后再上线使用了。这样做有两个好处:第一,新功能上线之后发现有许多问题不需要再进行研究和测试,因为这个功能不可能是一直存在或都存在的;第二,新功能上线之后很可能就会被用来测试和优化这个功能。所以说,这个时候进行探索测试,应该选择一个好一点地方进行测试才是比较好也是比较合理的方式。
2、测试前有一些数据反馈,但是数据反馈可能比较零散或没有关联,这是由于开发人员没有对其功能和数据进行及时的了解,这就需要针对数据做一些相关测试。
例如,在测试中,开发人员会先收集一些数据,然后再把这些数据带到测试中,这样就能比较好地了解出哪个环节出了问题,哪些环节是没问题的,再通过一些测试来验证这个功能是否真的没问题,如果问题确实很严重,可以重新来进行探索测试。如果测试中开发人员发现某个模块出了问题,那么这时候还需要再去进行探索测试,如果开发员发现某些模块问题不大或者没有什么大问题的话,那么也要通过一些测试找出这些模块中有什么漏洞以及修复这些漏洞是什么方法或流程。如果发现某个模块出了问题又或者功能模块出了问题不能正常运行时,就需要向开发人员提问,然后由开发人员来检查这个模块是否存在一些异常操作。比如当某个单元检测到某个错误或出现某笔错误时需要立即修复。如果有一个漏洞并不是太大,但是可以修复的话就可以继续使用,但是如果漏洞比较大或者涉及到用户隐私问题时就不可以使用了,因为这些存在漏洞或者涉及隐私问题导致客户不能正常使用产品而对此产生很大损失。
3、新开发完一个功能后,或者是开发人员不在,我们也没有办法及时的把之前所开发的需求进行反馈到我们的探索测试人员这里,这时候我们可以利用相应的问题和数据对其功能进行相应的分析和判断。
这时候我们可以把前一次开发的需求进行整理并分析,找出问题出现时的原因所在。然后,我们再把这个问题重新梳理一遍,然后再去找新开发人员进行讨论和分析,如果能找到其中一个导致这个问题出现的原因,那我们就可以继续进行开发,直到这个问题解决掉为止。这样做虽然有一定的风险,但是也是一个非常好的方式因为之前开发的一个功能出现了不稳定或问题后,这些问题都是暂时没有办法解决的,但是这个问题可能会随着时间慢慢就变得不稳定了,所以此时我们要尽量及时地将这些问题进行解决或者是调整,以保证我们最后能够顺利完成这一阶段的测试工作,并把相应结果及时反馈给开发人员。如果没有得到开发人员的及时反馈,或者是开发人员只是简单地在我们的产品中添加了一个功能/组件来代替原有现有的功能/组件的话,那么我们很可能就会出现一些新情况甚至出现不可预见的问题。比如:业务流程无法快速升级、变更需要等待很长时间、版本更新慢导致用户体验不佳等等。所以这时候你就要进行相应的探索测试了。那么一般情况下,我们就应该按照以上几种情况来进行探索测试及处理过程。
4、新开发完一个新功能后。
当开发完一个新功能后,这个功能的需求和设计方案已经被固定下来了,这时就应该马上开始进行探索测试,看看这个功能到底会不会遇到什么问题。其实,对于这个测试的意义,我认为并不大。因为这是测试项目开展前期,为后期的测试工作做铺垫工作的一个重要环节(主要是为了确定功能是否存在问题)。而在开发完这个新功能后,开发人员应该尽快地对这个功能有一个初步的理解,以便将来在新功能落地使用时更加快速。而且开发人员也可以从新功能得到一些信息,这样就能够减少他们在工作过程中遇到的一些问题。所以,开发完这个功能后,如果没有特殊情况的话,就可以不进行探索测试(开发人员可以按照自己的理解来编写代码)。
进行探索测试,最好的方法是让开发人员参与进来,并且对探索测测试中的关键问题,如设计参数和功能、测试流程、代码结构等内容,都可以通过测试活动的方式来实现。这里要注意,开发人员只是一个参与探索测试角色而已,并不需要参与到测试活动中。如果开发人员对测试活动的主要目的、流程等内容没有很清楚的理解的话,那么还是建议开发人员参与到整个探索测试活动中来。同时,可以通过引入参与人员来增加项目执行的灵活性。在项目正式开始之前,需要先确定一下开发人员要测试的内容。例如项目需求及任务、活动主题等内容。在确定了相关需要测试的内容后,开发人员要积极地参与到探索测试中来。
1、沟通主题和目标
开发人员要确定的第一个工作主题是“需求分析”,这个工作主题需要与项目需求进行匹配。这个过程中也是开发人员学习和熟悉开发方法和流程的过程。在沟通过程中,开发人员要明确这个任务主要是验证用户体验度,这个过程可以通过具体描述来完成,并且把探索测试主要目标放在客户体验上。当开发人员问开发们“您目前想在项目中实现什么”时,可以回答“最希望实现的功能”,或者是“您希望达到哪些效果?”如果可以的话,可以把解决客户需求实现之间的矛盾,以及完成目标所需要解决的问题等作为这个工作题的沟通重点:如果开发人员不知道解决这个问题应该从哪里开始着手?如果无法从用户体验出发进行解决的话,那么这个任务将非常难以顺利地完成(因为测试方法、代码结构等等都是围绕这个目的而设计出来)。
2、确定时间范围
在开始探索测试之前,要确定好测试的时间范围,以及测试阶段任务间会有哪些时间限制。在测试阶段前需要先确定测试项目,在后续启动测试阶段,则是直接将项目进行下去,在测试阶段,则可以只开展一个或两个阶段的测试工作,而其他的环节则不参与到活动中来。如果是测试过程中测试了多次,或者有需要不断测试或修改新问题,那么则可根据实际情况自行决定测试时间和项目阶段任务间的时序间隔。如果是在测试阶段内发生变更,则需要提前通知开发人员进行变更,并且在变更之前还要提前准备好变更说明文件和相关工具,以确保变更信息及时被披露和被记录在内。同时,应该提前告知开发人员,一般情况下项目结束时都会有变更要求,需要修改新任务时也要提前准备相关工具并预留出时间,以确保最终变更之后不会影响到研发人员进行新任务测试。
3、讨论过程
在进行探索测试的时候,最关键也是最难确定的一环就是如何组织讨论,如何组织沟通交流。一般在探索测试开展之前,双方都会围绕“哪些内容需要明确、哪些内容不需要明确”等进行一次专门的讨论,同时也可以在相关领域专家的支持下,根据讨论结果进行进一步讨论,确定最终的框架和步骤等。在最后总结过程中就可以避免上述这两种情况发生,如果双方各自为营,那么每个人都会给对方提建议;如果各自都没有明确目标,那么可以在讨论后直接形成统一意见。另外在开展探索测试过程中还需要注意一点:在探讨讨论环节,每个人都要积极地参与到讨论中来,因为每个人都有自己最有发言权。通过讨论,大家都会充分发表自己对项目整体理解及需求程度等方面的看法。
从上面的介绍中可以看出,开发人员需要具备一定的开发能力,才能更好地对现有产品和功能进行分析,对用户进行需求洞察,而不是简单的理解为编写代码。那么,在进行探索测试的时候,要如何做到开发人员和用户对测试需求的理解更加透彻呢?这主要取决于开发人员的水平。在开发实践中,开发人员对于系统开发的理解非常重要,对于一些简单的功能或者是流程问题往往不太清楚。因此,开发人员要进行系统架构方面的设计时,往往会把自己以前的开发经验进行结合考虑。但是对于开发人员而言,如果不熟悉产品架构知识以及如何理解产品架构这个概念的话,那么开发人员往往容易出现理解偏差。因此,在进行测试时要注意开发人员与用户之间的沟通和理解。