FitNesse(简称Fit)被定义为一个轻量级的、开源的自动化测试框架,能够帮助测试团队进行接口自动化测试和回归测试,通过在web页面上进行简单的表格编辑形成测试用例就可实现,并且可以运行这些测试用例以确定预期结果是否通过。Fit是由java编写完成,支持多语言的测试,包括java、c、c++、python等。
Fit框架包含三部分:wiki,testsystem,fixtures。wiki部分用于测试人员编写测试用例,执行用例和检查执行结果。test system包括slim和fit,是Fit的执行引擎。Fixtures是测试代码。如下图所示:
,---------------.
| WikiServer |<-------------.
`---------------' v
| ,-------------.
| | Reporting |
v `-------------'
,---------------. ^
| Test System |--------------'
`---------------'
|
|
v
,---------------------.
| System Under Test |
`---------------------'
相比较与TestNG,Fit的最大优势在于将业务逻辑用例与测试代码完全隔离,功能测试人员负责在Fit页面上编写自动化用例,测试开发工程师负责编写测试代码。在维护上,功能测试人员更了解系统逻辑和业务,重点关注测试用例的维护,测试开发人员关注在底层测试代码的维护,使得整个自动化测试过程更加敏捷。
虚拟卡账务系统是公司P0级系统,处于业务系统链条的核心端,前端产品的金融属性、产品属性、业务模式(如放款类型、还款类型等)、费率配置、交易数据存储、息费计算、用户额度数据等等,都需要账务系统的功能支撑。目前虚拟卡账务系统已对接了包括自有(安逸花)和合作方(如京东、网易、唯品会等等)共计超过30个金融产品。
账务系统核心功能支持循环/非循环额度模式,交易支持消费、取现、分期、转分期、退货、主动还款、线下还款、批扣、代扣、提前结清、终止,入账支持实时/非实时入账、实时结转、合并账单日,同时还有一部分合作方特殊定制化的逻辑处理。为了保障公司业务的发展速度,虚拟卡账务系统的上线频率基本保持在一周2到3次。面对功能如此复杂的系统和紧凑的上线频次,在账务系统需求的sit测试阶段、上线前的预发布回归阶段,都需要引入自动化测试,用自动化测试手段来覆盖账务核心功能和产品核心交易场景,确保账务系统每次上线的稳定性。
Fit自动化在账务系统测试过程中,有三个应用场景:sit测试过程中的测试数据制作、sit测试过程中功能表数据检查、预发布回归测试中账务核心功能自动化回归。
在实际使用中,首先,我们封装了一套通用性的调用方法,如:接口请求调用、数值运算、日期运算、数据库操作、json拼装等等。

以接口调用为例,如下图所示:
1、本方法支持POST/PUT/GET/DELETE四种请求方式;
其中GET和DELETE请求的参数既可以直接写在requestURL中,也可以写在parameters中,写在parameters中的参数会自动组装到url上,组装格式为requestURL?parameter
2、支持application/json、application/xml、application/xhtml+xml三种文件类型;
3、默认连接超时时间为50000ms;
4、默认编码格式为UTF-8;
5、连接成功时,excute()方法返回true;否则为false;
6、getResponse()方法返回响应内容
7、getValue()方法解析返回的json串,通过入参key,获取对应value;多层json,可以通过key1.key2查到值,有list结构的,key表示为key1[1]形式,指定取list对象key1的第一个元素
功能测试人员在编写自动化用例时需要用到请求方法,只要了解该表格如何输入和输出即可使用,无需关注请求方法本身的实现逻辑,降低了功能测试人员的技术门槛。
在有了公用方法之后,第二步,我们对虚拟卡账务系统的单点功能进行了接口组合封装,目的是为了给测试人员提供统一的调用使用方式,也便于维护,当某个单点业务发生变化的时候,只要维护一处即可,对实际的测试用例本身无任何改变。
第三步,对环境信息的添加和维护,自动化用例的执行环境可能会发生变化,因此需要将执行环境的信息进行统一维护,如测试环境的IP、登录信息、接口请求方式、数据库信息等。
在以上三部完成后,接下来就可以进行账务自动化用例的实现了。
在账务自动化用例实现过程中,主要分为两大步骤:业务用例设计、代码实现。
在业务用例设计过程中,首先,整理出账务系统核心功能点,同时以产品、交易、账单周期三个维度,整理合作方产品特殊的用例逻辑,并以判定表的形式整理出来。
下一步,根据核心功能和特殊逻辑点,进行Fit自动化用例代码实现,账务系统测试的一个特殊性在于需要校验大量的表数据,特别是在回归测试过程中,如果人工回归,时间成本非常大,并且随着账务系统功能不断增加,对接合作方不断增多,回归的成本会越来越大,因此自动化代码中,对于预期结果的检查包含了大量的表字段校验,很大程度上解放了人工测试资源。如下图(部分截图),是对协议化开户相关数据的校验,已由Fit实现:
下图是账务系统核心回归用例集,图中1-8是八个用例集,每个用例集中,都包含若干test case:
在展开某一个回归用例集后,会以账单周期的维度,创建用例步骤,如下图,是以一个账单周期为跨度进行自动化用例回归,在每个step中,都有具体的用例:
在展开每一个步骤中,是具体测试用例的实现,下图是step1-1展开后的test case:
在具体的case中,会包含详细的功能逻辑和数据验证,如下图所示,每一栏以折叠形式展示,点击“加”号,可以展开,看到具体的逻辑代码实现
自动化用例完成后,下一步是自动化执行,前文已经提到,在虚拟卡账务系统的测试过程中,Fit自动化应用在三个场景:sit测试时的测试数据制作、sit测试时的数据验证、上线前预发布回归的自动化覆盖。
Fit自动化执行非常简单可以单挑case执行,也可以执行一组case。单独运行某一条用例,只需要在case页面,点击test即可。
如果需要执行一组case,需要在编写用例时先创建suite page,在suite page中创建test page,这样,当点击suite page中的suite按钮时,该页面下的所有case都会被顺序执行。
Fit对于执行结果的检查非常直观,预期结果一致会标记为绿色,否则会标记为红色,如果整条case执行通过,该case会被标记为绿色。
下图为单个case测试通过展示,运行结果会以绿色高亮显示,内容包括通过的case数,验证点数,执行时间:
下图为suite测试通过展示,运行结果会以绿色高亮显示,内容包括通过的case数,验证点数,执行时间:
下图为部分case验证失败展示,失败结果以红色高亮显示,内容包括执行成功与失败的case数,验证通过结果数、失败结果数,执行时间:
下图为case执行后表数据校验通过展示,表中被绿色标记的数据,表示自动化用例执行结果与预期结果一致:
下图为case执行后,表数据校验部分失败展示,被红色标记的数据,表示自动化用例运行后得出的结果与预期结果不一致:
上面图例展示的Fit执行结果十分直观,当然,对于失败的case,需要测试人员进行原因排查,是上线代码原因还是环境原因亦或是本身case原因。



















