金融科技的快速发展导致软件数量、数据、软件复杂度呈现指数级提高,用户对软件质量也提出了更高的要求。软件测试作为软件质量保证的重要手段,在整个软件研发过程占有举足轻重的地位。不充分的测试会使软件带着一些未揭露的隐藏故障投入运行,为软件带来风险;而过度的测试又会浪费宝贵的测试资源,使软件研发交付周期的时间延长。本次分享希望从基本可信机理出发,通过工程源码、调用链路、全链路分析、实时代码覆盖率等各种技术手段对软件系统进行度量、评估、判定,收集研发过程中的证据,以一定模型和方式呈现给用户。以数据化的方式将软件质量风险呈现给用户,这对于保障金融软件质量,提高软件质量可信度,具有重要的理论和实际意义。
1. 可信评估的模型建立
2. git/svn提交日志分析,通过执行一些git log、git show、git blame来获取变更记录,以及递交人和需求单/修改单的关系。
3. 通过对源码的插桩,实现java/CPP语言的实时覆盖率和全链路的穿透。算法是条件-判断覆盖。举例详细说明条件算法的实现
4. 通过对字节码以及源码的分析得出函数级别的调用链路,并存入neo4j中。
5. 通过携带全链路标识得到用例的实际动态的调用链路和覆盖率信息,从而对调用链路进行动态补全。
6. 通过分析代码的sql、枚举体、常量等信息得到系统参数和数据库表得变动信息,表和系统参数也纳入评估的范围
7. 通过研发上游的接口管控平台获取函数(接口)-功能-菜单的关系
通过上述的分析可以得出本次测试包(或版本)变化了哪些代码、函数、数据库表,系统参数,从而可以在测试得过程中推荐给用户优先执行此部分的测试用例。以及收集测试过程中实际的代码覆盖率、表覆盖、参数覆盖等信息。最终根据测试模型得出一个风险值。
本系统可解决
1.评估和测试相结合,提供对可能的变更以及集成后的变更多维度的影响面分析,可到修复单和需求单维度分析。
2.测试工程师 可通过平台评估本次集成包从代码、表、系统参数等因子的变动全面分析对接口、功能、菜单、业务维度的影响。
3. 对发布包提供多个维度的质量评价,精准测试和覆盖率技术整合,可判断已覆盖的变更和未覆盖的变更功能。
4.版本发布后可提供该影响面报告,让客户对本次升级可能带来的影响以及我们验证后的改动有个清晰的了解。
如何实现对代码的插桩,从而实现实时覆盖率、如何实现对调用链路的分析、实现全链路的穿透,实现精准测试。