微信号:DianrongMafia

介绍:点融黑帮——一个充满激情和梦想的技术团队,吸引了来自金融及信息科技领域的顶尖人才.我们正在用技术创新改变传统金融.

浅谈金融类APP测试

2017-09-23 19:00 刘雅莉

怎么来做好一个金融类APP的测试工作

我认为应该先和金融类APP的产品设计结合起来

有明确的测试目标和结果导向

然后再配套相应有效的测试方法


金融类产品从业务性、功能性和稳定性、合规性、易用性、安全性几个方面,有如下特点:


业务性


一个产品对于用户而言,最大的价值就是业务。业务即是产品的灵魂,金融类产品更是如此。譬如贷款APP,能够为借款人提供快速融资的渠道,实现较低成本且快速的放贷,解决借款人的燃眉之急,这就是价值;又譬如投资理财APP,提供较高收益且相对安全的产品、选择多元化且没有什么门槛和学习成本,对投资人来说这就是价值。


产品的业务价值可以分为三个层次(以下以理财APP来举例):


第一层次“可以有”。


对目标用户而言,理财APP仅为其投资策略中的选择之一,有众多其它投资领域及同类竞品。譬如用户可以选择银行理财、炒股、其它理财APP。“可以有”代表理财功能及所为用户提供的投资产品只是一个可见的选择,用户通常会尝试获取更多的产品信息,但大多数情况并不会成交。在这种情况下(可有可无),应用的粘度很低。


第二层次“我需要”。


理财APP形成了一定的门槛,这种门槛和竞品拉开明显的差异,使用户可以很快被吸引和转化,同时转化后又对用户产生长期的应用价值,持续保持应用黏性。因此,除了在本身的金融产品设计上提供较好的策略,精准面向核心用户外,在APP的功能设计上,要有清晰的产品表达,快速解决用户对安全性、收益的疑问。在易用性方面要使用户无障碍和学习成本,减少转化损耗。在长期使用的过程中,对用户所关注的数据和再次选择提供帮助,使用户对该产品形成依赖,只要有投资需求,便对该产品产生倾向性。


第三层次“离不开”。


除了解决前端的问题,还应加快金融产品后端的闭环,确保产品长期保持活力、不断推陈出新。利用大数据等技术,精准推送用户可能感兴趣的数据和新产品,同时持续维持高水准的产品稳定性、安全性、易用性。这种持续价值会提升产品自身的壁垒,最终使用户只认这款产品。成为粉丝用户,即使有竞品也不考虑且会口口相传。


由此可见,层次一不是APP的设计目标,层次二和层次三才是必然方向。因此,该产品设计不仅取决于实现功能,还需要同时满足“产品精准推送”“用户关注数据获取直接”“适宜的理财方案”“用户可感知的金融安全性”“用户可感知的应用稳定性”“零学习成本”等潜在需求。这些需求在后续测试中,需重点关注和解决,以促使APP本身不断提升。


功能性及稳定性


金融类产品,功能的正确性稳定性、数据的合规性严肃性相对其它行业高得多,产品如果出现质量问题,会直接影响企业品牌及信誉。譬如你在理财APP上投资,突然有一天发现金额变少了,这时你的内心会有两种想法:遇到骗子了,被骗了;这个APP不稳当,钱放在上面太不稳妥,不信任。比如我之前使用过某银行的APP,它的信用卡还款信息,在不同入口的界面上都不一致,给用户造成很大的困扰。虽然银行最终没有算错钱,但这种应用给人的不信任感,会直接导致用户大量流失。


法律合规性


金融类产品在法律合规方面相对其它非金融类产品会更加敏感,国家也在不断的完善金融类产品的监管制度,在这种情况下,需要将产品及时的与最新法律法规进行同步,因此法规相关的东西需要高度重视。譬如修改一段文案,看似不影响流程功能,但是一旦触犯了国家法律法规,后果将不堪设想。


UI及易用性


