run-stability-serial.sh 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/bin/bash
  2. # Epic 9 串行模式稳定性测试脚本
  3. # 用于对比并行和串行模式的性能差异
  4. RUNS=10
  5. PROJECT_ROOT="/mnt/code/188-179-template-6"
  6. WEB_DIR="${PROJECT_ROOT}/web"
  7. PASSED=0
  8. FAILED=0
  9. TIMES=()
  10. cd "${WEB_DIR}" || exit 1
  11. echo "========================================="
  12. echo "Epic 9 串行模式稳定性验证"
  13. echo "========================================="
  14. echo "运行次数: ${RUNS}"
  15. echo "测试范围: 残疾人管理核心测试 (37 个测试)"
  16. echo " - disability-person-photo.spec.ts (8 测试)"
  17. echo " - disability-person-bankcard.spec.ts (8 测试)"
  18. echo " - disability-person-note.spec.ts (8 测试)"
  19. echo " - disability-person-visit.spec.ts (10 测试)"
  20. echo " - disability-person-crud.spec.ts (16 测试)"
  21. echo "串行模式: 1 worker"
  22. echo "开始时间: $(date)"
  23. echo ""
  24. echo "========================================="
  25. echo ""
  26. # 运行测试
  27. for i in $(seq 1 ${RUNS}); do
  28. echo "=== 运行 #${i}/${RUNS} (串行模式) ==="
  29. START=$(date +%s)
  30. # 运行测试(1 worker 串行)- 只运行核心测试文件
  31. if pnpm test:e2e:chromium admin/disability-person-photo.spec.ts admin/disability-person-bankcard.spec.ts admin/disability-person-note.spec.ts admin/disability-person-visit.spec.ts admin/disability-person-crud.spec.ts --workers=1; then
  32. PASSED=$((PASSED + 1))
  33. echo "✅ 运行 #${i} 通过"
  34. else
  35. FAILED=$((FAILED + 1))
  36. echo "❌ 运行 #${i} 失败"
  37. fi
  38. END=$(date +%s)
  39. DURATION=$((END - START))
  40. TIMES+=($DURATION)
  41. echo "⏱️ 耗时: ${DURATION}s"
  42. echo ""
  43. done
  44. # 计算统计数据
  45. TOTAL=$((PASSED + FAILED))
  46. PASS_RATE=$((PASSED * 100 / TOTAL))
  47. AVG_TIME=$(awk '{sum+=$1} END {print sum/NR}' <<< "${TIMES[@]}")
  48. MIN_TIME=$(printf "%s\n" "${TIMES[@]}" | sort -n | head -1)
  49. MAX_TIME=$(printf "%s\n" "${TIMES[@]}" | sort -n | tail -1)
  50. # 输出结果
  51. echo "========================================="
  52. echo "串行模式稳定性测试结果"
  53. echo "========================================="
  54. echo "通过: ${PASSED}/${TOTAL} (${PASS_RATE}%)"
  55. echo "失败: ${FAILED}/${TOTAL}"
  56. echo ""
  57. echo "执行时间统计:"
  58. echo " 平均: ${AVG_TIME}s"
  59. echo " 最快: ${MIN_TIME}s"
  60. echo " 最慢: ${MAX_TIME}s"
  61. echo ""
  62. echo "结束时间: $(date)"
  63. echo "========================================="
  64. # 判断结果
  65. if [ $PASSED -eq $TOTAL ]; then
  66. echo ""
  67. echo "🎉 串行模式稳定性验证通过!100% 成功率!"
  68. exit 0
  69. else
  70. echo ""
  71. echo "⚠️ 稳定性不足,需要修复失败的测试"
  72. exit 1
  73. fi