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

10 KiB
Raw Blame History

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
  • 错误信息清晰,易于调试

测试命令

# 基本连接测试
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 等多种协议
  • 支持大文件传输(断点续传)
  • 支持同步功能(同步本地和远程目录)
  • 书签管理(保存连接配置)

安装方式

# 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 级别)
  • 支持并发传输(多文件同时上传/下载)
  • 站点管理器(保存连接配置)

安装方式

# 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
  • 支持并行传输(多连接并发)
  • 支持脚本化(批量操作)
  • 详细日志(调试信息)

安装方式

# Homebrew 安装
brew install lftp

测试命令

# 基本连接测试
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

# 基本操作测试
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

执行命令

# 创建测试文件
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. 连接中断(断点续传)

测试命令

# 路径不存在测试
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

测试命令

# 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(标准实现,兼容性验证)

强烈推荐

  • CyberduckmacOS 原生,用户友好)
  • FileZilla(跨平台,日志详细)

可选测试

  • lftp(高级功能,性能优化)

测试时间估算

  • Phase 1OpenSSH sftp30 分钟
  • Phase 2Cyberduck20 分钟
  • Phase 3FileZilla30 分钟
  • Phase 4lftp40 分钟
  • 总计:约 2 小时

预期结果

  • 所有 client 连接成功
  • 所有操作正常(上传、下载、浏览、删除等)
  • 文件完整性校验一致
  • 错误处理正确
  • Window Control 正常工作

最后更新2026-06-17