针对C端APP类产品UI和易用性也非常重要。这是一个看颜值得时代,当市场同类产品已经琳琅满目时,UI如同一个人的外貌形象,若因UI大幅落后于同类产品而导致潜客的流失是非常不划算的。同时金融类产品注重“安全”,比如对投资端APP来讲,目标用户是有稳定收入和一定财力的人群,所以配色和线条的使用,宜让人潜意识感觉“稳健、安全”,减少视觉刺激、减少浮夸的成份。

除了适宜的UI设计外,还应重点考虑功能的直观性。减少突出数据的层级,避免“隐性入口”“多入口”。


安全性


此处的安全是指技术上的安全性,比如信息数据明文发送、通信数据可解密、敏感数据本地可破解、服务器安全(服务器应当能够抵御常见的安全威胁)等。既然涉及的是资金相关业务,安全性要求比普通产品的要求要高很多。同时安全性应让用户有感知,才能达到相应的效果。


综上,针对金融类APP,我认为相应的QA策略应围绕以下几大点进行开展。


1确立每个项目(或迭代)的目标和范围


QA人员需要充分理解项目的目标与范围,这将直接关系到后续工作开展的策略及质量标准。

譬如对于一个试错类的新产品和一个具有一定规模和频次且为公司产品线中核心发展的产品,在项目目标上可能存在差异,那么在投入的时间、人力、质量标准、流程规范等应该有所不同。


要明确项目的目标和范围有以下几点:


1. 基于产品业务背景下的理解。该产品在所属行业背景下的哪条业务领域中,该业务领域的市场现状及通用解决方案是什么,产品设计中的每个功能流程分别代表着哪种业务场景。

2. 需求范围边界的澄清。哪些做?哪些不做?相关依赖系统有哪些?

3. 理清项目相关干系人。


2计划


QA在计划中应起着以下几点作用:


1. QA需对计划的执行进行监控,识别计划偏差,由相关干系人共同制定纠偏措施,确保计划可控。

2.QA需将历史的计划执行数据进行分析,输出执行趋势,并提供给计划制定者进行参考。 


3实施过程


PM(或其他角色)建立针对此项目的沟通管理机制,并由QA跟进是否严格按照标准规则执行。如需求评审的准入、开发设计的准入、编码的准入、变更的准入、测试的准入、发版的准入等等。


4项目变更、问题及风险管理


既然项目有了明确的目标、执行准则以及相应的监控,那么接下来肯定就是问题和风险管理。QA在其中起着更大的作用是根据日常执行过程中取得的监控指标,发现项目中的问题和风险,并由PM根据项目情况来决定问题的处理策略,最终由QA人员对问题进行跟踪并协调相关人员进行处理,直至解决完成。


5 测试、验证


总结出来,我认为金融类APP测试点分为以下几方面:


1. 业务测试


1.1行业的动态理解,金融相关的新闻、政策要持续关注

1.2竞品的分析,研究竞品的逻辑交互、业务流程,和我们的产品是否有差异,差异在哪,为什么会有这种差异,哪种更合理更好

(以上两点的看似对测试没有立竿见影的作用,但在实际工作中会起着潜在的指导作用,对一些问题的处理判断会给予一定启发)

1.3对测试人员而言,需求的最终输入是PM,我们在做需求理解时,除了理解prd,交互稿等等需求设计文档以外,更重要的一点是理解需求对应的业务背景。在缺陷类型中有一类错误叫做需求错误,就是指产品存在逻辑上的漏洞、业务上的漏洞,测试人员要发现这种错误,前提就是需要对需求的业务背景进行了解,为什么这个需求会存在?解决了什么问题?

比如一个新需求要求对A页面的某金额进行修改,如果你不理解产品的业务,会认为页面A修改完即可。但是如果你带着业务去思考,会发现页面B也存在同类业务或者依赖业务,从而可以提出业务相关的问题,避免问题产生


2. 功能测试


交互逻辑检查


