边缘情况测试用例集

📋 测试说明

将以下每个测试用例复制到编辑器中发布为文章,检查显示效果是否符合预期。


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 - 多个图片混合文本

第一张图片:图1

这是**中间的文本**,代码是<span>test</span>

第二张图片:图2

预期效果

  • 两张图片正常显示
  • 中间的粗体正常渲染
  • <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 - 不完整的标签

未闭合
<iframe src=
单引号

预期效果:图片正常显示


测试用例 7.5 - 自闭合和非自闭合混合



预期效果:两种格式都能正常显示


8️⃣ 极端情况

测试用例 8.1 - 超长URL

超长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```" + `

效果演示视频:


截图:
React示例

预期效果:Markdown正常,代码高亮,视频和图片正常显示


测试用例 9.2 - 产品介绍

## 产品特性

1. **高性能** - 处理速度快
2. **安全** - 防XSS攻击 <script>alert(1)</script>
3. **易用** - 简单配置

产品截图:
产品界面

演示视频:

预期效果:列表正常,script被转义,图片和视频正常


🔍 测试清单

完成测试后,请检查:

  • 所有Markdown语法正常渲染
  • 非白名单HTML标签显示为纯文本
  • 图片正常显示
  • iframe/video根据配置正常显示
  • 所有XSS攻击被阻止
  • 事件处理器属性被移除
  • 危险协议被过滤
  • 混合内容正确处理
  • 页面没有JavaScript错误
  • 浏览器控制台没有XSS警告

📝 测试记录模板

测试用例编号:
输入内容:
预期效果:
实际效果:
是否通过:✅ / ❌
备注: