1.5 自动化代码的设计思路
在介绍具体设计思路之前,给大家举一个例子:把大象放进冰箱,总共分为几步?
先不管冰箱有多大、大象怎么可能放得进冰箱这些实际问题,按照正常的步骤应该分为三步:
打开冰箱门→把大象放进去→关上冰箱门
举这个例子是要告诉大家,要实现某个目标,先不要考虑实现的具体细节和效率、实现的道路有多曲折。因为在你面前压根儿还没有路,与其思来想去,不如找准方向,勇敢地踏出第一步。按照能想到的步骤进行拆分,然后逐个突破,而这个过程会逐步拓展你的思路和带来成就感,这对整体的进度是有促进作用的。随着对各个点的突破,思路会越来越清晰,动力也会越来越足,自然就能实现最终的目标。
所以,可以按照图1-5-1所示的思路来设计主要的突破点。
图1-5-1 实现目标的步骤
第一步:以结果为导向,反推要实现这些结果总共分为哪些步骤。比如,目标是“用Python+MySQL实现HTTP接口自动化测试”,那以这个目标为基础,反推要实现这个目标需要实现哪些功能,比如数据存储在哪里、怎么读写数据、怎么发请求、怎么处理请求等。
第二步:将每一步抽象为功能点。即将每一步抽象出来的每一个待解决的问题提炼成一个个功能点。比如,数据存储在哪里可以提炼为数据库功能。如果选择MySQL作为数据库,则涉及MySQL数据库本身的操作、SQL语句等。这些都是由待解决问题提炼出来的功能点。
第三步:各个击破,逐一解决每一个功能点,然后再将功能点串联起来。这涉及两个过程:第一个过程是,逐一实现每个功能点,这个相对简单,即使不会,通过互联网搜索也能找到解决方案;第二个过程是,首先将功能点串联起来,在每个功能点都实现之后,你心中已经有了大概的处理逻辑,然后绘制业务流程图将每个业务功能串联起来,查漏补缺。当业务流程中所有的功能点都实现时,目的也就达到了。
1.5.1 由手工测试分析出哪些步骤可自动化处理
手工测试接口的步骤如下所示。
在Excel中准备测试用例→手工获取测试数据→使用Fiddler发送接口请求→人工比较请求结果→请求成功:更新测试用例,具体流程如图1-5-2所示。
图1-5-2 手工测试接口流程
引入自动化测试是为了解决重复性的工作。下面分析这个流程中哪些步骤是重复的:
(1)手工获取测试数据,每次都要人工复制一次数据(绝对重复)。
(2)使用Fiddler发送接口请求,每一条测试用例都要调用一次接口(绝对重复)。
(3)人工比较请求结果(部分重复)。
1.5.2 以可重复步骤为契机,梳理自动化测试的步骤
将重复的步骤实现机器化,则自动化测试的步骤如下。
(1)用存储设备存储测试数据,比如用MySQL数据库存储接口测试用例表。
(2)使用Python语言从存储设备中获取测试数据。
(3)使用Python语言发送接口请求,数据就是第(2)步中获得的测试数据。
(4)使用Python语言处理接口比较返回结果和预期结果。
(5)使用Python语言将处理结果写入对应的存储设备中。
(6)使用Python语言分析测试结果,以图表化的方式展示。
上述步骤如图1-5-3所示。
图1-5-3 接口自动化测试功能拆分
1.5.3 抽象自动化步骤到功能点
(1)使用MySQL数据库存储数据。建立接口测试用例表,用来存储接口测试所需要的测试数据,要求表中的每一条数据都可独立运行。
(2)使用Python读写MySQL数据库操作,该操作是为获取测试用例数据并将结果写入对应用例做准备。
(3)使用Python发送HTTP接口请求,需要注意请求类型的不同和数据的处理逻辑。
(4)使用Python处理HTTP返回包数据,这里是从两个维度(关键参数值与参数完整性)来进行处理。
(5)使用Python统计、导出测试结果,涉及Excel操作和数据的分析和图表化。
(6)梳理业务处理逻辑,整合功能点,实现最终效果。
将上述步骤简化后如图1-5-4所示。
图1-5-4 接口自动化功能抽象