1.1. 后台软件测试难点
本文中提到的后台软件指iSolarTool项目后台算法软件,测试过程中遇到多个难点:
1、客户端未开发完,要测试服务端软件,如何测试?任务如何触发?
2、服务端软件测试的输入数据如何制造?
3、服务端算法计算复杂,尤其设备自动布局输入输出大量都是坐标信息,如何验证计算结果的正确性?
4、测试过程中遇到问题如何分析定位?
带着上面这些问题,我搬到了研发中心四楼,跟项目组近距离“接触”,逐一解决了这些难题。
2.1. 客户端未开发完,要测试服务端软件,任务如何触发
通过跟研发人员进行沟通,发现可以使用接口触发任务,于是借助于postman,按照接口定义配置后,轻松解决了任务触发的问题,如下图所示:
图1任务触发操作步骤
2.2. 服务端软件测试的输入数据如何制造?
根据后台任务设计方案,测试输入输出数据均存储在Redis数据库,借助于Redis可视化工具,可以很清晰的查看到任务数据详情,对于单方阵小数据量操作方便,但是对于多方阵大数据,直接操作读写,查找数据困难,改造数据更困难,复制出来也是个好办法,但当数据量较大时,该可视化工具存在复制不全的问题。咨询了研发人员没有现成的解决方案,于是我借助python强大的第三方库,自己动手写了个Redis数据读写的小工具,可以按自己定义的格式,读写输入和输出测试数据,这个问题也就迎刃而解。
接下来就轻松了,借助研发自测的输入数据,查看任务参数设计文档,使用功能测试方法(等价类、边界值、正交表等),对每个输入参数进行用例设计,然后写入redis数据库、触发任务、读取redis数据库输出结果,再验证结果的正确性即可。
图2小工具界面截图
图3输入输出数据使用notepad等工具查看即可
2.3. 服务端算法计算复杂,大量的坐标信息,计算结果的正确性,如何验证?
上一步解决了制作输入数据和读取结果的问题,那么接下来就要开始研究,如何分析计算结果的准确性。这里使用了研发人员提供的绘图工具,将输出结果中的设备坐标绘制成设备布局图(黑色表示箱变、大红色表示汇流箱、其他彩色表示组串,颜色相同表示同一个汇流区),同时研发人员还协助提供了算法计算的中间过程数据。
图4设备布局图
结合设备布局图和算法计算过程数据,参照以下步骤进行结果验证:
步骤1、先验证简单规则方阵的汇流区划分,检查汇流区划分结果是否存在独立组串,是否满接汇流箱;
步骤2、根据输入参数设备坐标、线缆成本、线缆阻抗,计算出线缆的压降和成本,跟输出结果进行对比,验证软件计算的线缆选型、线缆压降、线缆成本等数据是否正确;
步骤3、抽查几种箱变位置下,输出成本,检查输出最优方案是否成本最低;
图5设备坐标及成本等过程数据
2.4. 测试过程中遇到问题如何分析定位?
在测试不规则方阵设备自动布局过程中,发现有个别汇流区划分错误,存在跨汇流区的现象,但是由于这个坐标绘图工具没有标识出汇流区,很难定位到是第几个汇流区出错,研发人员也就难判断出哪一步出错了。为了找出出错的汇流区,我修改了绘图工具的代码,通过调整绘图图标形状和大小来标识出汇流区划分次序,从而推算出错误汇流区的序号。
图6不规则方阵汇流区划分结果
如上图所示汇流区由最左边和最右边几个组串组成,跨越了其他的汇流区。
图7不规则方阵汇流区划分结果分析
研发人员根据我测算的划分顺序和汇流区序号,定位到出错的位置并最终分析出软件计算错误的原因。
图8不规则方阵汇流区划分原因分析
3.1. 测试方法总结
万变不离其宗,无论前台还是后台,测试方法都是贯通的,掌握了测试用例的设计思想,其他的借助工具即可完成,以下总结了几条对用例设计有帮助的方法:
1、认真阅读产品资料,包括产品规格书、产品需求文档、产品设计文档等,这对软件测试的用例设计至关重要,并且也能帮助我们更早的发现需求问题、设计问题。
比如该项目,在TR3审查项目设计文档时,我发现软件需求文档中写了全任务,但设计脑图文档中却找不到全任务的数据结构,后台研发人员解释为全任务会自动分解成三个子任务,但他们没有考虑到客户端需要一次性提交三个任务的参数,那么必须要有一种新的数据结构来接收和存储这些参数。经过多次沟通,最终研发人员理解并添加了全任务数据类型,让这一问题提前在TR3就得到了解决,避免了延期到后期修复成本的增加。
2、熟练掌握软件功能测试方法,这是测试人员的基本功,也是真正检测产品质量的利器。
3、熟悉常用的测试工具,这就有助于提高我们的测试效率,改进我们的测试方式。
4、多跟研发人员沟通,进一步摸清软件的详细逻辑,不断改进和完善我们的测试用例。
3.2. 软件开发模式思考
在测试后台软件算法中,遇到最大的困难就是,算法复杂,其结果纯手工很难验证对错,必须借助测试工具,但测试工具的研发也占用人力资源。借鉴敏捷模式结对编程的思想,如果在项目前期,研发人员编写软件代码、测试人员同步编写测试代码,我想软件缺陷的发现阶段可能会提前很多,产品的质量也会提高很多。