互联网金融P2P主业务场景自动化测试

互联网金融P2P行业,近三年来发展迅速,如火如荼。
据不完全统计,全国有3000+的企业。
“互联网+”企业,几乎每天都会碰到一些奇奇怪怪的bug,作为在互联网企业工作的测试人员,风险和压力都巨大。那么我们如何降低风险呢?
P2P主要的业务场景概括地说有6个,请看下图:
我的想法是做成生产者-消费者模式,类似一个生态系统,将不会对测试环境造成不良影响。
假设发标仅受这些输入参数的影响:
Parameters:
项目类型
[XX宝, XX贷, projectC, projectD]
期限单位
[天, 月]
还款方式
[到期还本付息, 按月付息到期还本, 月N日还息到期还本, 等额本息, 还款方式5]
道具
[coupon1, coupon2, coupon3, coupon4, coupon5]
下面我们先设计一下发标自动化测试用例吧:
如果考虑以上四个参数的各种组合影响,使用穷举法。将会有4*2*5*5=200。呵呵,如果是手工做功能测试的话,单是发200个标也要耗费不少的时间。
当然我们是理性的人,不是人傻时间多。我们可以使用ACTS工具,该工具很牛叉,使用的是IPOG算法。通过该工具我们可以得到最优的25个用例,如下:
Relations:    
     
Test Case#项目类型期限单位还款方式道具
     
0XX贷到期还本付息coupon1
1projectC到期还本付息coupon2
2projectD到期还本付息coupon3
3XX宝到期还本付息coupon4
4XX贷到期还本付息coupon5
5projectC按月付息到期还本coupon1
6projectD按月付息到期还本coupon2
7XX宝按月付息到期还本coupon3
8XX贷按月付息到期还本coupon4
9projectC按月付息到期还本coupon5
10projectD月N日还息到期还本coupon1
11XX宝月N日还息到期还本coupon2
12XX贷月N日还息到期还本coupon3
13projectC月N日还息到期还本coupon4
14projectD月N日还息到期还本coupon5
15XX宝等额本息coupon1
16XX贷等额本息coupon2
17projectC等额本息coupon3
18projectD等额本息coupon4
19XX宝等额本息coupon5
20XX贷还款方式5coupon1
21projectC还款方式5coupon2
22projectD还款方式5coupon3
23XX宝还款方式5coupon4
24XX宝还款方式5coupon5
我们通过多种方式发布这25个项目,如果是在ui上,建议使用selenium,将这25个项目信息录入到csv。测试脚本读取csv,可以每日不停的发项目,发布后记录下项目id。
现在生产者有了,是时候考虑消费者了。如果生产者生产出来的是项目,那么消费者就是我们的投资客户。
为了更好的一一对应,我们就制造出25个投资客户。步骤是:
注册->绑定邮箱->实名认证->充值-》发放道具
准备数据的过程也很简单。
客户道具
  
甲子coupon1
乙丑coupon2
丙寅coupon3
丁卯coupon4
戊辰coupon5
己巳coupon1
庚午coupon2
辛未coupon3
壬申coupon4
癸酉coupon5
甲戌coupon1
乙亥coupon2
丙子coupon3
丁丑coupon4
戊寅coupon5
己卯coupon1
庚辰coupon2
辛巳coupon3
壬午coupon4
癸未coupon5
甲申coupon1
乙酉coupon2
丙戌coupon3
丁亥coupon4
戊子coupon5
最后,这25个投资用户与25个项目对号入座,意思就是用户甲子使用道具投资XX贷的这个项目,过程中我们将检验各种流水,得出一个这样的测试结果:
TestResult Case#项目类型期限单位还款方式道具客户测试结果
       
