软件测试中最复杂的业务
手动还是自动测试strong>
该软件总是由人创建,经过人测试并且在大多数情况下是由人使用的。 任何负责任的测试人员最糟糕的梦想是错过一个严重的错误。 测试人员尝试仔细检查需求并编写测试用例,仔细检查产品,并在发布后,用户在一周内 告严重问题。
遗失了多少对其他人显而易见的错误 而且,也许是时候只使用自动测试仪了
自动测试仪或质量检查人员
如果您每天将这种方法与手动方法进行比较一百次,则可以节省大量时间。 这使开发人员可以更快地实现功能,因为他们无需打开浏览器就可以放心地编写代码。
当应用程序在没有可靠的测试套件的情况下增长时,频繁的错误会静默地渗透到其代码中。 而且随着应用程序的增长,整体解决方案是扩大平台上的人员数量-雇用专业测试人员(QA),这在捕获回归方面将永远不会像自动测试那样有效。
质量保证(QA)增加了实现功能所需的时间,因为开发人员必须与其他人进行交流。 与一组测试相比,它很昂贵。
这并不意味着质量保证绝对没有用,但是除了良好的测试套件外,还应聘用质量保证人员,而不应替代它们。 尽管手持式测试仪在搜索回归时不如计算机有效,但是它们在测试软件(如用户界面)的主观质量方面要好得多。
测试类型
让我们看一下不同类型的测试。 一方面是单元测试。 这些测试隔离了各个组件,证明了它们可以提供预期的行为,而与周围的系统无关。 因此,单元测试通常很小而又快速。
使用测试组合来创建自己的测试集的最佳方法。 这是一个套件,包含几个涵盖应用程序整体功能的高级集成测试,几个涵盖子系统的更详细的中级测试以及涵盖每个组件详细信息的许多单元测试。
当试图最小化其缺点(例如执行时间缓慢)时,此方法对应于每种测试的强度。
开发过程阶段
测试驱动的开发过程
自动化测试可能是增强对不断增长的代码库的信心的最佳方法。 为了增加这种信心并在节省时间和清理代码方面获得更大的收益,建议使用称为“测试驱动开发”的过程来编写代码。 TDD是使用测试来开发设计和应用程序的过程。 它从红色,绿色,重构开发周期开始。
红色,绿色,重构是导致开发此功能或纠正错误的一系列步骤。
解决TDD问题时,您需要确定从哪里开始测试代码。 从高层次开始,检查用户如何与系统交互,然后变为零是从低级开发开始,然后过渡到最终功能案因人而异,因职能而异。
如果测试是最初编写的,则并不意味着将使用测试开发。 在执行红色,绿色,重构循环时,仅响应测试失败所导致的错误消息编写代码非常重要。 这样可确保不会执行未经测试的功能。
行为驱动的开发过程
软件开发方法“行为驱动开发”是“测试驱动开发”的分支。
这种方法的主要思想是在发展纯技术利益和商业利益的过程中结合起来,从而允许管理人员和程序员说同一种语言。 对于这些方面之间的交流,使用了非专家可以理解的自然语言构造,例如管理面板,通常表示软件产品行为和预期结果的注册表格。
BDD方法是TDD的扩展,因为在编写任何测试之前,您必须首先以面向主题的语言描述所添加功能的期望结果。 完成此操作后,专家或特殊软件会将这种语言的结构翻译成测试说明。
域驱动设计
BDD也可以描述为域驱动设计(DDD)与TDD之间的交集。 域驱动设计是一种软件开发方法,旨在处理具有复杂业务规则的项目,其中开发人员和领域专家之间的协作(通常,此角色由客户端承担)对于设置通用语言和领域模型是必需的。转化为非常具体和详细的??要求。 在BDD中,这些特定要求用于在其周期的第一步中驱动开发过程。
从业务到技术测试流程
我们的人用于测试的是什么span>
对于我们的团队而言,测试首先是一个良好的音调规则。 我们创建了自己的工具和应用程序集,完全没有放弃手工测试,我们认为这对于每个IT公司的工作都是最佳的。
让我们回顾一下我们选择用于测试的工具。
1. RSPEC
要验证Ruby代码,请使用用Ruby RSpec编写的工具。 这是一个基于行为的开发环境(BDD),并且编写了足够的代码(TDD)。 Amoniac团队的整个工作旨在使开发过程清晰易懂,并使最终客户满意。 这就是我们之所以选择RSpec的原因,因为我们认为RSpec是我们测试工作中最好,最有效的工具。
2.萝卜
Turnip是一个开放源码的Ruby gem,它提供了一个接受测试的平台,旨在解决用Cucumber编写规范时面临的一些问题。 Cucumber支持各种编程语言,并且作为验收测试框架也非常受欢迎。
Turnip像Cucumber一样工作,因为它是主要支持验收测试的框架。 尽管Turnip不像Cucumber那样功能丰富,但它简单而强大,这使验收测试更加容易且更易于访问。
3.工厂启动
Factory Bot是编写用于Ruby测试的工厂的助手。 它以前被称为Factory Girl。 对于较旧的版本,请使用FactoryGirl而不是FactoryBot。
该库用于方便地创建模型实例,我们将在这些实例上进行测试。 例如,某些用户,文章,项目以及任务。 我们不能每次都通过填写所有必填字段来创建对象。 这是Factory Bot派上用场的地方。 只需定义一次模式,然后基于该模式生成新实体就足够了。
4.录像机
防止外部请求的方法是记录实时互动并在测试过程中“回放”。 VCR gem有一个盒式磁带的概念,它将记录您的测试套件传出的HTTP请求,然后重播它们以供将来进行测试。
使用VCR时的注意事项:
- 与其他开发者共享盒带通信。
- 需要外部服务可用于首次测试运行。
- 难以模拟错误。
5. WEBMOCK
WebMock是一个库,用于在Ruby中对HTTP请求进行存根并设置HTTP请求的期望值。 使用WebMock,开发人员可以根据方法,URI,标头和正文匹配请求,并以不同的表示形式匹配相同的标头。
摘要
最后,我们可以轻松地说,是的,测试是开发人员和最终客户节省的时间的绝大部分。 正是这项工作使您可以精确地制造出最终在头脑中看到的产品,并且向客户保证了它可以完美工作。
这套工具能够在几秒钟内进行测试,在这种情况下,编写测试将节省时间,反之亦然。 编写测试会给出错误消息,该测试将告诉您下一步该做什么。 而且,也许它看起来像是一种机械化,但是随着项目数量和规模的不断增长,它成为必需品。
但是永远不要忘记,在测试的过程中应该避免大量陷阱和反模式,因为编写不当的测试会产生相反的效果并导致崩溃。
测试使您充满信心,可以继续前进。 软件和质量保证可以并且应该一起使用以驯服现有项目并解决更大,更复杂的项目!
翻译自: https://hackernoon.com/effective-testing-in-complex-software-development-projects-mcck3y4t
软件测试中最复杂的业务
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93916 人正在系统学习中 相关资源:软件滤波杂汇-C代码类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!