a.业务流转是否正确,接口调用逻辑是否正确。

b. 数据管理权限,如系统管理员是否可以修改用户提交内容

c. 用户权限有严格限制

d. 用户提交资料后,涉及审批制。审批流程机制是否健全,如节点回滚等。


页面之间的数据读取


a. 页面取数据库的值

b. 值的展示处理逻辑,如小数转换、单位换算、null值、金额溢出规避等

b. 值的计算,应考虑多位小数、边界值(1、0、-1等)的情况。

c. 密码、手机、身份证号、电话、邮箱格式限制。

d.百分占比计算,如1/3情况,占比之和是否为100%

e. 数据缓存机制

g.数据job执行逻辑


一般性检查


a. 新增、修改、删除是否有提示,提示风格是否与产品提示风格一致

b.菜单层级

c. 导航指示清楚

d. 加载动画是否合理,当响应时间较快时是否取消动画加载


3. 安全性测试


敏感数据本地可破解


检查是否在本地保存用户密码,无论加密与否

检查敏感的隐私信息,如聊天记录、关系链、银行账号等是否进行加密

检查是否将系统文件、配置文件明文保存在外部设备上

部分需要存储到外部设备的信息,需要每次使用前都判断信息是否被篡改


文件权限


检查App所在的目录,其权限必须为不允许其他组成员读写


网络传输


检查敏感信息在网络传输中是否做了加密处理,重要数据要采用TLS或者SSL。http请求默认是明文的,如果安全验证和加密机制存在漏洞,通过网络嗅探扫描,很容易被猜到和模拟请求,也可能被注入。


Android组件权限保护


禁止App内部组件被任意第三方程序调用。若需要供外部调用的组件,应检查对调用者是否做了签名限制


升级


1.检查是否对升级包的完整性、合法性进行了校验,避免升级包被劫持。

2.升级后的数据检查,避免出现升级后密码失效等。


应用自身安全性


对某个应用进行逆向,看反编译后的代码有没有敏感信息暴露。反编译后对代码修改,插入劫持代码后重新打包,如果存在这种漏洞,对用户和开发者都构成极大的威胁。


请求传输


如H5页面数据分享,是否将用户session也分享出去了。


4. 其它通用类测试点:

如性能测试、易用性测试、兼容性测试、安全性测试、稳定性测试。针对APP,还需对APP的独有特点进行专项测试,如:流量测试、电量测试、弱网络测试、环境干扰测试等。


6发版及项目回顾


建立严谨合理的上线发版流程,确保产品顺利上线;及时收集用户使用反馈,供产品改进;同时,QA需将各个阶段的执行数据进行有效分析,发现问题,提出改进措施,并跟进改进结果。


本文仅代表个人粗浅想法。抛砖引玉,欢迎大家集思广益、一起深入探讨。



点击回顾往期精彩内容

用Django编写后端任务流程

Webpack优化 | 快一点,再快一点

活动回顾 | CTDC2017首席技术官领袖峰会成功举办

今天我们来聊一聊运动这件事。

CSP与并发编程

使用 Mesos 管理 Docker 实践

来共享密钥吧

浅谈交易手续费设计#1

多Header or Footer的RecyclerViewAdapter

浅谈 golang channel

你有掉进过“心理账户”的坑么?

基于HTML5实现跨文档通信

大咖分享|互联网金融投资产品的体验设计

走近黑帮|了不起的点融,了不起的黑帮



想了解更多请关注我们



 
点融黑帮 更多文章 ​今天我们来谈谈信息收集这件小事 用Django编写后端任务流程 Webpack优化 | 快一点,再快一点 活动回顾 | CTDC2017首席技术官领袖峰会成功举办 今天我们来聊一聊运动这件事。
猜您喜欢 2017 上半年最酷,最受欢迎的30 个 Android 库 今天面试了一个做营销的人 如何正确书写回退样式 【技术博客】中文输入法中的事件处理