0XX贷到期还本付息coupon1甲子
1projectC到期还本付息coupon2乙丑
2projectD到期还本付息coupon3丙寅
3XX宝到期还本付息coupon4丁卯
4XX贷到期还本付息coupon5戊辰
5projectC按月付息到期还本coupon1己巳
6projectD按月付息到期还本coupon2庚午
7XX宝按月付息到期还本coupon3辛未
8XX贷按月付息到期还本coupon4壬申
9projectC按月付息到期还本coupon5癸酉
10projectD月N日还息到期还本coupon1甲戌
11XX宝月N日还息到期还本coupon2乙亥
12XX贷月N日还息到期还本coupon3丙子
13projectC月N日还息到期还本coupon4丁丑
14projectD月N日还息到期还本coupon5戊寅
15XX宝等额本息coupon1己卯
16XX贷等额本息coupon2庚辰
17projectC等额本息coupon3辛巳
18projectD等额本息coupon4壬午
19XX宝等额本息coupon5癸未
20XX贷还款方式5coupon1甲申
21projectC还款方式5coupon2乙酉
22projectD还款方式5coupon3丙戌
23XX宝还款方式5coupon4丁亥
24XX宝还款方式5coupon5戊子
这样的话,每一次发布,我们都可以做到覆盖这几个流程了
那么,剩下的就是还款和提现了。
还款通常要做成作业服务,当然测试环境还是得实现,不可能某个项目的期限是30天,要等到30天后才还款,所以还款的参数需要可控到还款日期(业务发生日期)和操作时间。
提现就更简单了。

 

转载于:https://www.cnblogs.com/yicaifeitian/p/4761263.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/374576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OSGi将Maven与Equinox结合使用

很长时间以来,我一直在努力理解OSGi的真正含义。 它已经存在很长时间了,但是没有多少人意识到这一点。 人们已经大肆宣传它是一种非常复杂的技术。 这是我为所有Java开发人员简化的尝试。 简而言之, OSGi是一组规范,这些规范允许对…

note05-计算机网络

5.网络安全 被动攻击(UDP报文被截获 被 进行流量分析) 主动攻击 1.篡改(更改报文流 伪报文) 2.恶意程序(病毒、木马、蠕虫、炸弹) 3.拒绝服务Dos 密码体制 1.对称密钥密码体制(DES IDEA) 即加密和解密的密钥K相同 2.公钥密码体制(RSA) A加密使用PKB公钥 B解密使用对应的私钥SK…

825. 适龄的朋友

适龄的朋友 在社交媒体网站上有 n 个用户。给你一个整数数组 ages &#xff0c;其中 ages[i] 是第 i 个用户的年龄。 如果下述任意一个条件为真&#xff0c;那么用户 x 将不会向用户 y&#xff08;x ! y&#xff09;发送好友请求&#xff1a; age[y] < 0.5 * age[x] 7 ag…

struts2设置文件上传大小

利用struts2想要设置或者限制上传文件的大小,可以在struts.xml配置文件里面进行如下配置: <constant name"struts.multipart.maxSize" value"10000000" /> 上面这句话的意思是设置文件上传大小&#xff0c;最大不超过9.8M。计算方式如下&#xff1a;…

Java命名约定

我想写这篇简短的文章来帮助某些难以记住Java API类和方法名称的人。 如您所知&#xff0c;Java是区分大小写的语言&#xff0c;要构建Java程序&#xff0c;您需要使用许多内置API类和方法。 而且&#xff0c;初学者发现很难准确地记住方法名称和类名称而不改变大小写。 但是实…

smarty引擎之练习

关于smarty最直观的感受就是分离了页面中html和php的代码&#xff0c;页面不再混乱&#xff0c;很清晰了…… smarty->assign();//注册 smarty->display();//加载模板 除了老师给的表&#xff0c;kemu,nandu,type都建了表格&#xff0c;便于使用 main.php <?phpinclu…

Heron 论文翻译及理解

Heron 论文翻译及理解 背景介绍&#xff1a; Heron是号称Twitter流数据处理的新一代实现&#xff0c;是StormV2。我们首先回顾一下Storm系统的问题 worker日志混乱&#xff0c;如果一个bolt日志过大&#xff0c;会冲掉其他bolt的日志worker之间因为没有资源隔离&#xff0c;因此…

1688比赛中的配对次数

给你一个整数 n &#xff0c;表示比赛中的队伍数。比赛遵循一种独特的赛制&#xff1a; 如果当前队伍数是 偶数 &#xff0c;那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛&#xff0c;且产生 n / 2 支队伍进入下一轮。 如果当前队伍数为 奇数 &#xff0c;那么将…

Hadoop:简单介绍

