我们详细分析了比自动测试更好的情况下如何进行手动测试,测试人员需要做什么以及如何从初级到测试主管建立自己的职业。 该指南是与Agima Darina Gordeeva测试部门负责人共同编写的。

你好 我叫Darina Gordeeva。 我已经在AGIMA公司担任部门主管近三年了。 在测试和质量保证领域超过6年。 在此期间,她从大三到系主任,测试了Iron,以及移动和Web应用程序,自动化并配置了质量检查流程。 今天,我将向您介绍手动测试的功能,功能和隐藏的问题。
回想一下,使用Habr促销单词的任何读者可以为自己喜欢的课程获得10,000卢布的折扣,而最勤奋和细心的人可以通过与Agima代理商共同准备的材料解决难题,从而获得25,000卢布的折扣:
效率,灵活性,即兴创作的可能性和其他优势
如今,有许多测试框架可以支持几乎所有现有语言。 看起来-您可以自动执行。 但是即使到现在,手动测试也很重要。
其必要性的一种解释是,通过对功能的手动测试,我们可以更快地获得有关我们正在分析的产品状态以及开发质量的信息。 此外,在自动化过程中,通常必须更改和更新预先设计的案例,并且需要花费一些时间来编写自动测试。
同时,在开发过程中,当客户看到最终决定发布的成品中要更改的某些功能时,可能会收到客户的反馈-如果您已经为此准备了软件测试,则必须重写它们。 更新案例,自动测试并检查它们将占用宝贵的时间,可用于更新此功能本身。
所有这些意味着手动测试的主要目标是首先确保声明的功能正常运行,没有错误并给出预期的计划结果。 没有它们,您将无法确定自己可以继续工作。 对于与后续开发相关的实现功能,尤其如此。 在这种情况下,为这些功能创建自动测试的麻烦成为整个产品开发的障碍因素,这会改变截止日期并破坏截止日期。 自动化案件的时机或早或晚都会到来-但不要为了追求体力劳动的完全例外而人为地加以利用。
此外,在应用程序开发的早期阶段,自动化可能会非常昂贵。 您将需要具有特定资格(可能不止一个)的专家。 不断使测试保持最新状态需要资源,直到该功能发布为止。 几个月的闲暇时间用来舔一次自动测试将打击团队的动力。
如果要定期添加新功能并跟上竞争对手的行动,那么在创建自动测试之前,请始终手动检查产品功能。 仅仅因为手动测试可以加快您的流程。
对于移动开发而言尤其如此。 这些项目中的大多数现在都在短距离内进行开发,这意味着功能正在加速实施。 在这种情况下,手动测试使您可以尽快向团队提供反馈:报告错误的存在-或以一切正常,您可以继续进行而取悦。 您可以稍后进行一系列自动测试,并在它们的帮助下覆盖大量代码。 手动测试将有助于为该测试准备案例。
自动测试不允许您检查使用应用程序的新功能是否方便-可用性测试始终是手动进行的。
Skillbox建议:Fullstack在线课程是移动开发人员 。
在手动测试中,您可以即兴创作,创建疯狂的动作组合,这些组合对于用户而言从来没有发生过,但可能由用户意外地执行。 这使您可以创建新案例。
由于测试人员不断问自己“如果?”的问题,因此也会出现新的案例。 因此,他找到了与应用程序交互的原始方法-即使它们不在基本方案中。

