什么是自动化测试

自动化测试是现代软件开发的必备环节和基本要求。本文通过手工测试和自动化测试的比较,介绍了自动化测试的基本概念和优点。

一、现在的手工测试方式

我们一般采用的的测试方式,是一种手工的方式。当你写完了一些代码,完成了一个功能,会把程序运行起来,看看程序运行的结果是否和需求一致。如果不一致,则检查代码,找出问题,进行修改。如果一致,则测试通过,功能开发完毕。这是我们常规的测试方式。

这个过程可以用下图表示。

手工测试过程

二、手工测试的问题

如果你的程序很小、运行很快,或者代码逻辑不复杂,涉及的业务场景不多,这种手工测试的方式问题不大。但对于大型的、企业级的系统开发,或者需求变更频繁、影响面大,这种手工测试就会有很多的问题。比如以下这些:

  1. 测试非常耗时。对于大型企业级应用系统,通过启动应用、手工测试的方式,是非常耗时的。一般多场景的测试,时间以小时甚至天计。程序员的精力也将大量消耗在测试过程中,难以顾及代码优化。

  2. 在多场景下,手工测试很难覆盖全部场景。采用手工的方式录入数据、执行流程,创造各种业务测试场景,在场景很多的情况下,很容易遗漏。

  3. 对于深层的业务逻辑,手工测试很难触及。例如需要对贷款的审批规则进行测试,手工的方式需要从创建客户、开立账户,一直到申请放款,经过多个步骤才能触发底层贷款审批规则,测试效率很低。

  4. 修改了代码逻辑,对系统其他功能的影响很难覆盖测试。由于手工测试的代价高、效率低,因此一般仅测试此次修改涉及的功能,很难对系统其他功能开展全面的回归测试,这是很多新功能上线后出现问题的原因。

  5. 重复的手工测试造成大量浪费。手工测试,一般分为单元测试、第三方系统测试和业务验收测试,由开发人员、测试人员和业务人员在不同的阶段执行。虽然阶段不同,但测试案例往往会有很多的重复。当需求不大的时候这种影响不大,但如果在大型的项目建设中,这种重复会造成大量的人力、时间上的浪费。

三、自动化测试是什么样

采用自动化测试能够较好的解决上面的问题。

一个最简单的自动化测试的例子是这样的。

例如我们编写了一个Hello somebody的小程序,这个程序可以对somebody加上Hello祝福语。程序很简单。

public class HelloWorld {

    static String sayHello(String words){
        return "Hello " + words + " !";
    }

    public static void main(String[] args){
        System.out.println(sayHello("bird"));
        System.out.println(sayHello("sky"));
        System.out.println(sayHello("every day"));
    }
}

在main函数里,调用了sayHello方法,设置了几个参数,运行程序来查看程序运行的是否正确。

SayHello运行结果

这是典型的手工测试方法。

而通过自动化测试就不用这么麻烦,甚至不用启动主程序。

使用Spock测试框架编写的测试脚本如下

class SayHelloSpec extends Specification{

    def "对给定的名称返回问候语Hello"(){
        given:"一个问候语功能"
        HelloWorld helloWorld = new HelloWorld()

        expect:"对给出的名称,增加问候语Hello"
        helloWorld.sayHello(name) == helloName

        where:"给出名称的场景有这些"
        name        ||  helloName
        'bird'      || 'Hello bird !'
        'sky'       || 'Hello sky !'
        'every day' || 'Hello every day !'
    }
}

运行结果如下图。


在这里插入图片描述

可见,当自动测试时,只要给出输入和输出,则案例自动执行,不用人工判断结果是否正确。

我们修改一个结果,在“Hello bird”中增加一个“1”,改成“Hello bird1”,主动造成测试失败,看看测试框架会如何反应。


测试框架指出错误点

测试框架会首先报告测试失败,然后指出应该的结果是什么,错误的点在什么地方,非常直观。

四、自动化测试的优势

上面我们对自动化测试有了个大概的了解,并且看到了自动化测试框架的使用,下面介绍下自动化测试的优点。

  1. 执行速度快。自动化测试的案例执行,一般都比较快,一个案例耗时在毫秒级。与人工方式的测试时间单位在小时和天级相比,优势很大。下图是刚才自动化测试的用时,时间为742ms。


    测试耗时
  2. 覆盖面广。自动化测试案例,一般能够覆盖95%以上的代码功能,而且能够重复使用,使得回归测试变的非常容易。开发新功能,对老功能的影响,通过自动化的回归测试,能够马上检测得知。

  3. 能够不启动应用,直接测试代码逻辑。自动化测试设定输入输出,直接对具体方法进行测试,不依赖于应用启动,不依赖于操作流程,能够深入底层逻辑开展测试,极大提高测试效率。

  4. 测试层次清晰,不同测试各司其职,全面掌控代码质量。自动化测试是一个完备的金字塔结构层次,每个层次测试有不同的测试范围,避免了手工测试的案例重复问题。测试金字塔如图所示。

[测试金字塔]

每个测试层次的功能和占比不同,共同保证了代码的开发质量和用户体验。

  1. 同步生成最新的功能文档,测试即文档。测试案例由业务语言描述,很好的解释了系统设计的最底层设计细节,它们清晰准确、格式规范、可以运行,并且能够随着需求变化不断自动更新,是一种有生命力的文档。

五、总结

自动化测试是现代企业级软件开发的必然要求,是敏捷开发、微服务架构管理、代码重构等工作的底层支撑,没有自动化测试,以上工作的效果将大打折扣,甚至无从谈起。

自动化测试能够极大的提高软件开发效率,保证开发质量,使得软件系统能够快速响应业务需求变化,满足市场变化,从而提高企业竞争力。

但天下没有免费的午餐。自动化测试对技术、管理各个方面提出了极高的要求,同时反过来将促进人员能力的迅速提高。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350