gen_test_case.js 53 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117
  1. const XLSX = require('C:/tmp_xlsx/node_modules/xlsx-js-style');
  2. // ======================================================
  3. // 格式说明(对标 test_case_new.xlsx):
  4. // 标题行背景色:#000080(海军蓝)
  5. // 正常场景行:#CCFFFF(浅青色)
  6. // 异常场景行:#FF99CC(浅粉红)
  7. // 边界场景行:#FFFF99(浅黄色)
  8. // 标题行行高:30pt;数据行行高:25pt
  9. // 用例编号格式:TC-模块号-序号(如TC-01-001)
  10. // 测试类型值:正常场景 / 异常场景 / 边界场景
  11. // 优先级:P0 / P1 / P2
  12. // ======================================================
  13. // ======================================================
  14. // 测试用例数据(基于prompt_rewritebyCC.md & newPromptAddChem.md)
  15. // 字段顺序:用例编号, 模块名称, 测试场景, 测试类型,
  16. // 前置条件, 测试操作, 预期结果, 优先级, 设计方法
  17. // ======================================================
  18. const testCases = [
  19. // ===================================================
  20. // 模块01:通用导航栏
  21. // ===================================================
  22. ['TC-01-001', '通用导航栏', '实时时钟以HH:MM:SS格式每秒刷新', '正常场景',
  23. '系统正常运行,页面已完整加载',
  24. '观察页面右上角时钟区域',
  25. '时钟以HH:MM:SS格式正确显示,每秒刷新一次且无闪烁',
  26. 'P0', '场景法'],
  27. ['TC-01-002', '通用导航栏', '星期信息与系统本地时间一致', '正常场景',
  28. '系统正常运行,页面已完整加载',
  29. '查看导航栏右侧星期显示并与系统时间对比',
  30. '正确显示当前星期几(如:星期三),与系统本地时间一致',
  31. 'P1', '等价类划分'],
  32. ['TC-01-003', '通用导航栏', '天气信息正常展示无空白乱码', '正常场景',
  33. '系统正常运行,网络连接正常',
  34. '查看天气信息区域显示内容',
  35. '天气信息正常显示,不出现空白区域或乱码',
  36. 'P1', '场景法'],
  37. ['TC-01-004', '通用导航栏', '标题渐变色效果正确渲染', '正常场景',
  38. '系统正常运行,页面已完整加载',
  39. '查看导航栏左侧标题文字样式',
  40. '「中国安全生产科学研究院实验室安全智慧化管控中心」显示白→科技蓝渐变色效果',
  41. 'P2', '场景法'],
  42. ['TC-01-005', '通用导航栏', '导航栏底部流光动画持续运行', '正常场景',
  43. '系统正常运行,页面已完整加载',
  44. '观察导航栏底部分割线动效',
  45. '底部渐变分割线+流光动画持续运行,4s一轮循环,无卡顿中断',
  46. 'P2', '场景法'],
  47. ['TC-01-006', '通用导航栏', '「实验室情况」按钮默认选中高亮', '正常场景',
  48. '页面初始加载完成',
  49. '观察顶部导航中间切换按钮区域',
  50. '「实验室情况」按钮默认选中并显示发光呼吸高亮效果,「视频监控」按钮未选中',
  51. 'P0', '场景法'],
  52. ['TC-01-007', '通用导航栏', '点击「视频监控」切换页面Tab状态同步', '正常场景',
  53. '当前页面为实验室情况页',
  54. '点击导航栏「视频监控」按钮',
  55. '页面切换至视频监控页,「视频监控」按钮变为选中高亮,「实验室情况」取消选中',
  56. 'P0', '场景法'],
  57. ['TC-01-008', '通用导航栏', '点击「实验室情况」切回并重新初始化ECharts', '正常场景',
  58. '当前页面为视频监控页',
  59. '点击导航栏「实验室情况」按钮',
  60. '页面切换回实验室情况页,延迟100ms后所有ECharts图表重新初始化并正确渲染',
  61. 'P0', '场景法'],
  62. ['TC-01-009', '通用导航栏', '两页面共享导航栏,切换时信息不变', '正常场景',
  63. '页面已加载,可正常切换页面',
  64. '分别切换两个页面,观察导航栏内容',
  65. '两页面切换时导航栏标题、时钟、天气信息保持不变,仅Tab选中状态变化',
  66. 'P1', '场景法'],
  67. ['TC-01-010', '通用导航栏', '网络断开时天气区域兜底展示', '异常场景',
  68. '系统正常运行,页面已加载后断开网络连接',
  69. '断网后观察天气信息区域',
  70. '天气区域显示"--"或"暂无数据"兜底,不出现空白区域或JS报错',
  71. 'P0', '错误推测法'],
  72. ['TC-01-011', '通用导航栏', '跨日00:00:00时日期星期同步切换', '边界场景',
  73. '系统持续运行至接近午夜',
  74. '在00:00:00前后观察日期与星期变化',
  75. '日期与星期同步切换,不出现跨日延迟(如00:00:01还显示昨天)',
  76. 'P0', '边界值分析'],
  77. ['TC-01-012', '通用导航栏', '跨年元旦零点年份正确切换', '边界场景',
  78. '系统运行至12月31日23:59:59',
  79. '观察00:00:00时刻年份变化',
  80. '年份正确切换至新年',
  81. 'P1', '边界值分析'],
  82. // ===================================================
  83. // 模块02:实验室基本情况统计
  84. // ===================================================
  85. ['TC-02-001', '实验室基本情况统计', '环形图正确渲染并显示实验室总数', '正常场景',
  86. '系统正常运行,实验室情况页已加载',
  87. '查看左栏顶部环形图(pie, radius 45%~70%)',
  88. 'ECharts环形图正确渲染,中心显示实验室总数数字及"实验室总数"文字',
  89. 'P0', '场景法'],
  90. ['TC-02-002', '实验室基本情况统计', '四个安全分级颜色与标准完全对应', '正常场景',
  91. '系统正常运行,实验室情况页已加载',
  92. '查看环形图各扇区颜色及右侧图例',
  93. 'I级显示红色#ff4d4f,II级显示橙色#ff8c00,III级显示黄色#ffcc00,IV级显示蓝色#3a7bff,颜色与教育部标准一致',
  94. 'P0', '等价类划分'],
  95. ['TC-02-003', '实验室基本情况统计', '右侧纵向图例完整显示四个分级', '正常场景',
  96. '系统正常运行,实验室情况页已加载',
  97. '查看环形图右侧图例区域',
  98. '图例纵向显示I级、II级、III级、IV级及对应颜色和占比数据,四项缺一不可',
  99. 'P1', '场景法'],
  100. ['TC-02-004', '实验室基本情况统计', '三个状态卡片数量之和等于实验室总数', '正常场景',
  101. '系统正常运行,实验室情况页已加载',
  102. '查看环形图下方使用、异常、空闲三个状态卡片数值',
  103. '使用数+异常数+空闲数=实验室总数,逻辑自洽;三卡片颜色分别为蓝、红、绿',
  104. 'P0', '等价类划分'],
  105. ['TC-02-005', '实验室基本情况统计', '状态卡片呼吸发光动画stagger间隔1.3s', '正常场景',
  106. '系统正常运行,实验室情况页已加载',
  107. '观察三个状态卡片动画效果',
  108. '三个卡片均有呼吸发光动画,stagger间隔1.3s依次错开',
  109. 'P2', '场景法'],
  110. ['TC-02-006', '实验室基本情况统计', '四个分级占比之和为100%', '正常场景',
  111. '系统正常运行,数据接口正常返回',
  112. '验证环形图各分级占比数值之和',
  113. '四个分级占比之和等于100%',
  114. 'P0', '等价类划分'],
  115. ['TC-02-007', '实验室基本情况统计', '某分级数量为0时扇区不渲染无孤立标签', '异常场景',
  116. '某分级数量后台配置为0',
  117. '观察环形图对应扇区及引线标注',
  118. '对应扇区不渲染,不出现"0间/0%"孤立标签',
  119. 'P1', '错误推测法'],
  120. ['TC-02-008', '实验室基本情况统计', '数据接口超时时图表区域降级展示', '异常场景',
  121. '模拟数据接口超时或报错',
  122. '观察图表区域响应',
  123. '图表区域显示"暂无数据"占位块,不触发JS异常',
  124. 'P0', '错误推测法'],
  125. ['TC-02-009', '实验室基本情况统计', '所有实验室属同一分级时环形图渲染完整圆形', '边界场景',
  126. '后台配置所有实验室归属同一分级',
  127. '观察环形图渲染结果',
  128. '环形图渲染为完整圆形,无多余间隔',
  129. 'P1', '边界值分析'],
  130. ['TC-02-010', '实验室基本情况统计', '模块固定高度260px内容无溢出截断', '边界场景',
  131. '系统正常运行,实验室情况页已加载',
  132. '检查实验室基本情况统计区域高度及内容显示',
  133. '模块高度固定260px,内容无超出或截断',
  134. 'P1', '边界值分析'],
  135. // ===================================================
  136. // 模块03:实验室安全分级统计
  137. // ===================================================
  138. ['TC-03-001', '实验室安全分级统计', '堆叠柱状图图例颜色与图形一一对应', '正常场景',
  139. '系统正常运行,实验室情况页已加载',
  140. '查看堆叠柱状图顶部图例',
  141. '图例显示I~IV级,红橙黄蓝颜色与图形颜色一一对应',
  142. 'P1', '场景法'],
  143. ['TC-03-002', '实验室安全分级统计', '默认一屏显示6个柱子X轴含名称与总数', '正常场景',
  144. '系统正常运行,X轴数据>=6个',
  145. '查看初始加载时X轴柱子数量及标签',
  146. '一屏展示6个柱子,X轴每柱下方同时显示二级单位名称(可换行)及实验室总数',
  147. 'P0', '场景法'],
  148. ['TC-03-003', '实验室安全分级统计', '超过6个数据时每5秒自动向右滚动1个单位', '正常场景',
  149. '系统正常运行,X轴数据>6个',
  150. '等待5秒观察图表滚动行为',
  151. '每隔5秒自动向右滚动1个X轴单位,动画流畅,使用dataZoom实现',
  152. 'P0', '场景法'],
  153. ['TC-03-004', '实验室安全分级统计', '滚动到最后数据后自动循环从第一个开始', '正常场景',
  154. '系统正常运行,X轴数据>6个,已滚动至最后一个',
  155. '等待下次滚动',
  156. '自动循环回第一个数据重新开始,无卡顿或跳跃',
  157. 'P1', '场景法'],
  158. ['TC-03-005', '实验室安全分级统计', 'Tooltip悬停显示深色背景蓝色边框', '正常场景',
  159. '系统正常运行,实验室情况页已加载',
  160. '鼠标悬停在某个柱状条上',
  161. 'Tooltip背景为rgba(6,22,56,0.9),边框为蓝色,内容含各分级数量',
  162. 'P1', '场景法'],
  163. ['TC-03-006', '实验室安全分级统计', '某单位实验室总数为0时柱子不渲染或高度为0', '异常场景',
  164. '后台配置某二级单位实验室总数为0',
  165. '观察对应柱子渲染及X轴总数显示',
  166. '对应柱子不渲染或高度为0,X轴总数显示0',
  167. 'P1', '错误推测法'],
  168. ['TC-03-007', '实验室安全分级统计', 'X轴数据恰好6个时不触发自动滚动', '边界场景',
  169. '后台配置X轴数据恰好为6个',
  170. '等待超过5秒观察是否滚动',
  171. '不触发自动滚动,图表静态展示',
  172. 'P1', '边界值分析'],
  173. ['TC-03-008', '实验室安全分级统计', 'X轴数据为1个时单柱居中不触发滚动', '边界场景',
  174. '后台配置X轴数据仅1个',
  175. '观察图表展示与滚动行为',
  176. '单柱居中显示,不触发滚动',
  177. 'P2', '边界值分析'],
  178. ['TC-03-009', '实验室安全分级统计', 'X轴数据为7个时滚动1步即循环', '边界场景',
  179. '后台配置X轴数据为7个',
  180. '等待滚动并观察循环行为',
  181. '滚动仅1步即循环,展示正常',
  182. 'P2', '边界值分析'],
  183. // ===================================================
  184. // 模块04:实验室进入人数统计及走势
  185. // ===================================================
  186. ['TC-04-001', '实验室进入人数统计及走势', '翻牌器同行显示今日总进入与当前实验人数', '正常场景',
  187. '系统正常运行,实验室情况页已加载',
  188. '查看左栏底部翻牌器区域布局与数值',
  189. '5位数字翻牌器(今日总进入)与4位数字翻牌器(当前实验人数)同行显示,字号突出',
  190. 'P0', '场景法'],
  191. ['TC-04-002', '实验室进入人数统计及走势', '翻牌器数字方块样式与发光动画正常', '正常场景',
  192. '系统正常运行,实验室情况页已加载',
  193. '查看翻牌器每个数字方块样式及动画',
  194. '每个数字为独立方块(32×42px),有渐变背景+边框发光动效,2s周期呼吸动画',
  195. 'P1', '场景法'],
  196. ['TC-04-003', '实验室进入人数统计及走势', '双折线图正确展示0至24点9个时段', '正常场景',
  197. '系统正常运行,数据接口正常返回',
  198. '查看折线图X轴标签与双折线显示',
  199. '正确展示0:00~24:00共9个时段,进入人数(科技蓝)与实验人数(深蓝)两条折线颜色区分明确',
  200. 'P0', '场景法'],
  201. ['TC-04-004', '实验室进入人数统计及走势', '折线图面积填充渐变效果正确', '正常场景',
  202. '系统正常运行,实验室情况页已加载',
  203. '查看折线图面积填充样式',
  204. '两条折线下方均有渐变面积填充效果,smooth曲线样式',
  205. 'P2', '场景法'],
  206. ['TC-04-005', '实验室进入人数统计及走势', '今日进入人数为0时翻牌器显示0不出现NaN', '异常场景',
  207. '后台配置今日进入人数为0',
  208. '观察翻牌器显示',
  209. '翻牌器显示0,不出现空白或NaN',
  210. 'P0', '错误推测法'],
  211. ['TC-04-006', '实验室进入人数统计及走势', '23:59时折线图最后时段数据无断档', '边界场景',
  212. '系统运行至23:59',
  213. '观察折线图最后时段数据',
  214. '最后时段数据正确填入,不出现数据断档',
  215. 'P1', '边界值分析'],
  216. ['TC-04-007', '实验室进入人数统计及走势', '人数位数增加时翻牌器自动扩展不截断', '边界场景',
  217. '后台配置人数从3位数跳变为4位数',
  218. '观察翻牌器位数变化',
  219. '翻牌器自动扩展位数,不出现数字截断',
  220. 'P1', '边界值分析'],
  221. ['TC-04-008', '实验室进入人数统计及走势', '模块固定高度280px内容无溢出', '边界场景',
  222. '系统正常运行,实验室情况页已加载',
  223. '检查该模块整体高度和内容',
  224. '模块高度固定280px,翻牌器和折线图均完整显示,无截断',
  225. 'P1', '边界值分析'],
  226. // ===================================================
  227. // 模块05:实验环境安全智能感知
  228. // ===================================================
  229. ['TC-05-001', '实验环境安全智能感知', '列表由上向上自动滚动流畅无卡顿', '正常场景',
  230. '系统正常运行,实验室情况页已加载',
  231. '观察中栏顶部环境感知列表滚动行为',
  232. '列表无缝滚动(translateY(-50%)+数据翻倍),40s一轮循环,无卡顿跳跃',
  233. 'P0', '场景法'],
  234. ['TC-05-002', '实验环境安全智能感知', '每个条目完整显示名称单位及5个传感器值', '正常场景',
  235. '系统正常运行,数据接口正常返回',
  236. '查看列表中每个实验室条目内容',
  237. '正确显示实验室名称(房号)-二级单位、温度、湿度、TVOC、CO₂、O₂五个传感器实时数值',
  238. 'P0', '场景法'],
  239. ['TC-05-003', '实验环境安全智能感知', '温度正常(≤30°C)时条目无异常样式', '正常场景',
  240. '传感器温度≤30°C',
  241. '查看温度字段显示',
  242. '温度值显示正常颜色,无报警图标,条目无红色高亮',
  243. 'P0', '等价类划分'],
  244. ['TC-05-004', '实验环境安全智能感知', '温度异常(>30°C)触发红色高亮+报警图标', '异常场景',
  245. '传感器温度>30°C',
  246. '查看对应实验室条目温度字段显示',
  247. '温度值红色高亮,显示⚠报警图标,条目整体触发脉冲box-shadow动画',
  248. 'P0', '边界值分析'],
  249. ['TC-05-005', '实验环境安全智能感知', '温度恰好30°C时不触发报警(边界为>)', '边界场景',
  250. '传感器温度=30°C',
  251. '查看温度=30°C的条目显示',
  252. '温度值不触发异常高亮,显示正常样式',
  253. 'P0', '边界值分析'],
  254. ['TC-05-006', '实验环境安全智能感知', 'TVOC异常(>1.5mg/m³)触发报警', '异常场景',
  255. '传感器TVOC>1.5mg/m³',
  256. '查看该条目TVOC字段',
  257. 'TVOC值红色高亮+⚠图标+脉冲动画',
  258. 'P0', '边界值分析'],
  259. ['TC-05-007', '实验环境安全智能感知', 'TVOC恰好1.5mg/m³时不触发报警', '边界场景',
  260. '传感器TVOC=1.5mg/m³',
  261. '查看TVOC=1.5mg/m³的条目',
  262. 'TVOC值不触发异常高亮',
  263. 'P0', '边界值分析'],
  264. ['TC-05-008', '实验环境安全智能感知', 'CO₂异常(>900ppm)触发报警', '异常场景',
  265. '传感器CO₂>900ppm',
  266. '查看该条目CO₂字段',
  267. 'CO₂值红色高亮+⚠图标+脉冲动画',
  268. 'P0', '边界值分析'],
  269. ['TC-05-009', '实验环境安全智能感知', 'CO₂恰好900ppm时不触发报警', '边界场景',
  270. '传感器CO₂=900ppm',
  271. '查看CO₂=900ppm的条目',
  272. 'CO₂值不触发异常高亮',
  273. 'P0', '边界值分析'],
  274. ['TC-05-010', '实验环境安全智能感知', 'O₂异常(<19.5%)触发报警', '异常场景',
  275. '传感器O₂<19.5%',
  276. '查看该条目O₂字段',
  277. 'O₂值红色高亮+⚠图标+脉冲动画',
  278. 'P0', '边界值分析'],
  279. ['TC-05-011', '实验环境安全智能感知', 'O₂恰好19.5%时不触发报警', '边界场景',
  280. '传感器O₂=19.5%',
  281. '查看O₂=19.5%的条目',
  282. 'O₂值不触发异常高亮',
  283. 'P0', '边界值分析'],
  284. ['TC-05-012', '实验环境安全智能感知', '多项传感器同时异常全部标红', '异常场景',
  285. '同一条目多个传感器值超出阈值',
  286. '查看多传感器异常条目',
  287. '所有超阈值的传感器字段均红色高亮并显示⚠图标',
  288. 'P0', '错误推测法'],
  289. ['TC-05-013', '实验环境安全智能感知', '传感器全部离线时数值显示横杠不触发误报警', '异常场景',
  290. '某实验室传感器全部离线',
  291. '观察该条目各传感器数值与报警图标',
  292. '各传感器数值显示"--",不触发误报警,不渲染报警图标',
  293. 'P0', '错误推测法'],
  294. ['TC-05-014', '实验环境安全智能感知', '条目超100条时滚动帧率不低于30FPS', '边界场景',
  295. '后台配置实验室条目数量超过100条',
  296. '观察列表滚动帧率',
  297. '滚动性能不出现明显卡顿,FPS不低于30',
  298. 'P1', '边界值分析'],
  299. // ===================================================
  300. // 模块06:实验室实时风险预警
  301. // ===================================================
  302. ['TC-06-001', '实验室实时风险预警', '本月预警响应总数大字体发光动画正常', '正常场景',
  303. '系统正常运行,本月有预警记录',
  304. '查看中栏预警模块顶部数字',
  305. '大字体数字正常显示本月预警总数,有发光文字动画(2s周期)',
  306. 'P0', '场景法'],
  307. ['TC-06-002', '实验室实时风险预警', '原有传感器报警信息完整展示', '正常场景',
  308. '系统正常运行,有传感器超阈值记录',
  309. '查看预警滚动列表中传感器类报警条目',
  310. '每条包含:实验室名称-二级单位、异常传感器名称及数值(橙色高亮)、预警时间(YYYY-MM-DD HH:mm:ss)',
  311. 'P0', '场景法'],
  312. ['TC-06-003', '实验室实时风险预警', '新增化学品违规带离报警信息正常展示', '正常场景',
  313. '系统正常运行,有化学品违规带离记录',
  314. '查看预警滚动列表中化学品类报警条目',
  315. '每条包含:实验室名称-二级单位、实验人员未正常使用违规带离描述、预警时间(YYYY-MM-DD HH:mm:ss)',
  316. 'P0', '场景法'],
  317. ['TC-06-004', '实验室实时风险预警', '传感器报警与化学品报警融合在同一列表中', '正常场景',
  318. '系统同时有两类预警记录',
  319. '查看预警列表整体内容排列',
  320. '两类预警数据融合展示在一个滚动列表中,可视觉区分但共存于同一列表',
  321. 'P0', '场景法'],
  322. ['TC-06-005', '实验室实时风险预警', '预警时间格式正确(YYYY-MM-DD HH:mm:ss)', '正常场景',
  323. '系统正常运行,有预警记录',
  324. '查看列表中各条预警时间字段',
  325. '每条预警时间均符合YYYY-MM-DD HH:mm:ss格式',
  326. 'P1', '等价类划分'],
  327. ['TC-06-006', '实验室实时风险预警', '列表无缝循环滚动30s一轮无跳跃卡顿', '正常场景',
  328. '系统正常运行,实验室情况页已加载',
  329. '观察预警列表滚动动画',
  330. '列表30s一轮循环无缝滚动,无跳跃或卡顿',
  331. 'P0', '场景法'],
  332. ['TC-06-007', '实验室实时风险预警', '左侧3px橙色竖条及脉冲动画正常显示', '正常场景',
  333. '系统正常运行,实验室情况页已加载',
  334. '查看预警列表每条左侧样式',
  335. '每条预警左侧显示3px橙色竖条,有脉冲动画(3s周期)',
  336. 'P2', '场景法'],
  337. ['TC-06-008', '实验室实时风险预警', '本月无预警记录时列表显示占位文字', '异常场景',
  338. '后台配置本月无任何预警记录',
  339. '观察列表和计数器',
  340. '列表显示"暂无预警记录"占位文字,总数计数器显示0',
  341. 'P0', '错误推测法'],
  342. ['TC-06-009', '实验室实时风险预警', '模块固定高度320px内容无溢出', '边界场景',
  343. '系统正常运行,实验室情况页已加载',
  344. '检查预警模块高度',
  345. '模块高度固定320px,内容正常显示无溢出',
  346. 'P1', '边界值分析'],
  347. // ===================================================
  348. // 模块07:智能环境感知应用设备统计
  349. // ===================================================
  350. ['TC-07-001', '智能环境感知应用设备统计', '在线/离线设备数量卡片颜色正确', '正常场景',
  351. '系统正常运行,实验室情况页已加载',
  352. '查看右栏顶部设备统计卡片',
  353. '在线设备数量显示科技蓝色,离线设备数量显示灰色,布局不塌陷',
  354. 'P0', '场景法'],
  355. ['TC-07-002', '智能环境感知应用设备统计', '仪表盘正确渲染在线率指针位置对应', '正常场景',
  356. '系统正常运行,数据接口正常返回',
  357. '查看ECharts仪表盘图表渲染',
  358. 'ECharts仪表盘正确渲染,范围210°~-30°,显示在线率百分比,三段颜色渐变(70%暗蓝/90%中蓝/100%亮蓝),指针位置与数值对应',
  359. 'P0', '场景法'],
  360. ['TC-07-003', '智能环境感知应用设备统计', '设备类型列表4项纵排正确显示数量', '正常场景',
  361. '系统正常运行,实验室情况页已加载',
  362. '查看右下设备类型列表内容',
  363. '纵向列出:电子信息铭牌、化学品智能终端、传感器、智能设备,各自显示对应数量',
  364. 'P0', '场景法'],
  365. ['TC-07-004', '智能环境感知应用设备统计', '在线率计算值与展示值一致', '正常场景',
  366. '系统正常运行,数据接口正常返回',
  367. '计算在线率=在线数/(在线数+离线数),与仪表盘展示值对比',
  368. '仪表盘展示在线率与计算值完全一致',
  369. 'P0', '等价类划分'],
  370. ['TC-07-005', '智能环境感知应用设备统计', '所有设备均离线时在线率显示0%指针最低', '异常场景',
  371. '后台配置所有设备均离线',
  372. '观察在线率显示和仪表盘指针',
  373. '在线率显示0%,指针指向最低档位,不出现NaN或空白',
  374. 'P0', '错误推测法'],
  375. ['TC-07-006', '智能环境感知应用设备统计', '在线率恰好50%时仪表盘指针居中', '边界场景',
  376. '后台配置在线数等于离线数',
  377. '观察仪表盘指针位置',
  378. '指针指向表盘正中位置',
  379. 'P2', '边界值分析'],
  380. ['TC-07-007', '智能环境感知应用设备统计', '设备总数为1且在线时在线率显示100%满格', '边界场景',
  381. '后台配置设备总数为1且在线',
  382. '观察在线率显示和仪表盘',
  383. '在线率显示100%,仪表盘满格',
  384. 'P2', '边界值分析'],
  385. // ===================================================
  386. // 模块08:实验室设备分类及使用统计
  387. // ===================================================
  388. ['TC-08-001', '实验室设备分类及使用统计', '饼图正确渲染7类设备分类分布', '正常场景',
  389. '系统正常运行,实验室情况页已加载',
  390. '查看右栏中部饼图(pie, radius 30%~60%)',
  391. 'ECharts饼图正确渲染,显示7类设备:分析仪器、安全防护、化学试剂设备、电气设备、力学测试、环境监测、通用设备',
  392. 'P0', '等价类划分'],
  393. ['TC-08-002', '实验室设备分类及使用统计', '右侧纵向图例完整对应各分类', '正常场景',
  394. '系统正常运行,实验室情况页已加载',
  395. '查看饼图右侧图例',
  396. '图例纵向显示7类设备名称及对应颜色,各项完整',
  397. 'P1', '场景法'],
  398. ['TC-08-003', '实验室设备分类及使用统计', '中部3个统计卡片数值格式正确', '正常场景',
  399. '系统正常运行,数据接口正常返回',
  400. '查看中部卡片:设备总数/使用总时长/设备使用率',
  401. '3个卡片分别展示:设备总数、使用总时长(h)、设备使用率(%),格式正确',
  402. 'P0', '场景法'],
  403. ['TC-08-004', '实验室设备分类及使用统计', '底部4个状态卡片颜色与语义对应', '正常场景',
  404. '系统正常运行,实验室情况页已加载',
  405. '查看底部状态卡片颜色',
  406. '使用(蓝)、空闲(绿)、正常(橙)、维修(红)4个卡片颜色正确,布局无塌陷',
  407. 'P1', '等价类划分'],
  408. ['TC-08-005', '实验室设备分类及使用统计', '某分类设备数量为0时图表不出现NaN', '异常场景',
  409. '后台配置某分类设备数量为0',
  410. '观察饼图对应扇区',
  411. '对应扇区不渲染,不出现NaN或零值引线标注漂移',
  412. 'P1', '错误推测法'],
  413. ['TC-08-006', '实验室设备分类及使用统计', '只有1种设备分类时饼图渲染完整圆形', '边界场景',
  414. '后台配置只有1种设备分类',
  415. '观察饼图渲染',
  416. '渲染为完整圆形',
  417. 'P2', '边界值分析'],
  418. // ===================================================
  419. // 模块09:化学品库存动态统计(新增模块)
  420. // ===================================================
  421. ['TC-09-001', '化学品库存动态统计', '模块位于右侧最下方(设备统计下方)', '正常场景',
  422. '系统正常运行,实验室情况页已加载',
  423. '检查右侧栏目排列顺序',
  424. '化学品库存动态统计模块位于「实验室设备分类及使用统计」下方,在右侧最下方位置',
  425. 'P0', '场景法'],
  426. ['TC-09-002', '化学品库存动态统计', '饼图正确展示两类化学品外侧引线标注三项完整', '正常场景',
  427. '系统正常运行,数据接口正常返回',
  428. '查看饼图两扇区及外侧引线标注',
  429. '管控与非管控两类扇区外侧引线标注分类名称+数量(L)+占比,无侧边图例',
  430. 'P0', '场景法'],
  431. ['TC-09-003', '化学品库存动态统计', '饼图无Tab切换直接展示单一饼图', '正常场景',
  432. '系统正常运行,实验室情况页已加载',
  433. '查看化学品统计区域是否存在Tab控件',
  434. '模块内无Tab切换控件,直接展示饼图',
  435. 'P1', '场景法'],
  436. ['TC-09-004', '化学品库存动态统计', '右侧统计区四项数据完整且配色正确', '正常场景',
  437. '系统正常运行,数据接口正常返回',
  438. '查看右侧统计数据区域各项',
  439. '展示:存量化学品总量(L)、管控类总量及占比、非管控类总量及占比、总类目数,各含SVG圆弧进度环,配色正确',
  440. 'P0', '场景法'],
  441. ['TC-09-005', '化学品库存动态统计', '管控类统计使用红色系配色SVG进度环与占比一致', '正常场景',
  442. '系统正常运行,数据接口正常返回',
  443. '查看管控类化学品统计项颜色和进度环',
  444. '管控类总量及占比显示红色系配色,SVG圆弧进度环进度与占比数值完全一致',
  445. 'P0', '等价类划分'],
  446. ['TC-09-006', '化学品库存动态统计', '非管控类统计使用青色系配色SVG进度环正确', '正常场景',
  447. '系统正常运行,数据接口正常返回',
  448. '查看非管控类化学品统计项颜色',
  449. '非管控类总量及占比显示青色系配色,SVG圆弧进度环正确渲染',
  450. 'P0', '等价类划分'],
  451. ['TC-09-007', '化学品库存动态统计', '总类目数使用金色系配色SVG进度环', '正常场景',
  452. '系统正常运行,数据接口正常返回',
  453. '查看总类目数统计项颜色',
  454. '总类目数显示金色系配色(如#ffd740),含SVG圆弧进度环',
  455. 'P1', '等价类划分'],
  456. ['TC-09-008', '化学品库存动态统计', '管控类加非管控类等于存量总量逻辑自洽', '正常场景',
  457. '系统正常运行,数据接口正常返回',
  458. '验证:管控类总量(L)+非管控类总量(L)=存量化学品总量(L)',
  459. '逻辑等式成立,两类之和等于总量',
  460. 'P0', '等价类划分'],
  461. ['TC-09-009', '化学品库存动态统计', '所有化学品数量单位统一为L无混用', '正常场景',
  462. '系统正常运行,实验室情况页已加载',
  463. '检查模块中所有数量显示单位',
  464. '化学品数量相关显示均以L为单位,无其他单位混用',
  465. 'P1', '等价类划分'],
  466. ['TC-09-010', '化学品库存动态统计', '管控类化学品数量为0时饼图不渲染进度环归零', '异常场景',
  467. '后台配置管控类化学品数量为0',
  468. '观察饼图扇区、SVG进度环及占比显示',
  469. '饼图该扇区不渲染,SVG进度环进度为0,占比显示"0%"',
  470. 'P0', '错误推测法'],
  471. ['TC-09-011', '化学品库存动态统计', '数据接口异常时统计区显示占位进度环归零', '异常场景',
  472. '模拟数据接口异常',
  473. '观察右侧各统计项和SVG进度环',
  474. '各统计项显示"--"占位,SVG进度环归零,不触发JS异常',
  475. 'P0', '错误推测法'],
  476. ['TC-09-012', '化学品库存动态统计', '存量总量极大时自动换算不出现溢出截断', '边界场景',
  477. '后台配置存量总量超过999999L',
  478. '观察右侧统计区数值显示',
  479. '自动换算为合理精度或万L表示,不出现溢出截断',
  480. 'P1', '边界值分析'],
  481. ['TC-09-013', '化学品库存动态统计', '两类各占50%时饼图平分引线不重叠', '边界场景',
  482. '后台配置两类各占50%',
  483. '观察饼图引线排列',
  484. '饼图平分且两侧引线不重叠',
  485. 'P2', '边界值分析'],
  486. // ===================================================
  487. // 模块10:全屏预警弹窗
  488. // ===================================================
  489. ['TC-10-001', '全屏预警弹窗', '传感器超阈值时弹窗自动弹出覆盖视口z-index最高', '正常场景',
  490. '系统正常运行,传感器数据超出阈值',
  491. '观察全屏预警弹窗是否弹出',
  492. '弹窗自动弹出,覆盖整个视口,z-index高于所有大屏内容层',
  493. 'P0', '场景法'],
  494. ['TC-10-002', '全屏预警弹窗', '页面加载15秒后自动触发预警弹窗(Demo演示)', '正常场景',
  495. '实验室情况页加载完成',
  496. '等待页面加载后15秒',
  497. '预警弹窗自动弹出,全屏半透明红色覆盖层出现,用于Demo演示',
  498. 'P1', '场景法'],
  499. ['TC-10-003', '全屏预警弹窗', '弹窗整体呈科幻红色报警样式四边光边框闪烁', '正常场景',
  500. '预警弹窗已触发',
  501. '观察弹窗整体视觉效果',
  502. '全屏半透明红色覆盖+1s周期呼吸闪烁+四周红色光晕+四边光边框0.8s周期闪烁',
  503. 'P1', '场景法'],
  504. ['TC-10-004', '全屏预警弹窗', 'showAlert函数传参正确填充弹窗内容', '正常场景',
  505. '页面已加载',
  506. '调用showAlert(lab, building, unit, param, value, person, phone)后查看弹窗内容',
  507. '弹窗显示所有传入参数对应内容,数据与参数完全一致',
  508. 'P0', '场景法'],
  509. ['TC-10-005', '全屏预警弹窗', '左侧信息区实验室名称楼栋楼层所属单位正确显示', '正常场景',
  510. '预警弹窗已触发',
  511. '查看弹窗左侧实验室信息各字段',
  512. '实验室名称(房号)、楼栋-楼层、二级单位名称均正确显示',
  513. 'P0', '场景法'],
  514. ['TC-10-006', '全屏预警弹窗', '异常参数和当前数值红色高亮显示', '正常场景',
  515. '预警弹窗已触发',
  516. '查看弹窗中异常参数和当前数值字段',
  517. '异常传感器名称和当前异常数值均以红色高亮显示',
  518. 'P0', '等价类划分'],
  519. ['TC-10-007', '全屏预警弹窗', '负责人姓名和联系电话正确显示', '正常场景',
  520. '预警弹窗已触发',
  521. '查看实验室负责人及联系电话',
  522. '负责人姓名和联系电话均正确显示',
  523. 'P1', '场景法'],
  524. ['TC-10-008', '全屏预警弹窗', '预警时间格式正确(YYYY-MM-DD HH:mm:ss)', '正常场景',
  525. '预警弹窗已触发',
  526. '查看预警时间字段',
  527. '预警时间显示格式符合YYYY-MM-DD HH:mm:ss',
  528. 'P1', '等价类划分'],
  529. ['TC-10-009', '全屏预警弹窗', '右侧监控画面区域样式正确显示', '正常场景',
  530. '预警弹窗已触发',
  531. '查看弹窗右侧视频区域',
  532. '标题"实时监控画面"+红色闪烁圆点,监控画面区域暗红色背景+扫描线纹理,左上角显示REC+摄像头名称',
  533. 'P1', '场景法'],
  534. ['TC-10-010', '全屏预警弹窗', '弹窗显示"应急疏散"按钮可正常点击', '正常场景',
  535. '预警弹窗已触发',
  536. '查看预警弹窗按钮区域',
  537. '弹窗内显示「应急疏散」按钮(琥珀色),可正常点击',
  538. 'P0', '场景法'],
  539. ['TC-10-011', '全屏预警弹窗', '点击确认按钮弹窗关闭恢复正常大屏', '正常场景',
  540. '预警弹窗已显示',
  541. '点击底部确认按钮',
  542. '弹窗关闭,红色覆盖层消失,恢复正常大屏展示',
  543. 'P0', '场景法'],
  544. ['TC-10-012', '全屏预警弹窗', '多实验室同时触发预警时弹窗按顺序逐一弹出', '异常场景',
  545. '模拟多个实验室同时触发预警',
  546. '观察弹窗弹出行为',
  547. '弹窗按优先级或时间顺序逐一弹出,不出现多窗口叠加错乱',
  548. 'P0', '错误推测法'],
  549. ['TC-10-013', '全屏预警弹窗', '弹窗期间传感器恢复正常时弹窗不自动关闭', '边界场景',
  550. '弹窗已触发,传感器数据快速恢复正常',
  551. '观察弹窗是否自动关闭',
  552. '弹窗不自动关闭,需用户手动操作',
  553. 'P1', '边界值分析'],
  554. // ===================================================
  555. // 模块11:应急疏散弹窗(新增模块)
  556. // ===================================================
  557. ['TC-11-001', '应急疏散弹窗', '点击「应急疏散」按钮弹出疏散弹窗层级正确', '正常场景',
  558. '预警弹窗已显示',
  559. '点击预警弹窗内的「应急疏散」按钮',
  560. '应急疏散弹窗全屏弹出,z-index高于预警弹窗,两层弹窗同时可见互不遮挡',
  561. 'P0', '场景法'],
  562. ['TC-11-002', '应急疏散弹窗', '弹窗进场动画流畅科幻风格与大屏主题一致', '正常场景',
  563. '应急疏散弹窗已打开',
  564. '观察弹窗进场动画效果和整体风格',
  565. '进场动画流畅无卡顿,深蓝科幻风格与大屏整体主题一致',
  566. 'P1', '场景法'],
  567. ['TC-11-003', '应急疏散弹窗', '点击关闭按钮仅关闭疏散弹窗预警弹窗保持', '正常场景',
  568. '应急疏散弹窗已打开',
  569. '点击右上角关闭按钮',
  570. '仅关闭应急疏散弹窗,底层全屏预警弹窗保持完整可见',
  571. 'P0', '场景法'],
  572. ['TC-11-004', '应急疏散弹窗', '疏散路线图显示箭头标识疏散路线方向正确', '正常场景',
  573. '应急疏散弹窗已打开',
  574. '查看弹窗内疏散路线图及箭头方向',
  575. '疏散路线图正确显示,箭头标识疏散方向清晰,符合设计图内容',
  576. 'P0', '场景法'],
  577. ['TC-11-005', '应急疏散弹窗', '弹窗内容及排版与设计图基本一致', '正常场景',
  578. '应急疏散弹窗已打开',
  579. '对比设计图与弹窗实际显示内容及排版',
  580. '弹窗内容及排版与设计图基本一致,各区域无错位遮挡',
  581. 'P0', '场景法'],
  582. ['TC-11-006', '应急疏散弹窗', '点击「执行疏散」按钮后显示疏散路线箭头', '正常场景',
  583. '应急疏散弹窗已显示,未点击执行疏散',
  584. '点击「执行疏散」按钮',
  585. '弹窗或图示上出现箭头标识疏散路线,路线清晰可辨',
  586. 'P0', '场景法'],
  587. ['TC-11-007', '应急疏散弹窗', '未点击执行疏散前不显示疏散路线箭头', '正常场景',
  588. '应急疏散弹窗已打开,未点击执行疏散',
  589. '查看疏散弹窗中图示内容',
  590. '疏散弹窗内图示不显示路线箭头',
  591. 'P1', '场景法'],
  592. ['TC-11-008', '应急疏散弹窗', '疏散弹窗可正常关闭并返回上层', '正常场景',
  593. '应急疏散弹窗已打开',
  594. '关闭应急疏散弹窗',
  595. '弹窗关闭后返回预警弹窗或正常大屏页面',
  596. 'P0', '场景法'],
  597. ['TC-11-009', '应急疏散弹窗', '关闭后再次点击应急疏散弹窗正常重新打开', '边界场景',
  598. '已打开并关闭应急疏散弹窗',
  599. '再次点击「应急疏散」按钮',
  600. '弹窗重新正常打开,状态重置(如输入框清空等)',
  601. 'P1', '边界值分析'],
  602. // ===================================================
  603. // 模块12:视频监控-建筑结构导航
  604. // ===================================================
  605. ['TC-12-001', '视频监控-建筑结构导航', '切换至视频监控页左侧导航正常显示', '正常场景',
  606. '点击顶部「视频监控」按钮',
  607. '查看左侧导航栏结构',
  608. '左侧300px导航栏正常显示,标题"建筑结构导航"可见,panel样式正确',
  609. 'P0', '场景法'],
  610. ['TC-12-002', '视频监控-建筑结构导航', '搜索框输入关键字实时过滤树节点', '正常场景',
  611. '视频监控页已显示',
  612. '在搜索框输入楼栋或楼层名称关键字',
  613. '树状结构实时显示包含关键字的节点,不匹配项隐藏或灰显',
  614. 'P0', '场景法'],
  615. ['TC-12-003', '视频监控-建筑结构导航', '搜索框聚焦时边框发光效果', '正常场景',
  616. '视频监控页已显示',
  617. '点击搜索框',
  618. '搜索框聚焦时边框出现发光效果',
  619. 'P2', '场景法'],
  620. ['TC-12-004', '视频监控-建筑结构导航', '下拉筛选可按二级单位过滤节点', '正常场景',
  621. '视频监控页已显示',
  622. '展开筛选下拉,选择某二级单位(如:化学品安全研究所)',
  623. '树状结构只显示属于该二级单位的楼栋/楼层/房间节点',
  624. 'P0', '等价类划分'],
  625. ['TC-12-005', '视频监控-建筑结构导航', '下拉筛选包含四个单位选项', '正常场景',
  626. '视频监控页已显示',
  627. '展开筛选下拉查看所有选项',
  628. '下拉包含:安全技术研究所、职业安全研究所、化学品安全研究所、矿山安全研究所四个选项',
  629. 'P1', '等价类划分'],
  630. ['TC-12-006', '视频监控-建筑结构导航', '树状结构四级层级可独立展开折叠', '正常场景',
  631. '视频监控页已显示',
  632. '逐级点击院区→楼栋→楼层→房间节点展开/折叠',
  633. '树状结构为四层:院区→楼栋→楼层→房间,每级可独立展开/折叠',
  634. 'P0', '流程分析法'],
  635. ['TC-12-007', '视频监控-建筑结构导航', '选中节点高亮(科技蓝背景+左侧竖线)', '正常场景',
  636. '视频监控页已显示',
  637. '点击某一树节点',
  638. '被点击节点高亮显示科技蓝背景和左侧蓝色竖线',
  639. 'P1', '场景法'],
  640. ['TC-12-008', '视频监控-建筑结构导航', '节点悬停光扫效果', '正常场景',
  641. '视频监控页已显示',
  642. '鼠标悬停在树节点上',
  643. '节点显示light sweep光扫效果',
  644. 'P2', '场景法'],
  645. ['TC-12-009', '视频监控-建筑结构导航', '子节点展开时有淡入动画(0.35s)', '正常场景',
  646. '视频监控页已显示',
  647. '点击展开有子节点的树节点',
  648. '子节点以0.35s淡入动画方式展开,动画流畅',
  649. 'P2', '场景法'],
  650. ['TC-12-010', '视频监控-建筑结构导航', '搜索无匹配时树状图显示无匹配结果提示', '异常场景',
  651. '视频监控页已显示',
  652. '输入无匹配的搜索关键词',
  653. '树状图显示"无匹配结果"提示,不出现空白区域',
  654. 'P1', '错误推测法'],
  655. ['TC-12-011', '视频监控-建筑结构导航', '搜索框清空后树状图恢复完整展示', '异常场景',
  656. '搜索框已有内容',
  657. '清空搜索框',
  658. '树状图恢复完整展示',
  659. 'P1', '场景法'],
  660. ['TC-12-012', '视频监控-建筑结构导航', '树状图仅1个根节点时折叠展开按钮不显示或置灰', '边界场景',
  661. '后台配置树状图仅1个根节点',
  662. '观察折叠/展开按钮状态',
  663. '折叠/展开按钮不显示或置灰',
  664. 'P2', '边界值分析'],
  665. // ===================================================
  666. // 模块13:视频监控-视频区域
  667. // ===================================================
  668. ['TC-13-001', '视频监控-视频区域', '3×3九宫格摄像头科幻风边框正常显示', '正常场景',
  669. '视频监控页已显示',
  670. '查看右侧视频区域九宫格',
  671. '3×3共9个摄像头格子均正常显示,科幻风格外层渐变背景+内外双层边框效果',
  672. 'P0', '场景法'],
  673. ['TC-13-002', '视频监控-视频区域', '面包屑显示当前路径(院区→楼栋→楼层)', '正常场景',
  674. '视频监控页已显示',
  675. '查看视频区域顶部面包屑',
  676. '面包屑显示:院区→楼栋名称→楼层名称,路径正确',
  677. 'P1', '场景法'],
  678. ['TC-13-003', '视频监控-视频区域', '摄像头格子四角L形发光装饰呼吸动画', '正常场景',
  679. '视频监控页已显示',
  680. '观察摄像头格子四角装饰效果',
  681. '四角L形发光装饰有呼吸动画(2.5s周期,stagger 0.6s),效果正常',
  682. 'P2', '场景法'],
  683. ['TC-13-004', '视频监控-视频区域', '每个摄像头左上角显示绿色闪烁圆点和编号', '正常场景',
  684. '视频监控页已显示',
  685. '查看每个摄像头格子左上角',
  686. '显示绿色闪烁圆点(2s周期)和摄像头编号',
  687. 'P1', '场景法'],
  688. ['TC-13-005', '视频监控-视频区域', '摄像头内扫描线动画6s周期', '正常场景',
  689. '视频监控页已显示',
  690. '观察摄像头内部动画效果',
  691. '摄像头内有扫描线动画,6s一个周期,循环运行',
  692. 'P2', '场景法'],
  693. ['TC-13-006', '视频监控-视频区域', '摄像头悬停时轻微放大+增强发光', '正常场景',
  694. '视频监控页已显示',
  695. '鼠标悬停在某个摄像头格子上',
  696. '摄像头格子轻微放大并增强发光效果',
  697. 'P2', '场景法'],
  698. ['TC-13-007', '视频监控-视频区域', '九宫格stagger入场动画每格延迟0.05s', '正常场景',
  699. '切换至视频监控页面',
  700. '观察视频页切换时九宫格入场动画',
  701. '9个格子依次以0.05s间隔stagger入场,动画流畅',
  702. 'P2', '场景法'],
  703. ['TC-13-008', '视频监控-视频区域', '每页第一个为AI智能摄像头橙金色主题', '正常场景',
  704. '视频监控页已显示',
  705. '查看第一个摄像头格子样式',
  706. '第一个格子使用橙金色主题替代蓝色,内部扫描线为橙色',
  707. 'P0', '等价类划分'],
  708. ['TC-13-009', '视频监控-视频区域', 'AI徽章显示「AI智能」渐变背景+脉冲动画', '正常场景',
  709. '视频监控页已显示',
  710. '查看AI摄像头右上角徽章',
  711. '"AI智能"徽章显示渐变背景,有脉冲动画(1.5s周期)',
  712. 'P1', '场景法'],
  713. ['TC-13-010', '视频监控-视频区域', '点击下一页切换摄像头组面包屑同步更新', '正常场景',
  714. '视频监控页已显示,存在多页(>9个摄像头)',
  715. '点击"下一页"按钮',
  716. '视频区域切换至下一页摄像头组,分页数字更新,面包屑信息同步',
  717. 'P0', '场景法'],
  718. ['TC-13-011', '视频监控-视频区域', '点击上一页切换至上一组摄像头', '正常场景',
  719. '视频监控页在非第一页',
  720. '点击"上一页"按钮',
  721. '视频区域切换至上一页摄像头组',
  722. 'P0', '场景法'],
  723. ['TC-13-012', '视频监控-视频区域', '第一页时上一页按钮禁用不可点击', '边界场景',
  724. '视频监控页在第一页',
  725. '查看"上一页"按钮状态',
  726. '第一页时"上一页"按钮不可点击或无响应',
  727. 'P1', '边界值分析'],
  728. ['TC-13-013', '视频监控-视频区域', '最后一页时下一页按钮禁用不可点击', '边界场景',
  729. '视频监控页在最后一页',
  730. '查看"下一页"按钮状态',
  731. '最后一页时"下一页"按钮不可点击或无响应',
  732. 'P1', '边界值分析'],
  733. ['TC-13-014', '视频监控-视频区域', '摄像头总数恰好9个时下一页按钮置灰', '边界场景',
  734. '后台配置摄像头总数为9',
  735. '观察翻页按钮状态',
  736. '下一页按钮置灰不可点击',
  737. 'P1', '边界值分析'],
  738. ['TC-13-015', '视频监控-视频区域', '摄像头总数为0时九宫格全部显示占位', '边界场景',
  739. '后台配置摄像头总数为0',
  740. '观察九宫格和翻页按钮状态',
  741. '九宫格全部显示"暂无信号"占位格,翻页按钮均置灰',
  742. 'P1', '边界值分析'],
  743. // ===================================================
  744. // 模块14:自适应缩放与全屏
  745. // ===================================================
  746. ['TC-14-001', '自适应缩放与全屏', '1920×1080分辨率下无缩放完整显示', '正常场景',
  747. '浏览器分辨率1920×1080全屏打开页面',
  748. '检查页面整体显示效果',
  749. '页面完整无缩放显示,无滚动条,1920×1080px完整呈现',
  750. 'P0', '场景法'],
  751. ['TC-14-002', '自适应缩放与全屏', '分辨率小于1920×1080时按比例缩放居中显示', '正常场景',
  752. '浏览器窗口缩小至非1920×1080',
  753. '调整浏览器窗口大小,观察页面缩放效果',
  754. '页面通过CSS scale等比缩放居中显示,不变形不溢出',
  755. 'P0', '场景法'],
  756. ['TC-14-003', '自适应缩放与全屏', 'resize事件实时更新缩放比无错位', '正常场景',
  757. '页面已加载',
  758. '拖动调整浏览器窗口大小',
  759. '缩放比实时计算更新(Math.min(vw/1920, vh/1080)),页面不出现错位',
  760. 'P0', '场景法'],
  761. ['TC-14-004', '自适应缩放与全屏', '首次点击页面触发全屏', '正常场景',
  762. '页面已加载,非全屏状态',
  763. '首次点击页面任意位置',
  764. '调用requestFullscreen()进入全屏模式',
  765. 'P1', '场景法'],
  766. ['TC-14-005', '自适应缩放与全屏', '全屏触发仅一次(once:true)', '边界场景',
  767. '页面已加载,已触发一次全屏',
  768. '再次点击页面',
  769. '不再重复触发requestFullscreen(),使用once:true确保只触发一次',
  770. 'P1', '边界值分析'],
  771. ['TC-14-006', '自适应缩放与全屏', '浏览器不支持全屏API时页面正常显示不报错', '异常场景',
  772. '使用不支持Fullscreen API的浏览器',
  773. '打开页面观察显示和错误',
  774. '页面正常显示,不出现白屏、黑屏或JS报错',
  775. 'P1', '错误推测法'],
  776. // ===================================================
  777. // 模块15:ECharts图表通用规范
  778. // ===================================================
  779. ['TC-15-001', 'ECharts图表通用', '所有图表Tooltip统一深色背景蓝色边框', '正常场景',
  780. '任意ECharts图表已渲染',
  781. '鼠标悬停在任意ECharts图表数据上',
  782. 'Tooltip背景为rgba(6,22,56,0.9),边框为蓝色,样式全局统一',
  783. 'P1', '等价类划分'],
  784. ['TC-15-002', 'ECharts图表通用', '窗口resize时所有图表自动调用resize', '正常场景',
  785. '页面已加载,所有图表已渲染',
  786. '调整浏览器窗口大小',
  787. '所有ECharts图表均自动调用.resize()方法,图表自适应新尺寸',
  788. 'P0', '场景法'],
  789. ['TC-15-003', 'ECharts图表通用', '图表初始化延迟200ms等待DOM渲染', '正常场景',
  790. '切换至实验室情况页',
  791. '观察图表渲染时序',
  792. '图表在DOM渲染后延迟200ms初始化,不出现容器尺寸获取错误',
  793. 'P1', '场景法'],
  794. ['TC-15-004', 'ECharts图表通用', '切回实验室页时ECharts延迟100ms重新初始化', '正常场景',
  795. '从视频监控页切换回实验室情况页',
  796. '切换页面观察图表状态',
  797. '延迟100ms后所有ECharts图表重新初始化并正确渲染,无白屏',
  798. 'P0', '场景法'],
  799. ['TC-15-005', 'ECharts图表通用', 'ECharts资源加载失败时图表区域显示占位块', '异常场景',
  800. '模拟ECharts资源加载失败',
  801. '观察图表区域响应',
  802. '对应图表区域显示"图表加载失败"占位块,不影响其他模块渲染',
  803. 'P0', '错误推测法'],
  804. // ===================================================
  805. // 模块16:全局样式与动效
  806. // ===================================================
  807. ['TC-16-001', '全局样式与动效', '主背景深蓝渐变正确显示', '正常场景',
  808. '页面已加载',
  809. '查看页面整体背景',
  810. '页面背景显示#020c1b→#061630→#0a2550深蓝渐变',
  811. 'P1', '场景法'],
  812. ['TC-16-002', '全局样式与动效', '面板背景毛玻璃效果正确渲染', '正常场景',
  813. '页面已加载',
  814. '查看各功能面板背景样式',
  815. '面板背景为rgba(6,22,56,0.82)配合backdrop-filter:blur(8px)毛玻璃效果',
  816. 'P1', '场景法'],
  817. ['TC-16-003', '全局样式与动效', '面板顶部2px渐变高亮线正确显示', '正常场景',
  818. '页面已加载',
  819. '查看各面板顶部边缘',
  820. '各面板顶部有2px渐变高亮线(accent色)',
  821. 'P2', '场景法'],
  822. ['TC-16-004', '全局样式与动效', '面板四角装饰元素3s呼吸动画', '正常场景',
  823. '页面已加载',
  824. '观察面板四角装饰效果',
  825. '各面板四角有corner-deco装饰元素,有3s周期呼吸动画',
  826. 'P2', '场景法'],
  827. ['TC-16-005', '全局样式与动效', '全局技术网格覆盖层正常显示', '正常场景',
  828. '页面已加载',
  829. '查看页面整体视觉效果',
  830. '页面有半透明技术网格覆盖层持续显示',
  831. 'P2', '场景法'],
  832. ['TC-16-006', '全局样式与动效', '浮动粒子效果20s周期正常运行', '正常场景',
  833. '页面已加载',
  834. '观察页面背景动效',
  835. '浮动粒子以20s周期漂浮,动效正常运行无卡顿',
  836. 'P2', '场景法'],
  837. ['TC-16-007', '全局样式与动效', '所有文字为中文简体无乱码', '正常场景',
  838. '页面已加载',
  839. '查看页面所有文本标签',
  840. '所有标签和文案均为简体中文,无英文混用或乱码',
  841. 'P1', '等价类划分'],
  842. ['TC-16-008', '全局样式与动效', '多动效同时运行时页面帧率流畅无卡顿', '异常场景',
  843. '系统正常运行,所有动效同时运行',
  844. '观察页面帧率和流畅度',
  845. '页面帧率保持流畅,无明显卡顿',
  846. 'P1', '错误推测法'],
  847. ['TC-16-009', '全局样式与动效', '页面持续运行8小时以上无内存泄漏退化', '边界场景',
  848. '系统正常运行超过8小时',
  849. '持续观察各实时刷新模块性能',
  850. '时钟、传感器数据、预警通知等模块不出现因内存泄漏导致的性能退化',
  851. 'P0', '边界值分析'],
  852. ];
  853. // ======================================================
  854. // 创建Excel工作簿(带样式)
  855. // ======================================================
  856. // 颜色常量
  857. const COLOR_HEADER = '000080'; // 标题行:海军蓝
  858. const COLOR_NORMAL = 'CCFFFF'; // 正常场景:浅青色
  859. const COLOR_ABNORMAL = 'FF99CC'; // 异常场景:浅粉红
  860. const COLOR_BOUNDARY = 'FFFF99'; // 边界场景:浅黄色
  861. function getRowColor(testType) {
  862. if (testType === '正常场景') return COLOR_NORMAL;
  863. if (testType === '异常场景') return COLOR_ABNORMAL;
  864. if (testType === '边界场景') return COLOR_BOUNDARY;
  865. return COLOR_NORMAL;
  866. }
  867. function makeCell(value, bgColor, isHeader) {
  868. const cell = { v: value === undefined || value === null ? '' : value, t: 's' };
  869. cell.s = {
  870. fill: {
  871. patternType: 'solid',
  872. fgColor: { rgb: bgColor },
  873. bgColor: { rgb: '000000' }
  874. },
  875. alignment: {
  876. wrapText: true,
  877. vertical: 'center'
  878. }
  879. };
  880. if (isHeader) {
  881. cell.s.font = { bold: true, color: { rgb: 'FFFFFF' } };
  882. }
  883. return cell;
  884. }
  885. const wb = XLSX.utils.book_new();
  886. const headers = ['用例编号', '模块名称', '测试场景', '测试类型',
  887. '前置条件', '测试操作', '预期结果', '优先级', '设计方法', '测试结果'];
  888. // 构建工作表数据
  889. const ws = {};
  890. const cols = ['A','B','C','D','E','F','G','H','I','J'];
  891. // 写入标题行
  892. headers.forEach((h, ci) => {
  893. const addr = cols[ci] + '1';
  894. ws[addr] = makeCell(h, COLOR_HEADER, true);
  895. });
  896. // 写入数据行
  897. testCases.forEach((row, ri) => {
  898. const excelRow = ri + 2;
  899. const testType = row[3]; // 测试类型
  900. const bgColor = getRowColor(testType);
  901. for (let ci = 0; ci < 10; ci++) {
  902. const addr = cols[ci] + excelRow;
  903. const val = row[ci] !== undefined ? row[ci] : '';
  904. ws[addr] = makeCell(val, bgColor, false);
  905. }
  906. });
  907. // 设置工作表范围
  908. ws['!ref'] = 'A1:J' + (testCases.length + 1);
  909. // 设置行高:标题行30pt,数据行25pt
  910. const rowHeights = [{ hpt: 30, hpx: 30 }];
  911. for (let i = 0; i < testCases.length; i++) {
  912. rowHeights.push({ hpt: 25, hpx: 25 });
  913. }
  914. ws['!rows'] = rowHeights;
  915. // 设置列宽
  916. ws['!cols'] = [
  917. { wch: 12 }, // 用例编号
  918. { wch: 20 }, // 模块名称
  919. { wch: 36 }, // 测试场景
  920. { wch: 10 }, // 测试类型
  921. { wch: 32 }, // 前置条件
  922. { wch: 40 }, // 测试操作
  923. { wch: 55 }, // 预期结果
  924. { wch: 8 }, // 优先级
  925. { wch: 12 }, // 设计方法
  926. { wch: 14 }, // 测试结果
  927. ];
  928. XLSX.utils.book_append_sheet(wb, ws, '测试用例');
  929. const outputPath = 'e:/anKeYuan-largeScreen-1080/test_case/test_case.xlsx';
  930. XLSX.writeFile(wb, outputPath, { cellStyles: true });
  931. console.log('✅ 文件已生成:' + outputPath);
  932. console.log('📊 共生成测试用例:' + testCases.length + ' 条');
  933. console.log('📋 模块分布:');
  934. const moduleStat = {};
  935. testCases.forEach(r => {
  936. moduleStat[r[1]] = (moduleStat[r[1]] || 0) + 1;
  937. });
  938. Object.entries(moduleStat).forEach(([mod, cnt]) => {
  939. console.log(' ' + mod + ': ' + cnt + ' 条');
  940. });