内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

MySQL数据库_阿里云大学_免费领

2021-07-18 02:13 出处:欧普曼云计算 人气: 评论(0

MySQL数据库_阿里云大学_免费领

我将在这里写下我从SAP过程编程、手动单元测试到SAP面向对象编程和测试驱动开发(TDD)的经历。

当我编写第一个ABAP程序时,我还学习了SAP面向对象编程教育和其他各种非SAP的面向对象编程书籍(如Java或C语言),设计模式,干净的代码,测试自动化,openSAP在线免费课程如何编写可测试的代码。综上所述,我开始觉得这些书/资料中描述的优点很有道理。我在互联网上也读到了很多悲观的信息,同样来自SAP社区,这些东西在SAP中不能很好地工作。在这种信息混乱的情况下,我还是觉得面向对象编程、自动化测试、设计模式给人很好的感觉。所以我开始创建第一个本地类。这给我的代码带来的价值微乎其微,但我在面向对象语法方面有所改进,而且这至少促使我更好地实现有关干净代码的书籍中的规则(尽管对于干净代码规则,OOP并不是不可避免的)。然后我为一些本地类创建了第一个自动化测试,因此我改进了SAP单元测试框架的语法(当时我没有使用mock,也没有使用TDD)。这些改进对于我的下一步非常重要,但是在我的旧过程程序和带有本地类的新过程程序之间仍然有一个很小的差别。我决定从OOP和TDD中获得更多的价值,所以我决定开始创建全局类,虽然我有一个印象,我不太需要它们,但我不知道如何以这样的方式创建它们,使它们可以重用。后来我发现在全局类中编写大部分代码是不可避免的还有其他几个原因。

我在这里给其他开发人员的建议是开始在全局类中创建大部分代码,在本地类中创建很少的代码(对于范围非常有限的事情)。

我开始认为我需要全局接口和模拟依赖关系。为了从OOP和自动化单元测试中充分获益,我们必须开始创建全局接口。它们也非常有用,对于这种编码风格来说是不可避免的。

当我创建第一个自动化单元测试时,我认为mock是奇怪的,数据挖掘和大数据,spies或adhoc测试类对于单元测试来说就足够了。很快我就发现了模拟在单元测试中的巨大威力。关于mock,我的建议是,它们是处理依赖关系、使测试更具可维护性的非常好的方法,并且需要用来实现单元测试的更大潜力。我无法想象现在不使用mock。

当我开始使用抽象类和多态性时,我发现我开始在单元测试中有很多重复代码,什么叫大数据云计算,所以我开始使用抽象测试类,在一个地方有测试类的重复代码。

在我更好地理解了干净的代码规则、OOP、全局类、全局类之后接口,自动单元测试,模拟,抽象测试类,然后我完全意识到了解它们是多么重要。现在我开始看到我的代码开始变得更加可重用、可维护、稳定、可测试(这是一些重要的软件质量标准)–这些事情我不能在更高的层次上用我的过程式编码风格来做。尤其是当我开始编写大型程序时,我意识到我能够控制它们。

当我能够进行自动单元测试和面向对象编程时,我开始意识到先创建测试比在我完成程序后创建测试更有优势。我看到首先创建测试(就像在关于TDD的书中描述的那样)帮助我,引导我,创建真正的可测试代码,可测试OOP。我开始更多地考虑界面。所以当我来到这里的时候,这让我明白TDD实际上是不可避免的。如果我要花更多的时间创建这些测试,并且我需要重新设计我的程序使其可测试,那么为什么我要在程序完成后编写自动单元测试代码呢?如果我先创建测试,那么就可以避免这种情况。所以对我来说TDD不是关于个人的选择,而是关于节省时间。当然,也有一些情况会导致我在更新程序后编写测试——例如,如果我发现我错过了一些场景,并且程序已经编码,或者如果我在测试中发现了缺陷……我的大多数自动测试都是在我的程序更新之前准备的。

关于单元测试的维护——我感到非常惊讶我花在维护过去的单元测试上的时间太少了。这几乎没什么…有一次我决定创建一个集成测试而不是单元测试(使用这个SAP单元测试框架),人工智能的技术有哪些,我在单元测试中更新数据库,我没有模仿它,这个测试失败了一次,尽管我没有碰它。除此之外,维护时间为0。这是一个令人担心的问题,即维护需要很多时间。如果程序中的所有依赖项都是孤立的,单元测试只测试程序的内部逻辑,那么目前我不知道为什么单元测试应该停止工作(失败),淘客程序,如果没有其他开发人员接触它们。另外,生态环境大数据,我也不确定我是否能够理解,维持自己一段时间(几个月)后,我自己的测试。我很惊讶这是很容易的。

我可以确认OOP和自动化测试的支持者所描述的优点和好处(在书中或网络博客中…)是真实的、有效的。本文的目的并不是提供所有这些好处的列表,它们在其他地方有很好的描述。本文的一个目的也是给SAP开发人员增加勇气,他们觉得这些技术真的很有效,他们走的很好,如果他们保持精力以这种方式改进他们的编码,这是有好处的。

当我开始在SAP单元框架中使用代码覆盖特性时,我发现,当我创建测试类时,我有一种不具有高覆盖率的倾向,因为我有一种感觉,如果存在某种缺陷的可能性非常低,那么我将毫无用处地花费时间来创建自动化测试。减少这种诱惑并不容易,我花了好几个月的时间,但是当我发现如果我的覆盖率低,那么不管怎样,它发生了一些缺陷,覆盖率低,我没有那么安全的感觉,在我改变了一些东西/重构/在我的程序(类)中,我没有破坏一些东西。我发现为这部分代码创建自动化的单元测试更省时,就像依赖于没有缺陷一样。同样在几个月之后,自动测试的创建花费了我更少的时间,因为创建它们的技能正在提高。实现100%的分支有时对我来说是不可能的,因为测试覆盖率工具报告未测试的分支,也报告那些不可能通过的分支,如果我前面的代码不允许的话。所以我不狂热地追求100%的覆盖率,尽管我想拥有它。我主要使用代码覆盖率来检查我是否忘记对它进行一些自动测试,这是完成此任务的一个非常好的工具。

我在去TDD的路上遇到的问题是,我是否需要SAP编码项目:

–干净的代码规则?

–全局类和接口?

–设计模式?

–可测试的OOP风格的代码?

–嘲笑?

–单元测试的代码覆盖率更高?

–测试优先(TDD)?

我的答案对所有人都是肯定的。

现在我开始研究行为驱动的发展,自动接受测试。我再次有同样的感觉,它们至少和自动单元测试一样重要。我现在相信,有devops目标的团队,想要做真正的敏捷开发,别无选择,还要实现自动化的验收测试,除了自动单元测试(尽管少量的手动探索性测试或前端手动测试可能会保留很长一段时间…直到人工智能可能会取代大部分的开发、测试任务)。

分享给小伙伴们:
本文标签: MySQL数据库阿里大学免费

相关文章

评论

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

签名: 验证码: 点击我更换图片

评论列表