什么是Hadoop&#xff1a; Hadoop是一种用Java编写的框架&#xff0c;用于在大型商品硬件集群上运行应用程序&#xff0c;并具有类似于Google File System和MapReduce的功能 。 HDFS是高度容错的分布式文件系统&#xff0c;与Hadoop一样&#xff0c;旨在部署在低成本硬件上。 它…

PHP中__get()和__set()的用法实例详

刚刚看到一个对我有用的文章&#xff0c;我就把它摘抄下来了。 php面向对象_get(),_set()的用法 一般来说&#xff0c;总是把类的属性定义为private&#xff0c;这更符合现实的逻辑。但是&#xff0c;对属性的读取和赋值操作是非常频繁的&#xff0c;因此在PHP5中&#xff0…

Javascript 异步编程的4种方法

你可能知道&#xff0c;Javascript语言的执行环境是"单线程"&#xff08;single thread&#xff09;。 所谓"单线程"&#xff0c;就是指一次只能完成一件任务。如果有多个任务&#xff0c;就必须排队&#xff0c;前面一个任务完成&#xff0c;再执行后面一…

力扣奇偶链表

给定单链表的头节点 head &#xff0c;将所有索引为奇数的节点和索引为偶数的节点分别组合在一起&#xff0c;然后返回重新排序的列表。 第一个节点的索引被认为是 奇数 &#xff0c; 第二个节点的索引为 偶数 &#xff0c;以此类推。 请注意&#xff0c;偶数组和奇数组内部的…

JAVA入门之方法

所谓方法&#xff0c;就是用来解决一类问题的代码的有序组合&#xff0c;是一个功能模块。 一般情况下&#xff0c;定义一个方法的语法是&#xff1a; 其中&#xff1a; 1、 访问修饰符&#xff1a;方法允许被访问的权限范围&#xff0c; 可以是 public、protected、private 甚…

使用Netbeans开发App Engine Java

如果您刚开始进行App引擎开发&#xff0c;那么您可能会感觉Eclipse是首选的IDE。 而且&#xff0c;Google还单独提供了它的Eclipse IDE 官方插件 。 但是不使用Eclipse的人呢&#xff1f; 当然&#xff0c;您始终可以进行命令行开发&#xff0c;但是现在这些人是谁&#xff01;…

JAVA基本类库介绍

我们曾经讲过&#xff0c;Java已经为编程者编制了许多类&#xff0c;这些类已经经过测试&#xff0c;基本上不存在错误&#xff0c;这些类都是我们编程的基础。如果不利用这些已存在的类&#xff0c;我们的 编程工作将变得异常复杂&#xff0c;所以我们应尽可能多的掌握Java基本…

力扣回文链表

给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 class Solution {public boolean isPalindrome(ListNode head) {List<Integer> res new ArrayList<Integer>()…

JAVA运算符和优先级

1、算术运算符&#xff1a; 和 -- 既可以出现在操作数的左边&#xff0c;也可以出现在右边&#xff0c;但结果是不同&#xff0c;如&#xff1a; ①int a5&#xff1b;int ba&#xff1b; #先把a赋给b&#xff0c;a再自增 ②int a5&#xff1b;int ba&#xff1b;   #a先…

将JSON功能添加到您的GWT应用程序中

JSON简介 在Web应用程序上工作时&#xff0c;总是会出现客户端-服务器数据交换的问题。 在此问题上有多种方法&#xff0c;其中许多使用XML进行交换。 执行此任务的一种不太知名的格式是JSON。 JSON&#xff08;JavaScript对象表示法&#xff09;是一种轻量级的数据交换格式。…

win10资源管理器怎么打开_让你效率倍增的电脑神器,最强资源管理器增强工具「QTTabBar」...

前言Windows 自带的资源管理器的功能比较简单&#xff0c;够用是够用了&#xff0c;但有时也确实无法满足我们对更便捷高效的操作方式的追求。「QTTabBar」正是一个非常强大的 Windows 资源管理器增强工具&#xff01;不仅支持多标签页管理&#xff0c;还有许多便捷的扩展功能&…

android横向滑动选择的view

做文字编辑&#xff0c;从网上找来的。 HorizontalScrollSelectView&#xff1a; public boolean mAlwaysOverrideTouch true;protected ListAdapter mAdapter;private int mLeftViewIndex -1;private int mRightViewIndex 0;protected int mCurrentX;protected int mNextX;…