手动测试问题及其解决方案
手动测试的最大缺点是人为因素。 当然,它会影响团队中发生的一切-参与者的工作和客户端发生的事件。 对于质量检查人员而言,测试人员无法完全融入流程并错过潜在错误的原因可能是:缺乏经验,家庭问题或头痛。
两名测试人员可以以不同的方式测试同一场景。 怎么办呢? 重要的是,每个意外或不同的结果都应记录为案例。 这样任何测试人员都可以通过执行相同的操作来对其进行测试。 但是,这可能还不够-如果案例不够详细,并且测试人员无法理解说明。 当然,不可能保证绝对排除人为因素-但您可以尝试将人为因素引起的问题的可能性降到最低。
这也对生产要素和劳动力成本的交付条件产生了负面影响:毕竟,现在将测试人员在流程中发明的“棘手”案例添加到定期进行的基本案例和回归中。
由于遇到的一些错误可能还没有严格的描述,因为这些错误的发生原因尚不清楚,这使情况更加恶化。 如何应对这种重新测试? 要么找到错误的根源并消除错误,要么-仍使问题案例自动通过-在这种情况下,从时间和经济角度而言,向软件测试的过渡都是合理的。 (不,这与前述内容并不矛盾-因为这种情况已经在积极的开发过程中出现,并且到此时您都将部署自动测试过程)。
无论如何,需要回归测试的第一种情况的出现或应用程序第二版本的发布以及与这些事件相对应的团队规模是自动化变得重要的时刻(但不排除手动测试新功能)。 在这个阶段,自动化已经开始节省时间:开发人员本人甚至可以在转移到QA部门之前就可以对新功能进行回归测试,以确保它不会破坏现有功能,并且测试人员不必经历再次感到无聊的基本情况。 在此阶段实施自动测试的另一个优点是,您可以按照特定的时间表运行它们-每晚,冲刺结束之日或发布新版本的应用程序时。
在这种情况下,不应忘记以下几点:
- 创建案例并编写自动测试将需要时间-将其放置在sprint中;
- 确保自动测试案例的编写和详细编写正确,并完整描述一个可能的问题或现有场景;
- 检查自动测试是否正常工作,是否真的检查了需要的内容并进行了定性的检查。
总结:手动测试在早期阶段在速度和人工成本上具有很大的优势,并且随着应用程序的增长和大量回归测试的出现,它在单独的sprint中进入了新功能的“运行测试”类别。 这将是相关的,并在必要时紧急检查应用程序将如何响应操作系统中的更改或更新环境。
测试阶段:什么,什么时候以及如何
如果您将开发过程视为一个整体,并将测试作为其一部分,那么通过适当的计划,您将始终了解准备就绪的时间和范围。 这将使您能够更好地计划某些操作的时间-因为某些事件在逻辑上跟随其他事件,因此您有机会根据自己的期望将它们按链式排列。
测试人员会在早期阶段创建应用程序。 客户在这里有了一定的想法,业务分析师从此要求中收集信息-测试人员此时已开始工作,检查这些要求。
怎么样了 他们询问有关预期功能的问题。 他们试图想象应用程序在实现时的外观。 如果我们正在谈论现有产品中的新功能-他们会弄清楚该功能将如何与现有功能交互。 在开发人员评估了客户想法的复杂性并确定了实现这些想法所需的时间之后。
之后,设计阶段开始。 在这里,有必要了解如何在屏幕之间进行转换,要验证的某些字段,应用程序或其单独功能通常如何与最终用户进行交互。 对于功能,重要的是要了解如何将它们包含在现有应用程序的体系结构中。
在设计阶段 ,当创建屏幕之间的过渡图时,测试人员将阐明它们所组成的各个元素的行为以及某些用户操作会带来哪些视觉效果。 此外,测试人员会验证布局的完整性,确认布局显示了实现预期功能所需的所有内容。 独立检查布局是否符合准则也很有用。
Skillbox建议:在线课程移动应用设计
随着开发的开始,质量保证专家立即开始编写测试用例。 在开发的不同阶段,它们的详细程度可能会有所不同,但是最终需要确保最大程度地覆盖整个产品案例,以便在收到组件后可以立即开始测试。
测试本身的第一步是烟雾测试:评估应用程序或其新部分通常已准备好进行验证。 冒烟测试是对原则上是否启动应用程序或特定功能的测试。
冒烟测试是查看我们是否可以开始功能测试的快速方法。 该术语来自电路板和微电路的创建者,他们首先必须确保新电路不会燃烧-因此得名:熏制/不熏制。
这是确保我们确实完成了任务并且可以将其投入工作且不会发回给程序员的快速方法。
以授权表为例,冒烟是对您是否可以登录的评估,而无需指定在字段中输入的数据是否有效,密码提示等其他功能是否起作用。 如果我们原则上能够登录,则可以对该模块进行进一步的深入验证:采用否定情况,边界值,评估对已建立的验证规则的遵守情况。
下一步是进行回归测试。 在手动或自动模式下,将执行主要的预先计划的测试阵列。
回归测试非常好,因为它使您即使在以前一切正常的地方也可以发现错误。 这是由于以下事实:回归是在每个新模块的实施和每个应用程序更改期间对一组标准案例的功能的评估。 确实,当开发人员添加新功能时,当前版本可能已损坏或新功能可能与现有功能冲突。
例如,添加新屏幕并因此更改导航,可能会破坏菜单的功能,或者至少显示它。 另一方面,应用程序代码的全局重构可能会带来令人不快的意外-在此之后,还必须进行回归测试。
更新应用程序使用的库并更改其工作环境可能会导致问题。 更新应用程序的次数越多,回归检查就越重要。 不要将自己限制在已经实现该功能时进行的一次性检查-检查所有更改。 回归测试的自动化将在这里为您提供帮助-仅仅因为在短短一周内创建的新功能的手动回归测试就可能需要两个甚至更多时间,而测试部门只会陷入其中。
当然,在准备好将具有一个或多个功能的候选发布产品投入生产时,将进行全面检查,但是仍然有必要在开发的某些阶段应用某些相关案例。
一切都以测试最终组装 -候选发布
结束 。 这包括由内部测试人员检查Beta版本,进行业务测试-由客户评估最终产品并接收来自客户的反馈,以及邀请某些用户熟悉该应用程序的预发布Alpha版本或其新功能。 之后,该应用程序就可以准备投入生产了。
但是,质量检查专家的工作还没有到此为止 -他将不得不测试应用程序更新及其与早期版本的兼容性,编写案例以检查创新,并在必要时自动通过这些方案。
同时,测试人员参与进一步分析人员收集
的统计信息 ,监视应用程序的行为以及用户与之交互的方式。 这样不仅可以实时查看其工作结果,还可以有时发现导致应用程序崩溃的新情况和未知错误。
重用时间:猜对了,现在任何Skillbox课程正在等待您10%的折扣,或者表现出毅力并收集所有重试的答案-这些折扣加在一起(但Skillbox课程没有其他折扣)。
但是,您不应拖延太多-促销活动的有效期至2018年8月30日。 回想一下谜语的主题是移动的,英语单词可能会干扰俄语,因此请小心! 提交课程申请,当经理与您联系时,给他发一条消息,并用密码(或几笔)加密。
测试形式化:测试计划,错误报告的格式,报告
为了准备进行功能测试,质量检查工程师会制定测试计划。 这是他在测试产品时将需要的文档,以及他将需要执行的操作的列表。 测试计划指示测试的时间安排,描述产品或特定任务-以确定确切需要检查的内容。 所有主要测试用例均已详细描述。 列出必要的测试类型:功能测试和压力测试。 描述了自动化某些情况的过程以及将它们自动化的阶段。
测试计划以报告格式的描述结尾:您需要预先说明将以哪种形式提供结果。 最常见的报告格式是测试案例及其通过状态的列表。 知道案例如何满足全部需求,并阅读报告后,我们就可以得出应用程序开发的当前状态的结论。 为此,足以查看其中有多少个组件在一个或另一个组件中成功完成。
最后的批准表示产品已准备就绪,状态为“所有要求均已包含在案例中,所有案例均已成功完成”。
另外,测试计划使错误报告的格式正式化。 这可能是错误列表,即跟踪器中的任务列表。
测试人员的任务是向所有团队成员提供有关产品质量的最完整信息。
您需要了解并能够成为测试人员的知识
首先,测试人员必须能够思考并专心和刻苦。 经验很重要-它可以让您积累某些成就并巩固测试过程的知识,并将其转化为技能。
手动测试专家不必能够编写代码并具有对体系结构的深刻理解。 这不会阻止他检查功能并在应用程序级别理解应用程序和服务器之间的交互原理。
自动化测试专家是一个独立的行业,具有完全不同的知识集。
高质量的自我测试不仅是脚本,还包括对如何从内部构建应用程序的理解,以及对特定技能的了解,例如知道如何并行化测试或如何在云或多台服务器上运行它们。只有这样的技术才能使我们自豪地称自己为“带大写字母的自动化工程师”。因此,如果没有语言,它们的框架,OOP的原理以及对技术发展的仔细监控的知识,该自动测试仪就无法做到。
每个测试人员的路径都是从掌握测试的理论基础开始,获得有关应用程序如何与服务器以及与环境交互的初步思想。如果存在这些知识,并且此人有非常认真的学习意愿,那么他就可以被视为初级测试员。一群这样的新人眼神发光,他们被指派了一位高级专家-一位领先的测试员,或者,如果公司负担得起的话,请一位培训师有目的地抽出他的病房。他们向大三学生解释了难以理解的时刻,并给出了痛苦的任务,例如在测试用例上运行功能。在此过程中,一个人学习阅读测试用例并掌握功能测试的实践基础。在此阶段,初级人员仍然需要检查测试的质量,并在测试之后将其通过。下一步是创建个人(或集体,取决于公司的规模)发展计划,根据该计划,新手测试人员必须进行开发,掌握新知识并在分配给他的时间内达到一定的结果。这正是成为中级专家的方式。中级测试人员是一个能够独立完成分配给他的任务,找到解决方案并通常有意识地执行其工作的人,而不是盲目地遵循既定算法。随着测试设计技能,功能和应用领域知识的发展,以及新测试技术的发展-现在需要独立开发-逐渐转变为领先的专家。现在,他们可以委托他像以前一样维持和支持下辈们。下一级是测试线。他已经可以管理团队,其中包括前三个类别的代表,他所管理的流程以及他所管理的时间,包括参与规划全球发展流程,评估团队的人工成本和预算。团队领导的进一步纵向增长是部门管理或向产品管理的过渡。但是,如果某人追求新知识而不是追求新的管理职位,那么他可以结合系统管理员,测试人员和程序员的职责来选择开发,分析或诸如DevOps之类的方向。测试只是我们在“ Fullstack-Mobile Developer”课程中正在考虑的移动开发的众多领域之一。与我们合作的行业专业人士将与您分享他们的经验并检查您的作业,并且培训的结果可以被接受为在大公司实习的机会。来我们学习吧!
Skillbox建议: