Files
markbase/data/sftp_client_test_recommendations.md
Warren d94cb2df4c Fix code quality: trailing whitespace, unused imports, clippy warnings
- Fix trailing whitespace in kex.rs and s3.rs
- Add missing KexProposal import in kex_complete.rs
- Auto-fix clippy warnings across all crates
- All 153 tests pass
2026-06-19 05:21:38 +08:00

441 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SFTP Client 测试建议与分析
**测试目标**:验证 MarkBaseSSH SFTP 实现Phase 7的兼容性和稳定性
**测试环境**MarkBaseSSH server (port 2024) + macOS client
**测试用户**demo (password: demo123)
---
## 推荐测试方案 ⭐⭐⭐⭐⭐
### 方案 1: OpenSSH sftp client必须测试
**推荐等级**:⭐⭐⭐⭐⭐ **最高优先级**
**理由**
- ✅ OpenSSH 是标准实现MarkBaseSSH 必须完全兼容
- ✅ macOS 内置,无需额外安装
- ✅ 命令行工具,适合自动化测试
- ✅ 完整的 SFTP 协议支持SSH_FXP_* 所有 packet
- ✅ 错误信息清晰,易于调试
**测试命令**
```bash
# 基本连接测试
sftp -P 2024 demo@127.0.0.1
# 批量测试脚本
sftp -P 2024 -b /tmp/sftp_test_batch.txt demo@127.0.0.1
# 大文件传输测试
sftp -P 2024 demo@127.0.0.1 <<EOF
put /tmp/test_100mb.bin /data/test_100mb.bin
get /data/test_100mb.bin /tmp/test_download.bin
ls -la /data/
bye
EOF
# MD5 校验
md5 /tmp/test_100mb.bin /tmp/test_download.bin
```
**测试覆盖**
- ✅ SSH_FXP_INIT/VERSION握手
- ✅ SSH_FXP_REALPATH路径解析
- ✅ SSH_FXP_OPENDIR/READDIR目录浏览
- ✅ SSH_FXP_OPEN/READ/WRITE文件传输
- ✅ SSH_FXP_CLOSE句柄管理
- ✅ SSH_FXP_STAT/LSTAT文件属性
- ✅ SSH_FXP_MKDIR/RMDIR目录操作
- ✅ SSH_FXP_REMOVE/RENAME文件操作
**预期结果**
- ✅ 所有操作成功
- ✅ 文件完整性校验一致
- ✅ 错误处理正确(权限、路径不存在等)
---
### 方案 2: CyberduckmacOS 推荐 GUI client
**推荐等级**:⭐⭐⭐⭐⭐ **强烈推荐**
**理由**
- ✅ macOS 原生应用,用户友好
- ✅ 广泛使用,稳定可靠
- ✅ 支持 SFTP、FTP、WebDAV 等多种协议
- ✅ 支持大文件传输(断点续传)
- ✅ 支持同步功能(同步本地和远程目录)
- ✅ 书签管理(保存连接配置)
**安装方式**
```bash
# Homebrew 安装
brew install --cask cyberduck
# 或从 App Store 下载
# https://apps.apple.com/app/cyberduck/id409222152
```
**测试配置**
```
协议: SFTP
服务器: 127.0.0.1
端口: 2024
用户名: demo
密码: demo123
路径: /Users/accusys/markbase/data
```
**测试覆盖**
- ✅ GUI 连接测试(用户交互)
- ✅ 文件上传(拖拽上传)
- ✅ 文件下载(拖拽下载)
- ✅ 目录浏览(双击进入)
- ✅ 文件删除(右键菜单)
- ✅ 文件重命名(右键菜单)
- ✅ 新建目录(右键菜单)
- ✅ 大文件传输100MB+
- ✅ 断点续传测试(中断后重新连接)
**预期结果**
- ✅ 连接成功,显示文件列表
- ✅ 上传/下载正常,进度显示
- ✅ 文件操作正常,错误提示清晰
---
### 方案 3: FileZilla跨平台 GUI client
**推荐等级**:⭐⭐⭐⭐ **推荐**
**理由**
- ✅ 跨平台Windows, macOS, Linux
- ✅ 广泛使用,社区活跃
- ✅ 支持多种协议SFTP, FTP, FTPS
- ✅ 详细日志显示packet 级别)
- ✅ 支持并发传输(多文件同时上传/下载)
- ✅ 站点管理器(保存连接配置)
**安装方式**
```bash
# Homebrew 安装
brew install --cask filezilla
# 或从官网下载
# https://filezilla-project.org/download.php
```
**测试配置**
```
协议: SFTP - SSH File Transfer Protocol
主机: 127.0.0.1
端口: 2024
用户: demo
密码: demo123
```
**测试覆盖**
- ✅ GUI 连接测试
- ✅ 文件传输(上传/下载)
- ✅ 目录浏览
- ✅ 文件操作(删除、重命名、新建目录)
- ✅ 并发传输测试(多文件同时传输)
- ✅ 日志分析(查看 SFTP packet
- ✅ 大文件传输100MB+
**预期结果**
- ✅ 连接成功
- ✅ 日志显示 SSH_FXP_* packet验证协议实现
- ✅ 文件传输正常
- ✅ 并发传输正常Window Control 验证)
---
### 方案 4: lftp高级命令行 client
**推荐等级**:⭐⭐⭐⭐ **推荐(高级测试)**
**理由**
- ✅ 功能丰富(镜像、同步、断点续传)
- ✅ 支持多种协议SFTP, FTP, HTTP, HTTPS
- ✅ 支持并行传输(多连接并发)
- ✅ 支持脚本化(批量操作)
- ✅ 详细日志(调试信息)
**安装方式**
```bash
# Homebrew 安装
brew install lftp
```
**测试命令**
```bash
# 基本连接测试
lftp sftp://demo:demo123@127.0.0.1:2024
# 镜像测试(同步目录)
lftp sftp://demo:demo123@127.0.0.1:2024 <<EOF
mirror -R /tmp/test_folder /data/test_folder
mirror /data/test_folder /tmp/download_folder
bye
EOF
# 并行传输测试
lftp sftp://demo:demo123@127.0.0.1:2024 <<EOF
set sftp:parallel 4
mput /tmp/test_*.bin
bye
EOF
# 断点续传测试
lftp sftp://demo:demo123@127.0.0.1:2024 <<EOF
pget -n 4 -c /data/test_100mb.bin
bye
EOF
```
**测试覆盖**
- ✅ 基本操作ls, get, put, rm
- ✅ 镜像功能mirror同步目录
- ✅ 并行传输mput, mget
- ✅ 断点续传pget -c
- ✅ 高级功能验证
**预期结果**
- ✅ 连接成功
- ✅ 镜像同步正常
- ✅ 并行传输正常Window Control 验证)
- ✅ 断点续传正常
---
## 测试优先级排序 ⭐⭐⭐⭐⭐
| 优先级 | Client | 类型 | 安装状态 | 测试必要性 |
|--------|--------|------|---------|-----------|
| **1** | OpenSSH sftp | 命令行 | ✅ 已安装 | ⭐⭐⭐⭐⭐ **必须测试** |
| **2** | Cyberduck | GUI | ❌ 未安装 | ⭐⭐⭐⭐⭐ **强烈推荐** |
| **3** | FileZilla | GUI | ❌ 未安装 | ⭐⭐⭐⭐ **推荐** |
| **4** | lftp | 命令行 | ❌ 未安装 | ⭐⭐⭐⭐ **推荐(高级测试)** |
---
## 建议测试流程 ⭐⭐⭐⭐⭐
### Phase 1: OpenSSH sftp必须
**时间**30 分钟
**步骤**
1. 基本连接测试pwd, ls, cd
2. 文件上传测试put
3. 文件下载测试get
4. 文件操作测试rm, rename, mkdir
5. 大文件传输测试100MB
6. MD5 校验验证
**验证重点**
- ✅ SSH_FXP_* packet 完整实现
- ✅ Window Control 正常工作
- ✅ 文件完整性校验
---
### Phase 2: Cyberduck强烈推荐
**时间**20 分钟
**步骤**
1. GUI 连接测试
2. 文件拖拽上传
3. 文件拖拽下载
4. 目录浏览测试
5. 文件操作测试(右键菜单)
6. 大文件传输测试100MB
7. 断点续传测试
**验证重点**
- ✅ 用户交互友好性
- ✅ 大文件传输稳定性
- ✅ 错误提示清晰性
---
### Phase 3: FileZilla推荐
**时间**30 分钟
**步骤**
1. GUI 连接测试
2. 文件传输测试
3. 并发传输测试(多文件同时)
4. 日志分析SSH_FXP_* packet
5. 大文件传输测试
**验证重点**
- ✅ 并发传输Window Control
- ✅ 协议实现验证packet 日志)
- ✅ 错误处理
---
### Phase 4: lftp高级测试
**时间**40 分钟
**步骤**
1. 基本连接测试
2. 镜像同步测试mirror
3. 并行传输测试mput
4. 断点续传测试pget
5. 性能对比
**验证重点**
- ✅ 高级功能兼容性
- ✅ 性能优化验证
- ✅ 稳定性测试
---
## 测试脚本建议 ⭐⭐⭐⭐⭐
### OpenSSH sftp 批量测试脚本
**文件**`/tmp/sftp_test_batch.txt`
```bash
# 基本操作测试
pwd
ls -la
cd data
ls -la
# 文件上传测试
put /tmp/test_5mb.bin test_5mb.bin
put /tmp/test_10mb.bin test_10mb.bin
put /tmp/test_100mb.bin test_100mb.bin
# 文件下载测试
get test_100mb.bin /tmp/test_download.bin
# 文件操作测试
mkdir test_dir
rename test_5mb.bin test_5mb_renamed.bin
rm test_10mb.bin
rmdir test_dir
# 属性查询测试
stat test_100mb.bin
ls -la
# 退出
bye
```
**执行命令**
```bash
# 创建测试文件
dd if=/dev/urandom of=/tmp/test_5mb.bin bs=1M count=5
dd if=/dev/urandom of=/tmp/test_10mb.bin bs=1M count=10
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1M count=100
# 执行批量测试
sftp -P 2024 -b /tmp/sftp_test_batch.txt demo@127.0.0.1
# MD5 校验
md5 /tmp/test_100mb.bin /tmp/test_download.bin
```
---
## 错误处理测试 ⭐⭐⭐⭐⭐
**测试场景**
1. ✅ 路径不存在SSH_FXP_NO_SUCH_FILE
2. ✅ 权限不足SSH_FXP_PERMISSION_DENIED
3. ✅ 文件已存在SSH_FXP_FILE_ALREADY_EXISTS
4. ✅ 磁盘空间不足SSH_FXP_FAILURE
5. ✅ 连接中断(断点续传)
**测试命令**
```bash
# 路径不存在测试
sftp -P 2024 demo@127.0.0.1 <<EOF
get /data/nonexistent_file.bin /tmp/test.bin
EOF
# 预期: "No such file"
# 权限不足测试
sftp -P 2024 demo@127.0.0.1 <<EOF
put /tmp/test.bin /root/test.bin
EOF
# 预期: "Permission denied"
# 文件已存在测试
sftp -P 2024 demo@127.0.0.1 <<EOF
put /tmp/test_100mb.bin /data/test_100mb.bin
EOF
# 预期: 文件已存在,询问是否覆盖
```
---
## 性能测试建议 ⭐⭐⭐⭐⭐
**测试指标**
- 传输速率MB/s
- 并发传输能力(多文件同时)
- 大文件传输稳定性100MB+
- Window Control 效率window adjust frequency
**测试命令**
```bash
# OpenSSH sftp 性能测试
time sftp -P 2024 demo@127.0.0.1 <<EOF
put /tmp/test_100mb.bin /data/test_100mb.bin
bye
EOF
# FileZilla 并发传输测试
# 同时上传 10 个 10MB 文件,测试 Window Control
# lftp 并行传输测试
lftp sftp://demo:demo123@127.0.0.1:2024 <<EOF
set sftp:parallel 4
mput /tmp/test_1*.bin
bye
EOF
```
---
## 总结与建议 ⭐⭐⭐⭐⭐
**必须测试**
- ⭐⭐⭐⭐⭐ **OpenSSH sftp**(标准实现,兼容性验证)
**强烈推荐**
- ⭐⭐⭐⭐⭐ **Cyberduck**macOS 原生,用户友好)
- ⭐⭐⭐⭐ **FileZilla**(跨平台,日志详细)
**可选测试**
- ⭐⭐⭐⭐ **lftp**(高级功能,性能优化)
**测试时间估算**
- Phase 1OpenSSH sftp30 分钟
- Phase 2Cyberduck20 分钟
- Phase 3FileZilla30 分钟
- Phase 4lftp40 分钟
- **总计**:约 2 小时
**预期结果**
- ✅ 所有 client 连接成功
- ✅ 所有操作正常(上传、下载、浏览、删除等)
- ✅ 文件完整性校验一致
- ✅ 错误处理正确
- ✅ Window Control 正常工作
---
**最后更新**2026-06-17