插件测试
当你的插件完成了开发和打包,请务必使用FastAdmin完整包进行全新离线插件测试。
测试准备
首先需要开启调试模式,打开application/config.php,将app_debug的值置为true。
同时需要开启允许安装未知来源插件压缩包这个配置,打开application/config.php,将unknownsources的值置为true。
如果上述设置后仍然不能进行离线安装测试,分两种情况:
1、插件已上架,请检查你插件管理中登录的账号是否匹配当前插件
2、插件未上架,请检查插件标识是否被占用,如果被占用也是无法离线安装
应用标识占用检测:https://www.fastadmin.net/developer/idcheck.html
如果离线安装时提示无法解压zip文件,请检查你的压缩包文件是否损坏、插件目录是否嵌套(压缩包应该是直接压缩插件文件,不允许嵌套文件夹)、站点目录是否有权限(application、public、addons、runtime目录必须有写权限)。
插件包在线测试
FastAdmin插件包在线测试地址 https://www.fastadmin.net/developer/addoncheck.html
如果提示无权限,请联系官方QQ群管理员处理。
完整包测试
FastAdmin完整包下载地址 https://www.fastadmin.net/download/full.html
注意使用完整包,测试时请使用全新的数据库进行测试,而不是使用已有的数据库进行测试。
同时务必在PHP7.4和Mysql 5.7下进行相关功能测试,MySQL需开启严格模式。
云存储插件适配测试
检查是否适配插件市场云存储插件
检查在启用云存储插件后图片是否正常
检查在APP或小程序端图片加载是否正常(如有)
检查在APP或小程序端图片是否上传功能正常(如有)
深色模式测试
插件强烈建议适配深色模式,请参考深色适配文档:https://doc.fastadmin.net/darktheme/2850.html
测试检查点
插件安装、禁用、卸载、卸载并删除数据表、菜单是否正常
检查插件在伪静态环境下是否能正确浏览
检查插件是否有依赖插件市场其它付费插件,必须有相应免费的可选择插件或自带功能
检查搜索页标题,搜索页不允许显示搜索关键字,关键字不允许在标题和正文中显示,只支持显示在文本框中
检查插件功能涉及用户生成内容,是否做后台审核或第三方内容审核机制,例如:评论、留言、发布文章
检查插件菜单配置中是否配置全部的控制器方法,无需鉴权的方法是否配置$noNeedRight属性
检查插件代码中缓存的设置和获取是否添加插件标识标签
检查插件代码中自定义函数是否添加插件标识前缀或命名空间
检查插件所有代码是否以utf8编码,不能存在以utf8-bom编码的文件
检查插件中文件名大小写是否正确
是否检查插件包中图片、代码、图片上的文字、字体版权,不允许存在侵权的资源或代码
是否有移除无关的代码、文件、图片等资源
是否存在引用远程资源,不允许引用远程资源,请务必本地化
检查插件代码中的默认密钥、默认Appid、默认Key、默认Secret、地图密钥等配置是否去除,重点关注manifest.json和config.php
检查逻辑代码中是否有写硬编码(固定参数)的配置,请务必后台可配置化
检查逻辑代码中API接口地址的占位域名,只允许使用www.example.com占位
检查逻辑代码不允许使用固定的数据表前缀,例如fa_user
检查逻辑代码不允许使用$("选择器").size()判断大小,请使用$("选择器").length进行判断
检查逻辑代码中获取参数rawData和encrytedData是否有做特殊处理(不进行转义)
检查逻辑代码中Db::query和Db::execute拼接的SQL是否有安全隐患
检查逻辑代码不允许使用extract从数组中将变量导入到当前的符号表,请使用$this->request->post按需获取
检查逻辑代码try catch捕获异常时在try中不允许出现$this->success()和$this->error()
检查逻辑代码中模型对象是否有使用$model->type来获取或设置相关值,type为私有属性,更多私有属性请查看ThinkPHP模型基类Model.php
检查逻辑代码$this->success()和$this->error()前不允许添加return
检查逻辑代码中用户注册、修改用户名时用户名是否添加是否为手机号检测,要求用户名不能为手机号
检查逻辑代码中的编辑和删除是否做资源归属判断,如:用户只能编辑查看他自己添加的数据,商户只能编辑查看自己商户下用户的数据
松紧逻辑代码中禁止使用任何默认密码,如需设定密码,请使用随机字符串密码
检查逻辑代码中的变量在视图输出时是否有正确添加htmlentities进行编码
检查逻辑代码中前端JS表格列表在使用自定义formatter时是否对服务端的内容进行转义处理
检查逻辑代码中的控制器增删改请求是否有做$this->request->isPost()判断检测
检查逻辑代码中是否有实例化控制器的用法,不允许手动实例化控制器进行调用控制器的方法
检查逻辑代码中的控制器内部调用的方法是否有正确添加protected或private进行限制
检查逻辑代码中涉及金额计算是否有正确使用bcmath的相关方法进行精度 处理
检查逻辑代码中调用的方法命名是否规范,不允许abc_def和abcDef混用
检查逻辑代码中支付相关测试代码或金额是否移除或修改
检查逻辑代码中支付回调逻辑是否正常验证和测试
检查逻辑代码中补全图片等资源前缀时必须使用cdnurl("图片URL", true);进行补全
检查逻辑代码中调用的方法是否严格区分大小写(包括但不限于文件名、类名、命名空间)
检查逻辑代码不允许使用eval函数
检查Uniapp中的manifest.json文件中的App权限配置中是否移除与应用无关的权限
检查Uniapp编译时是否适配dart-sassCSS预编译器,文档
检查逻辑代码和配置中不允许有任何跳过小程序或APP审核的开关
检查逻辑代码是否遵循API接口最小数据原则 ,只返回客户端当前请求所需要的数据,而不是返回多余或冗余的信息
移除无关的冗余代码、脚本、注释等
移除未上线或未实现功能的代码、脚本、注释等
移除需授权的代码、文字、图片、图片上的文字、字体等资源
移除插件目录的.addonrc文件
移除插件目录下标识.php中的testhook方法
移除插件目录下config.php中的冗余配置信息
移除Uniapp项目目录下的unpackage目录
移除插件目录代码中的默认配置(密钥、网址等)
数据库检查
install.sql和testdata.sql中不能包含DROP TABLE语句install.sql和testdata.sql中不能包含DELETE FROM语句install.sql和testdata.sql中CREATE TABLE不能包含ROW_FORMAT=DYNAMIC参数install.sql和testdata.sql中CREATE TABLE必须加上IF NOT EXISTS判断install.sql和testdata.sql中CREATE TABLE前不能存在空格字符install.sql和testdata.sql中的数据库前缀必须用__PREFIX__,不能使用固定前缀fa_install.sql和testdata.sql中的时间字段如保存时间戳,字段类型必须使用bigint(16),不能使用int(10),且默认值不能为0,默认值应当为NULLinstall.sql和testdata.sql中的数据表字段字符集请使用utf8mb4_general_ci
升级测试
首先安装旧版本,然后卸载插件(不删除数据库数据),再本地安装新版本测试数据库是否正常升级、菜单是否正确升级
务必更新info.ini中的版本号
务必删除插件目录下的.addonrc文件