最重要的自动化测试概念-断言讨论
断言
测试任何一个功能,包含3个步骤:
提供被测功能的输入
等待被测功能执行
对结果进行判断(断言)。
其中步骤1和步骤3如果需要人工干预,则称其为手工测试,如果不需要,则可以称其为自动化的测试。
从测试的金字塔模型来看,越是往顶层的测试越是直接代表用户需求,价值越大,但是自动化的可能性越小,越往底层,工作量越大,好处是自动化的可能性越来越大。自动化的好处在于,可以将任务交给计算机来执行,而不需要消耗人的宝贵精力,而这正是软件开发的最大的成本。自动化的程度越高,人的精力才能集中在靠近顶层的用户。
自动化的测试一大关键要素就是要求断言的自动化,习惯了命令式(过程式)编程或者思考方式的人,对于需要进行判断结果是否正确的情况,第一时间想到的肯定就是用编程语言里的if语句来进行判断。这种处理方式在需要人工干预的测试场景下,可能还有一席用武之地,但是对于一个自动化的测试场景来说,是行不通的,原因如下:
通过if语句进行的判断没有持久化(存储到硬盘)
测试执行完毕以后,没有留下判断的痕迹。所有的自动化的测试工具,都是依赖断言来进行结果判断的。通过断言来进行判断的好处就在于断言的结果是持久化的,可以在运行完毕以后随时查看,统计。
通过if来进行的判断很难有一个标准的模式
如果希望通过测试运行后留下的测试数据来进行判断测试的结果通过与否,希望在测试失败的了的情况下了解到在什么情况下失败了(当时输入的值是什么?预期的输出是什么?实际的输出是什么)