本文作者 | 秦海棋
在开源实习中参与了openEuler社区QA SIG的工作,以下分享关于openEuler软件包加固测试的经验。
开源实习官网:https://www.openeuler.org/zh/internship/
关于SIG-QA
作为一个热门的操作系统,openEuler发布了众多的软件,但是这些发布的软件不一定是完备的,可能存在质量、安全等问题,为了降低软件开发成本和使用风险,我们需要对软件包进行加固测试。
openEuler 社区按照不同的 SIG(Special Interest Group) 来组织,以便于更好的管理和改善工作流程。软件包加固测试相关工作则由SIG-QA团队负责,SIG-QA团队的目标是测试构成openEuler发行版的软件,提高openEuler社区的质量和测试能力。团队会在 src-openeuler 组织仓库发布软件包加固的相关任务, 可以在通过intern-QA标签定位到所有软件包加固测试相关任务,然后选择感兴趣的任务进行认领。
下图为任务地址页面
软件包加固测试任务所需技能
做软件包加固测试最重要的是要熟悉linux的操作指令与shell脚本语言。因为软件是在欧拉服务器上运行,需要通过linux指令来部署相关环境并且执行软件包功能。而最后需要编写shell脚本进行测试用例的执行并将代码提交到仓库中。少部分情况可能会需要编写运行别的语言的代码来验证软件包的功能,这个由所要测试的软件决定。
具体测试步骤
准备系统环境
在任务中查看相关环境要求,选择正确的OS版本。系统环境搭建流程不进行阐述,仓库中有详细的word文档进行指导。
查看OS版本如下:
部署测试环境–mugen测试框架
当部署完系统环境之后,需要部署测试环境。我们需要使用mugen测试框架进行测试。mugen框架需要从openeuler仓库中进行拉取。
学会mugen框架
工欲善其事必先利其器,mugen框架就是我们完成任务的武器,只有熟悉mugen框架才能完成好任务。mugen框架规定了我们编写的用例如何执行,shell脚本格式如何编写,同时还规定了各种公共函数可以直接调用。学会了mugen框架,才知道如何写一个测试用例、如何运行测试用例,这些都可以在mugen仓库的README.md文档中学习。
mugen框架有两个重要的包,一个是suite2cases,一个是testcases的cli-test。在suite2cases里面我们只需要写一个json文件,里面存放测试用例名(脚本文件名)。当json文件里面有多个测试用例时,我们便可以用指令控制一次执行一个用例还是多条用例。cli-test存放用于执行的脚本文件。详细知识可以通过阅读mugen仓库提供的文档以及B站的视频进行学习。
mugen重要文件夹如下图:
对具体软件进行测试
准备好环境之后,我们需要对具体的软件进行测试。首先我们需要熟悉软件的功能(以下图片以crontabs软件包为例),它的各种指令。我们测试的目标就是覆盖该软件包命令行基本功能即所有指令。所谓磨刀不误砍柴工,只有充分了解软件的作用之后再测试,才能达到事半功倍的效果,我们可以寻找关于该指令的文档进行阅读,若该软件的资料比较少,我们还可以阅读其源码。
crontabs需要测试的指令如下图:
对于软件包的测试,要测试的点包括但不限于软件能否正常下载、正常开启或关闭、软件的各个指令能正常执行并达到预期的效果,软件能够正常卸载。测试完之后,要保证“无痕”,即保证软件所有相关的文件都被清楚掉,做到完美复原,这样就算一个软件包测试完成了。其中任何一个环节经过测试后,若确定有问题,需要向相应的软件包仓库提issue,供开发工程师进行解决。
功能测试方法实例如下:
提交测试成果
在所有指令测试完毕,代码编写完毕后,可以提交代码。需要注意的是mugen仓库配置后,会产生冗余文件,这些是不需要上传的,必须清除掉再提交,具体哪些文件可以对比mugen仓库的文件。提交pr时,要绑定自己的任务单号,并且要附上测试用例成功运行的截图。
pr说明如图:
在测试过程中,有任何不明白的地方都可以向负责该任务的导师进行提问,导师都会很负责的告诉你如何解决,但应该经过自己的慎重思考后再提问。提交pr后老师会针对存在的问题进行留言,要及时回复并且作出修改。
收获与建议
参加openEuler社区的开源实习活动对于我个人的成长有着重要的意义。通过完成软件包加固测试任务,我对于linux指令的运用更加得心应手,对于shell脚本的编写也更加熟练。对软件包测试的过程,其实也是对软件进行学习的过程,在今后的学习或工作中,遇到某一场景可能就可能恰巧可以用到我们测试过的软件去解决问题。就比如crontabs软件就可以用来完成定时任务相关的场景,而在接触到该任务之前我是完全不清楚的。
希望有兴趣的同学可以积极参与到SIG-QA的任务中来,不要因为对某一领域的知识不牢靠而感到胆怯,这恰恰是提升自我的最好时机,大胆地去尝试,静下心来根据所遇到的问题去学习,去探索,最终一定可以找到解决方案!