项目 | 内容 |
---|---|
这个作业属于哪个课程 | 课程链接 |
这个作业的要求在哪里 | 作业链接 |
我在这个课程的目标是 | 熟悉团队开发流程,了解软件工程 |
这个作业在哪个具体方面帮助我实现目标 | Beta阶段流程 |
测试中发现的bug
BUG | 状态 |
---|---|
资源引用时不支持相对路径格式补全 (如 ./) | 已解决 PR_440 |
进行粘贴操作时,粘贴内容会被粘贴两次 | 已解决 PR_442 |
在 Linux 下无法直接对图片进行粘贴操作 | 暂无解决方案 |
内置 Preference 预设文件没有被打包进发行包 | 已解决 PR_452 |
在当前版本 Preference 预设与更新后的新 Preference 出现冲突时,软件崩溃 | 已解决 PR_420 |
从榕图模式下回到所见即所得/源码模式,会造成图片丢失 | 已解决 PR_467 |
在 Mac 下重新打开窗口会报错 | 已解决 PR_475 |
自动更新失效 | 已解决 PR_485 |
同时启动多个 Ficus 实例,启动较慢 | 暂无解决方案 |
对于较大、或者语法复杂的文件,解析较慢,有概率卡死。 | 暂无解决方案 |
场景测试
为了尽可能测试编辑器功能,我们准备了示例工程文件夹。
示例工程是一个真实的笔记工程,有较多零散的 Markdown 笔记文件,可以很好的用来测试 Ficus 的核心功能,示例工程中还附带了一份使用较多复杂语法,及vditor 扩展语法的 Markdown 使用教程(来自 markdown)。
在场景测试中,我们模拟真实应用场景,先进行简单的文字编辑。
-
添加标题
-
更改标题层级
-
列表
-
测试加粗、斜体功能
-
代码块,行内代码块
-
新增数学公式
-
引用
-
表格
-
引用、图片插入、图片粘贴
之后,使用现有的笔记工程测试榕相关功能。
- 使用榕树视角查看文件结构,检查渲染效果
- 进入榕图模式,检查渲染结果,测试转变为 TAG 功能
-
进入榕林模式,测试榕根/榕柱选择、导出
-
检查 TAG 添加,删除
压力测试
为了测试软件在较大压力负载下的表现,我们手动构造了压力测试点,该测试点将之前的模板测试测试文件夹复制了十五份以扩大规模。使用 Ficus 打开该测试文件夹,并进入榕图模式。使用 Profiler 记录渲染时间,任务管理器检查内存占用。
可以看到,15个demo文件夹下,共约750个md文档,多于1000个节点的大负载下,榕图模式中的 Ficus 内存占用低于 300M,每一帧的渲染时间约为 150ms,可以有 7fps 的帧数。此时的 GUI 操作已有卡顿,但属于可接受范围。对于正常的使用情况,不会出现如此之多的文件,一般只会约有100个md文档,榕图模式是完全可用的。
对于 Markdown 编辑的所见即所得、源码模式、榕树模式,我们也进行了类似测试。
我们将 markdown教程.md 文件进行了多次复制,产生了一个大小为 91KB 的测试文件用于测试,使用 profiler 计算其在不同模式下的打开渲染时间。
在打开这个文件后,内存占用来到了 1GB 上下。
渲染时间方面,在所见即所得模式下,花费了约1.2s完成渲染,主要渲染时间均在 vditor中发生,具体是负责 Markdown 解析的 lute 引擎中。这方面的性能比较糟糕,由于一次渲染的时间需要超过1s,结果是对于该压力测试用的文件,查看没有问题,但进行编辑是比较困难的。
我们也对榕树模式的渲染性能进行了测量,对于该文档,Ficus 花费了 270ms 完成渲染,性能不构成问题。
需要说明的是,进行压力测试的该 markdown教程 文件,使用了较多的 markdown 复杂语法,引用了多个 vditor 中的拓展插件。实际使用场景中,类似该文件的复杂 markdown 文档并不常见,不能代表日常使用场景表现。 markdown 渲染的性能, ficus 一直在尝试改进,但对大型markdown文本的渲染本身就是一个比较困难的问题,受到我们使用的 Vditor 插件限制,短期内我们很难解决。
矩阵测试
我们是一款桌面端软件,矩阵测试主要针对主流的PC平台进行测试。
由于我们手头的物理机全部使用 Windows 11 系统,没有更早一些的 Windows 7/8/8.1/10 系统环境,因此我们安装了虚拟机完成 Windows 7/10 的测试。没有对 Windows 8/8.1 进行测试主要是由于其用户量较少,且兼容 Windows 7/10 的程序一般也可以在 Windows 8/8.1 上运行。
虚拟机我们使用免费的 VMWare Workstation Player 17.0 ,对于我们的测试已经足够使用。
对于两台虚拟设备,我们分别分配了 8GB 内存,并指定了4颗虚拟 CPU 核心,这是在今天非常主流普通的配置,可以覆盖绝大部分用户的情况。
为了保证测试一致性,我们使用从 itellyou_msdn 获取了原版的 Windows 10 LTSC 2021 镜像、Windows 7 Ultimate with Service Pack 1 (7601.24214) 镜像,进行全新安装,之后拷贝最新 Ficus 安装包以及场景测试文件进行了场景测试,并完成了矩阵测试中的测试项目。
测试机中的测试结果如下:
系统 | 安装 | 注册Ficus为 md 打开方式 | 热更新 | 基本界面显示 | 首选项设置保存 | 所见即所得编辑 | 源码模式编辑 | 图片粘贴 | 路径补全 | 数学公式补全 | 榕树展示 | 榕树展开折叠 | 榕林展示 | 榕林操作 | 榕图展示 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
VM-Windows 10 LTSC 2021 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | O1 | √ | √ |
VM-Windows 7 7601.24214 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | O1 | √ | √ |
Windows 11 22621.1778 | √ | O2 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
Manjaro 21 (Linux 5.15) | √ | × | √ | √ | √ | √ | √ | × | √ | √ | √ | √ | √ | √ | √ |
WSL-Ubuntu 22.04 (Linux 5.15) | √ | × | √ | √ | √ | √ | √ | × | √ | √ | √ | √ | √ | √ | √ |
Macintosh OS X 10.14.6; Apple Silicon; arm64 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
O1: 虚拟机下的榕林渲染较慢,可能是由于虚拟机的虚拟显示设备性能不足造成的。
O2: 在 Windows 11 下可以正常注册 Ficus 为 Markdown 文件的打开程序,但由于 Windows 11 的系统限制,无法配置 Ficus 为默认 Markdown 打开方式,需要用户自行选择。
出口条件
-
安全性验证
Ficus 需要保证不损坏用户数据、造成用户数据泄露,这是最首要的需求和保证。Ficus 在设计上将对用户文件系统的写权限,集中到中间层。对中间层部分的实现,进行了多次检查,避免出现破坏用户数据的情况发生,在测试场景中也不允许出现类似情况。
-
基础功能正确
作为一个 Markdown 编辑器,基本的要求是可以独立使用 Ficus 而不借助其它软件,完成实用 Markdown 文件的编辑。考虑到实用性的要求,编辑器必须支持常用的 GFM 语法。为了降低用户迁移、学习成本,类似 Typora 中存在的 Markdown 编辑相关的快捷键需要得到支持。考虑到时间原因,在快捷键方面的支持,可以先流出通用的快捷键接口,便于后续实现。一些重要的首选项,如自动保存选项、图片复制选项,也需要得到支持,保证用户最基本的使用体验。
-
Ficus 扩展功能
软件需要正确的实现榕树、 榕林、榕图功能,保证能完整的展示软件独创性。这部分功能要求能完全满足 Beta 阶段计划书中,典型用户在典型场景下的使用。且 Ficus 扩展功能也需要满足安全性要求,在细节上允许粗糙,但不允许存在致命的问题。
-
兼容性要求
软件至少应支持在主流操作系统上运行,目前主流的操作系统是 Windows, Windows 10/11 是目前仍在维护的生命周期内系统,需要保证支持。Windows 8/8.1 已经停止维护且用户较少, Windows 7 也已经停止维护,但有比较大的用户基量,也需要考虑支持。对于 Windows on arm,由于缺少相关测试设备,无法进行相关测试,不提供相关支持。Linux 平台,系统类型,复杂性比较高,借助 AppImage,可以尽量保证软件支持在不同 Linux 发行版上运行,但仍然需要验证软件可以在主流 Linux 系统上的效果(Debian、Arch)。Mac 平台,需要对目前较新的系统,包括 x64 及 aarch64 提供支持。对于历史版本支持性,不做要求。