边缘情况测试用例集
📋 测试说明
将以下每个测试用例复制到编辑器中发布为文章,检查显示效果是否符合预期。
1️⃣ 基础混合测试
测试用例 1.1 - Markdown与HTML混合
这是**粗体Markdown**,这是<b>HTML粗体</b>,这是*斜体Markdown*,这是<i>HTML斜体</i>。
下面是Markdown代码块:
` + "```javascript\nconst x = '<script>alert(1)</script>';\n```" + `
下面是行内代码:\`
\`
预期效果:
- Markdown粗体和斜体正常渲染
- HTML的
<b>和<i>显示为纯文本 - 代码块和行内代码中的HTML显示为纯文本
2️⃣ 图片相关测试
测试用例 2.1 - 基础图片
预期效果:显示图片
测试用例 2.2 - 带危险属性的图片
预期效果:显示图片,但 onerror 和 onclick 被移除
测试用例 2.3 - 多个图片混合文本
第一张图片:
这是**中间的文本**,代码是<span>test</span>
第二张图片:
预期效果:
- 两张图片正常显示
- 中间的粗体正常渲染
<span>test</span>显示为纯文本
测试用例 2.4 - 图片在列表中
- 列表项1
- **粗体列表项2**
- 包含代码的列表项3: <div>test</div>
预期效果:
- 列表正常渲染
- 图片显示在列表项中
<div>test</div>显示为纯文本
3️⃣ 视频/iframe测试(需开启 allow_video_embed)
测试用例 3.1 - YouTube视频
预期效果:
- allow_video_embed=1:显示视频
- allow_video_embed=0:显示为纯文本
测试用例 3.2 - 带危险属性的iframe
预期效果:显示视频,但 onload 被移除,sandbox保留
测试用例 3.3 - 非HTTPS的iframe
预期效果:不显示(src被移除,因为不是HTTPS)
测试用例 3.4 - 不在白名单的域名
预期效果:不显示(如果开启了域名白名单限制)
4️⃣ XSS攻击测试
测试用例 4.1 - Script标签
<script>alert('XSS')</script>
<script src="https://evil.com/xss.js"></script>
预期效果:显示为纯文本,不执行
测试用例 4.2 - 事件处理器
<div onclick="alert('XSS')">点击我</div>
<a href="#" onmouseover="alert('XSS')">悬停</a>
预期效果:
- 图片的 onerror 被移除
<div>和<a>显示为纯文本
测试用例 4.3 - javascript: 协议
<a href="javascript:alert('XSS')">点击我</a>
预期效果:
<a>显示为纯文本- 图片的 src 被移除
测试用例 4.4 - data: 协议
alert('XSS')</script>">
预期效果:src 被移除,不执行脚本
5️⃣ 表格与图片混合
测试用例 5.1 - 表格中的图片
| 列1 | 列2 |
|-----|-----|
| **粗体** |
|
| <b>HTML</b> | 普通文本 |
预期效果:
- 表格正常渲染
- 图片显示在单元格中
<b>HTML</b>显示为纯文本
6️⃣ 复杂嵌套测试
测试用例 6.1 - 引用块中的混合内容
> 这是引用块,包含**粗体**
>
>
>
> 代码:<script>alert(1)</script>
预期效果:
- 引用块正常渲染
- 图片正常显示
- script 显示为纯文本
测试用例 6.2 - 多层嵌套
1. 第一层列表
- 第二层 **粗体**
- 图片:
- 危险代码:
2. 第一层继续
预期效果:
- 列表正常嵌套
- 图片显示
- 非HTTPS的iframe不显示
7️⃣ 边界情况
测试用例 7.1 - 连续多个白名单标签


预期效果:三张图片连续显示
测试用例 7.2 - 空属性
预期效果:
- 图片显示失败图标(src为空)
- iframe不显示
测试用例 7.3 - 不完整的标签
预期效果:图片正常显示
测试用例 7.5 - 自闭合和非自闭合混合
预期效果:两种格式都能正常显示
8️⃣ 极端情况
测试用例 8.1 - 超长URL
预期效果:图片正常处理(可能显示失败但不报错)
测试用例 8.2 - 大量混合内容
这是段落1,包含**粗体**和*斜体*。
这是段落2,包含<b>HTML</b>和<i>标签</i>。
| 表格 | 内容 |
|------|------|
| 单元格1 |
|
- 列表项1
- 列表项2
` + "```javascript\nconst code = '<script>alert(1)</script>';\n```" + `
最后一段包含<script>alert('XSS')</script>危险代码。
预期效果:所有元素按预期分别处理
9️⃣ 实际使用场景
测试用例 9.1 - 技术博客文章
# React Hooks 教程
这是一个关于**React Hooks**的教程。
## 基础用法
代码示例中的标签:<useState>、<useEffect>
` + "```jsx\nfunction Example() {\n const [count, setCount] = useState(0);\n return <div>{count}</div>;\n}\n```" + `
效果演示视频:
截图:
预期效果:Markdown正常,代码高亮,视频和图片正常显示
测试用例 9.2 - 产品介绍
## 产品特性
1. **高性能** - 处理速度快
2. **安全** - 防XSS攻击 <script>alert(1)</script>
3. **易用** - 简单配置
产品截图:
演示视频:
预期效果:列表正常,script被转义,图片和视频正常
🔍 测试清单
完成测试后,请检查:
- 所有Markdown语法正常渲染
- 非白名单HTML标签显示为纯文本
- 图片正常显示
- iframe/video根据配置正常显示
- 所有XSS攻击被阻止
- 事件处理器属性被移除
- 危险协议被过滤
- 混合内容正确处理
- 页面没有JavaScript错误
- 浏览器控制台没有XSS警告
📝 测试记录模板
测试用例编号:
输入内容:
预期效果:
实际效果:
是否通过:✅ / ❌
备注: