@umacloud/knowledge 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/00-governance/governance-capabilities.md +557 -0
  2. package/00-governance/knowledge-map.md +39 -0
  3. package/00-governance/maintenance-policy.md +76 -0
  4. package/00-governance/review-checklist.md +81 -0
  5. package/README.md +13 -0
  6. package/ai/01-standards/agent-development-complete.md +691 -0
  7. package/ai/01-standards/llm-application-complete.md +488 -0
  8. package/ai/01-standards/mlops-complete.md +798 -0
  9. package/ai/01-standards/prompt-engineering-complete.md +646 -0
  10. package/ai/01-standards/rag-architecture-complete.md +649 -0
  11. package/ai/02-playbooks/llm-evaluation-playbook.md +847 -0
  12. package/ai/03-checklists/ai-project-checklist.md +215 -0
  13. package/ai/04-antipatterns/ai-antipatterns.md +661 -0
  14. package/ai/05-cases/case-rag-production.md +147 -0
  15. package/ai/06-glossary/ai-glossary.md +162 -0
  16. package/ai/agent-evaluation-benchmark.md +53 -0
  17. package/ai/ai-agent-memory-context-management.md +41 -0
  18. package/ai/ai-cost-capacity-optimization-playbook.md +42 -0
  19. package/ai/ai-data-security-and-compliance-playbook.md +37 -0
  20. package/ai/ai-domain-index-and-checklist.md +40 -0
  21. package/ai/ai-governance-maturity-model.md +50 -0
  22. package/ai/ai-model-selection-and-routing-strategy.md +47 -0
  23. package/ai/ai-observability-and-oncall-runbook.md +52 -0
  24. package/ai/ai-rag-engineering-playbook.md +42 -0
  25. package/ai/ai-red-team-and-safety-evaluation.md +42 -0
  26. package/ai/ai-release-readiness-and-rollback-gate.md +42 -0
  27. package/ai/llm-agent-engineering-deep-dive.md +57 -0
  28. package/ai/prompt-and-tool-guardrails.md +52 -0
  29. package/api/01-standards/enterprise-api-standards.md +198 -0
  30. package/api/01-standards/rest-api-design-guide.md +63 -0
  31. package/api/02-playbooks/api-pagination-playbook.md +93 -0
  32. package/api/02-playbooks/graphql-production-playbook.md +176 -0
  33. package/api/03-checklists/api-review-checklist.md +55 -0
  34. package/api/04-antipatterns/api-antipatterns.md +112 -0
  35. package/architecture/01-standards/api-gateway-patterns.md +496 -0
  36. package/architecture/01-standards/cloud-native-patterns.md +644 -0
  37. package/architecture/01-standards/distributed-systems-patterns.md +591 -0
  38. package/architecture/01-standards/event-driven-architecture.md +595 -0
  39. package/architecture/01-standards/microservices-patterns-complete.md +968 -0
  40. package/architecture/01-standards/microservices-patterns.md +495 -0
  41. package/architecture/01-standards/system-design-interview.md +664 -0
  42. package/architecture/02-playbooks/microservices-patterns-playbook.md +137 -0
  43. package/architecture/02-playbooks/migration-playbook.md +780 -0
  44. package/architecture/02-playbooks/system-design-playbook.md +779 -0
  45. package/architecture/03-checklists/architecture-decision-checklist.md +297 -0
  46. package/architecture/04-antipatterns/architecture-antipatterns.md +417 -0
  47. package/architecture/05-cases/case-netflix-microservices.md +413 -0
  48. package/architecture/06-glossary/architecture-glossary.md +164 -0
  49. package/architecture/adr-template-and-examples.md +38 -0
  50. package/architecture/api-gateway-deep-dive.md +1291 -0
  51. package/architecture/configuration-management.md +1162 -0
  52. package/architecture/distributed-transactions.md +1220 -0
  53. package/architecture/microservices-complete.md +735 -0
  54. package/architecture/resilience-and-disaster-patterns.md +37 -0
  55. package/architecture/service-governance.md +1198 -0
  56. package/architecture/system-architecture-deep-dive.md +37 -0
  57. package/backend/01-standards/analytics-and-growth.md +65 -0
  58. package/backend/01-standards/api-and-error-conventions.md +120 -0
  59. package/backend/01-standards/application-layering-and-packaging.md +160 -0
  60. package/backend/01-standards/auth-implementation.md +104 -0
  61. package/backend/01-standards/backend-framework-idioms.md +74 -0
  62. package/backend/01-standards/background-jobs-and-async.md +66 -0
  63. package/backend/01-standards/caching-strategies-complete.md +390 -0
  64. package/backend/01-standards/config-and-observability.md +77 -0
  65. package/backend/01-standards/data-modeling-and-persistence.md +94 -0
  66. package/backend/01-standards/django-complete.md +1765 -0
  67. package/backend/01-standards/email-and-notifications.md +64 -0
  68. package/backend/01-standards/fastapi-complete.md +925 -0
  69. package/backend/01-standards/file-upload-and-storage.md +66 -0
  70. package/backend/01-standards/graphql-api-complete.md +416 -0
  71. package/backend/01-standards/llm-application-standard.md +78 -0
  72. package/backend/01-standards/message-queue-patterns.md +379 -0
  73. package/backend/01-standards/microservices-and-distributed.md +78 -0
  74. package/backend/01-standards/nestjs-complete.md +2167 -0
  75. package/backend/01-standards/payment-integration.md +80 -0
  76. package/backend/01-standards/rate-limiting-complete.md +451 -0
  77. package/backend/01-standards/realtime-and-websocket.md +65 -0
  78. package/backend/01-standards/search-and-filtering.md +64 -0
  79. package/backend/01-standards/spring-boot-complete.md +445 -0
  80. package/backend/02-playbooks/api-design-playbook.md +718 -0
  81. package/backend/02-playbooks/email-send-playbook.md +130 -0
  82. package/backend/02-playbooks/file-upload-s3-playbook.md +153 -0
  83. package/backend/02-playbooks/typescript-enterprise-playbook.md +133 -0
  84. package/backend/02-playbooks/websocket-realtime-playbook.md +154 -0
  85. package/backend/03-checklists/api-launch-checklist.md +189 -0
  86. package/backend/04-antipatterns/backend-antipatterns.md +1051 -0
  87. package/blockchain/01-standards/blockchain-basics.md +557 -0
  88. package/blockchain/01-standards/smart-contract-development.md +1315 -0
  89. package/cicd/01-standards/deployment-and-delivery-standard.md +96 -0
  90. package/cicd/01-standards/github-actions-complete.md +473 -0
  91. package/cicd/01-standards/release-and-store-submission.md +75 -0
  92. package/cicd/02-playbooks/cicd-pipeline-playbook.md +144 -0
  93. package/cicd/02-playbooks/release-management-playbook.md +605 -0
  94. package/cicd/03-checklists/pipeline-security-checklist.md +168 -0
  95. package/cicd/04-antipatterns/cicd-antipatterns.md +589 -0
  96. package/cicd/05-cases/case-deployment-automation.md +221 -0
  97. package/cicd/05-cases/case-gitops-transformation.md +212 -0
  98. package/cicd/06-glossary/cicd-glossary.md +114 -0
  99. package/cicd/cicd-blueprint-deep-dive.md +38 -0
  100. package/cicd/release-readiness-gate.md +37 -0
  101. package/cloud-native/01-standards/container-security.md +741 -0
  102. package/cloud-native/01-standards/kubernetes-complete.md +812 -0
  103. package/cloud-native/02-playbooks/api-gateway-playbook.md +155 -0
  104. package/cloud-native/02-playbooks/gitops-with-argocd.md +760 -0
  105. package/cloud-native/02-playbooks/k8s-troubleshooting-playbook.md +1942 -0
  106. package/cloud-native/02-playbooks/message-queue-playbook.md +129 -0
  107. package/cloud-native/02-playbooks/multicloud-governance.md +726 -0
  108. package/cloud-native/02-playbooks/serverless-patterns.md +788 -0
  109. package/cloud-native/02-playbooks/service-mesh-playbook.md +612 -0
  110. package/cloud-native/02-playbooks/terraform-iac-playbook.md +143 -0
  111. package/cloud-native/03-checklists/container-security-checklist.md +431 -0
  112. package/cloud-native/03-checklists/k8s-production-readiness-checklist.md +460 -0
  113. package/cloud-native/04-antipatterns/container-antipatterns.md +660 -0
  114. package/cloud-native/04-antipatterns/k8s-antipatterns.md +743 -0
  115. package/cloud-native/05-cases/case-k8s-migration.md +478 -0
  116. package/cloud-native/05-cases/case-k8s-scaling.md +642 -0
  117. package/cloud-native/05-cases/case-k8s-security-incident.md +397 -0
  118. package/cloud-native/06-glossary/cloud-native-glossary.md +337 -0
  119. package/cross-platform/01-standards/cross-platform-frameworks.md +83 -0
  120. package/cross-platform/01-standards/platform-selection-and-architecture.md +77 -0
  121. package/data/01-standards/elasticsearch-complete.md +2098 -0
  122. package/data/01-standards/postgresql-complete.md +1613 -0
  123. package/data/01-standards/redis-complete.md +1527 -0
  124. package/data/02-playbooks/database-optimization-playbook.md +403 -0
  125. package/data/02-playbooks/elasticsearch-production-playbook.md +132 -0
  126. package/data/03-checklists/database-launch-checklist.md +187 -0
  127. package/data/04-antipatterns/database-antipatterns.md +873 -0
  128. package/data/05-cases/case-database-migration.md +310 -0
  129. package/data/06-glossary/database-glossary.md +440 -0
  130. package/data/data-governance-and-modeling-deep-dive.md +39 -0
  131. package/data-engineering/01-standards/airflow-complete.md +523 -0
  132. package/data-engineering/01-standards/kafka-complete.md +1521 -0
  133. package/data-engineering/02-playbooks/spark-etl-playbook.md +496 -0
  134. package/data-engineering/03-checklists/pipeline-launch-checklist.md +194 -0
  135. package/data-engineering/04-antipatterns/data-pipeline-antipatterns.md +684 -0
  136. package/data-engineering/05-cases/case-real-time-pipeline.md +355 -0
  137. package/data-engineering/06-glossary/data-engineering-glossary.md +429 -0
  138. package/database/01-standards/database-schema-standards.md +147 -0
  139. package/database/02-playbooks/postgresql-optimization-quick.md +52 -0
  140. package/database/02-playbooks/postgresql-performance-optimization.md +58 -0
  141. package/database/02-playbooks/postgresql-production-playbook.md +146 -0
  142. package/database/02-playbooks/redis-caching-playbook.md +117 -0
  143. package/database/03-checklists/database-review-checklist.md +50 -0
  144. package/database/04-antipatterns/database-antipatterns.md +112 -0
  145. package/design/01-standards/ui-design-system-complete.md +423 -0
  146. package/design/02-playbooks/design-handoff-playbook.md +254 -0
  147. package/design/02-playbooks/design-review-playbook.md +388 -0
  148. package/design/03-checklists/design-review-checklist.md +246 -0
  149. package/design/04-antipatterns/design-antipatterns.md +378 -0
  150. package/design/05-cases/case-design-system-adoption.md +328 -0
  151. package/design/06-glossary/design-glossary.md +329 -0
  152. package/design/ui-full-lifecycle-cross-platform-playbook.md +571 -0
  153. package/design/ux-system-deep-dive.md +38 -0
  154. package/design-systems/00-craft-rules.md +71 -0
  155. package/design-systems/aesthetic-families.md +43 -0
  156. package/design-systems/anti-ai-slop.md +162 -0
  157. package/design-systems/bold-geometric.md +120 -0
  158. package/design-systems/brutalist-bold.md +103 -0
  159. package/design-systems/editorial-clean.md +109 -0
  160. package/design-systems/glass-aurora.md +108 -0
  161. package/design-systems/modern-minimal.md +145 -0
  162. package/design-systems/premium-luxury.md +106 -0
  163. package/design-systems/product-type-design-map.md +48 -0
  164. package/design-systems/soft-warm.md +123 -0
  165. package/design-systems/tech-utility.md +113 -0
  166. package/desktop/01-standards/desktop-app-standard.md +72 -0
  167. package/desktop/01-standards/desktop-design.md +71 -0
  168. package/development/00-governance/document-template.md +41 -0
  169. package/development/01-standards/api-versioning-strategies.md +432 -0
  170. package/development/01-standards/authentication-patterns-complete.md +479 -0
  171. package/development/01-standards/css-architecture-complete.md +550 -0
  172. package/development/01-standards/database-migration-strategies.md +484 -0
  173. package/development/01-standards/elasticsearch-complete.md +347 -0
  174. package/development/01-standards/git-complete.md +371 -0
  175. package/development/01-standards/golang-complete.md +1565 -0
  176. package/development/01-standards/graphql-complete.md +298 -0
  177. package/development/01-standards/javascript-bundlers-complete.md +469 -0
  178. package/development/01-standards/javascript-typescript-complete.md +528 -0
  179. package/development/01-standards/jest-complete.md +275 -0
  180. package/development/01-standards/linux-complete.md +234 -0
  181. package/development/01-standards/logging-observability-complete.md +526 -0
  182. package/development/01-standards/microservices-communication.md +502 -0
  183. package/development/01-standards/mongodb-complete.md +406 -0
  184. package/development/01-standards/oauth2-complete.md +285 -0
  185. package/development/01-standards/performance-optimization-complete.md +289 -0
  186. package/development/01-standards/playwright-complete.md +247 -0
  187. package/development/01-standards/postgresql-complete.md +456 -0
  188. package/development/01-standards/pytest-complete.md +340 -0
  189. package/development/01-standards/python-async-programming.md +902 -0
  190. package/development/01-standards/python-complete.md +956 -0
  191. package/development/01-standards/python-decorators-complete.md +799 -0
  192. package/development/01-standards/python-design-patterns.md +2854 -0
  193. package/development/01-standards/python-packaging-distribution.md +420 -0
  194. package/development/01-standards/python-testing-strategies.md +607 -0
  195. package/development/01-standards/python-web-frameworks-comparison.md +471 -0
  196. package/development/01-standards/redis-complete.md +317 -0
  197. package/development/01-standards/rest-api-complete.md +316 -0
  198. package/development/01-standards/rust-complete.md +578 -0
  199. package/development/01-standards/typescript-advanced-types.md +1513 -0
  200. package/development/01-standards/web-security-complete.md +292 -0
  201. package/development/02-playbooks/api-design-playbook.md +810 -0
  202. package/development/02-playbooks/database-migration-playbook.md +580 -0
  203. package/development/02-playbooks/debugging-playbook.md +692 -0
  204. package/development/02-playbooks/feature-delivery-playbook.md +430 -0
  205. package/development/02-playbooks/incident-hotfix-playbook.md +387 -0
  206. package/development/02-playbooks/performance-optimization-playbook.md +531 -0
  207. package/development/02-playbooks/performance-tuning-playbook.md +652 -0
  208. package/development/02-playbooks/refactor-playbook.md +403 -0
  209. package/development/02-playbooks/release-playbook.md +469 -0
  210. package/development/03-checklists/architecture-review-checklist.md +168 -0
  211. package/development/03-checklists/data-migration-checklist.md +157 -0
  212. package/development/03-checklists/oncall-handover-checklist.md +173 -0
  213. package/development/03-checklists/pr-checklist.md +158 -0
  214. package/development/03-checklists/production-readiness-checklist.md +190 -0
  215. package/development/03-checklists/release-readiness-checklist.md +154 -0
  216. package/development/03-checklists/security-review-checklist.md +182 -0
  217. package/development/04-antipatterns/api-antipatterns.md +657 -0
  218. package/development/04-antipatterns/architecture-antipatterns.md +686 -0
  219. package/development/04-antipatterns/backend-antipatterns.md +648 -0
  220. package/development/04-antipatterns/cicd-antipatterns.md +540 -0
  221. package/development/04-antipatterns/code-smell-antipatterns.md +571 -0
  222. package/development/04-antipatterns/data-antipatterns.md +658 -0
  223. package/development/04-antipatterns/database-antipatterns.md +578 -0
  224. package/development/04-antipatterns/frontend-antipatterns.md +635 -0
  225. package/development/04-antipatterns/reliability-antipatterns.md +700 -0
  226. package/development/04-antipatterns/security-antipatterns.md +747 -0
  227. package/development/05-cases/case-api-version-migration.md +428 -0
  228. package/development/05-cases/case-authorization-hardening.md +383 -0
  229. package/development/05-cases/case-bluegreen-rollback.md +466 -0
  230. package/development/05-cases/case-cache-snowball-protection.md +485 -0
  231. package/development/05-cases/case-ci-cd-pipeline.md +544 -0
  232. package/development/05-cases/case-database-scaling.md +500 -0
  233. package/development/05-cases/case-db-hotspot-optimization.md +487 -0
  234. package/development/05-cases/case-incident-mttr-reduction.md +563 -0
  235. package/development/05-cases/case-microservice-migration.md +375 -0
  236. package/development/05-cases/case-performance-optimization.md +406 -0
  237. package/development/05-cases/case-security-incident-response.md +345 -0
  238. package/development/06-glossary/full-stack-glossary.md +166 -0
  239. package/development/09-maturity/quarterly-audit-template.md +35 -0
  240. package/development/11-ui-excellence/ui-aesthetic-system.md +41 -0
  241. package/development/11-ui-excellence/ui-engineering-excellence.md +435 -0
  242. package/development/12-scenarios/development-scenarios-guide.md +565 -0
  243. package/development/13-implementation-assets/implementation-toolkit.md +282 -0
  244. package/development/13-implementation-assets/knowledge-gates-execution.md +43 -0
  245. package/development/14-full-lifecycle/software-lifecycle-gates.md +511 -0
  246. package/development/15-lifecycle-templates/project-templates-collection.md +791 -0
  247. package/development/api-contract-and-versioning-guide.md +36 -0
  248. package/development/api-governance-complete.md +43 -0
  249. package/development/backend-engineering-complete.md +43 -0
  250. package/development/code-review-quality-complete.md +43 -0
  251. package/development/concurrency-reliability-complete.md +43 -0
  252. package/development/database-engineering-complete.md +43 -0
  253. package/development/engineering-effectiveness-complete.md +43 -0
  254. package/development/engineering-standards-deep-dive.md +38 -0
  255. package/development/frontend-engineering-complete.md +43 -0
  256. package/development/performance-capacity-complete.md +43 -0
  257. package/development/refactor-migration-complete.md +42 -0
  258. package/development/refactoring-and-techdebt-playbook.md +37 -0
  259. package/development/security-in-development-complete.md +43 -0
  260. package/devops/01-standards/cicd-pipeline-complete.md +262 -0
  261. package/devops/01-standards/docker-complete.md +1490 -0
  262. package/devops/01-standards/github-actions-complete.md +337 -0
  263. package/devops/01-standards/kubernetes-complete.md +638 -0
  264. package/devops/01-standards/terraform-complete.md +2117 -0
  265. package/devops/02-playbooks/docker-compose-playbook.md +233 -0
  266. package/devops/02-playbooks/docker-k8s-production-playbook.md +186 -0
  267. package/devops/02-playbooks/docker-production-playbook.md +952 -0
  268. package/edge-iot/01-standards/edge-iot-complete.md +473 -0
  269. package/experts/architect/api-design.md +178 -0
  270. package/experts/architect/methodology.md +124 -0
  271. package/experts/architect/security.md +75 -0
  272. package/experts/backend-lead/methodology.md +216 -0
  273. package/experts/devops/methodology.md +160 -0
  274. package/experts/frontend-lead/methodology.md +178 -0
  275. package/experts/product-manager/industry/ecommerce.md +43 -0
  276. package/experts/product-manager/industry/saas.md +40 -0
  277. package/experts/product-manager/methodology.md +97 -0
  278. package/experts/qa-lead/methodology.md +123 -0
  279. package/experts/qa-lead/test-strategy.md +128 -0
  280. package/experts/uiux-designer/methodology.md +125 -0
  281. package/frontend/01-standards/accessibility-complete.md +532 -0
  282. package/frontend/01-standards/accessibility-standard.md +74 -0
  283. package/frontend/01-standards/admin-dashboard-and-crud.md +72 -0
  284. package/frontend/01-standards/design-tokens-complete.md +444 -0
  285. package/frontend/01-standards/forms-and-validation.md +77 -0
  286. package/frontend/01-standards/frontend-architecture-and-layering.md +119 -0
  287. package/frontend/01-standards/i18n-and-localization.md +65 -0
  288. package/frontend/01-standards/nextjs-complete.md +451 -0
  289. package/frontend/01-standards/react-complete.md +713 -0
  290. package/frontend/01-standards/react-hooks-complete-guide.md +1100 -0
  291. package/frontend/01-standards/react-hooks-complete.md +1171 -0
  292. package/frontend/01-standards/seo-and-web-vitals.md +77 -0
  293. package/frontend/01-standards/state-management-complete.md +444 -0
  294. package/frontend/01-standards/vue-complete.md +499 -0
  295. package/frontend/01-standards/vue3-complete.md +2002 -0
  296. package/frontend/01-standards/web-framework-best-practices.md +64 -0
  297. package/frontend/01-standards/web-performance-complete.md +495 -0
  298. package/frontend/02-playbooks/accessibility-a11y-playbook.md +161 -0
  299. package/frontend/02-playbooks/frontend-performance-playbook.md +707 -0
  300. package/frontend/02-playbooks/i18n-internationalization-playbook.md +120 -0
  301. package/frontend/02-playbooks/performance-optimization-playbook.md +163 -0
  302. package/frontend/02-playbooks/react-nextjs-production-playbook.md +167 -0
  303. package/frontend/02-playbooks/react-state-management-playbook.md +173 -0
  304. package/frontend/03-checklists/component-quality-checklist.md +166 -0
  305. package/frontend/03-checklists/frontend-launch-checklist.md +299 -0
  306. package/frontend/04-antipatterns/frontend-antipatterns.md +886 -0
  307. package/frontend/05-cases/case-performance-optimization.md +274 -0
  308. package/harmony/01-standards/harmonyos-arkts-standard.md +75 -0
  309. package/harmony/01-standards/harmonyos-design.md +65 -0
  310. package/high-quality-engineering-playbook.md +54 -0
  311. package/incident/01-standards/incident-response-complete.md +303 -0
  312. package/incident/02-playbooks/chaos-engineering-playbook.md +883 -0
  313. package/incident/02-playbooks/postmortem-playbook.md +398 -0
  314. package/incident/03-checklists/incident-readiness-checklist.md +181 -0
  315. package/incident/04-antipatterns/incident-antipatterns.md +490 -0
  316. package/incident/05-cases/case-cascade-failure.md +176 -0
  317. package/incident/06-glossary/incident-glossary.md +114 -0
  318. package/incident/postmortem-and-response-deep-dive.md +39 -0
  319. package/industries/ecommerce/ecommerce-complete.md +631 -0
  320. package/industries/education/education-complete.md +555 -0
  321. package/industries/fintech/fintech-complete.md +501 -0
  322. package/industries/gaming/gaming-complete.md +587 -0
  323. package/industries/healthcare/healthcare-complete.md +452 -0
  324. package/low-code/01-standards/low-code-complete.md +944 -0
  325. package/miniprogram/01-standards/ai-common-mistakes.md +61 -0
  326. package/miniprogram/01-standards/miniprogram-custom-navbar-capsule.md +77 -0
  327. package/miniprogram/01-standards/miniprogram-design.md +61 -0
  328. package/miniprogram/01-standards/miniprogram-standard.md +81 -0
  329. package/mobile/01-standards/android-material-design.md +70 -0
  330. package/mobile/01-standards/flutter-complete.md +384 -0
  331. package/mobile/01-standards/ios-design-hig.md +78 -0
  332. package/mobile/01-standards/mobile-app-standard.md +85 -0
  333. package/mobile/01-standards/react-native-complete.md +352 -0
  334. package/mobile/02-playbooks/mobile-cross-platform-playbook.md +175 -0
  335. package/mobile/02-playbooks/mobile-performance.md +473 -0
  336. package/mobile/03-checklists/mobile-release-checklist.md +234 -0
  337. package/mobile/04-antipatterns/mobile-antipatterns.md +798 -0
  338. package/mobile/05-cases/case-app-performance.md +500 -0
  339. package/mobile/05-cases/case-app-startup-optimization.md +218 -0
  340. package/mobile/06-glossary/mobile-glossary.md +484 -0
  341. package/observability/01-standards/observability-standards.md +103 -0
  342. package/observability/02-playbooks/prometheus-grafana-playbook.md +135 -0
  343. package/observability/02-playbooks/structured-logging-playbook.md +73 -0
  344. package/observability/03-checklists/observability-checklist.md +54 -0
  345. package/observability/04-antipatterns/observability-antipatterns.md +106 -0
  346. package/operations/01-standards/prometheus-monitoring-complete.md +1578 -0
  347. package/operations/02-playbooks/capacity-planning-playbook.md +620 -0
  348. package/operations/03-checklists/production-launch-checklist.md +365 -0
  349. package/operations/04-antipatterns/operations-antipatterns.md +664 -0
  350. package/operations/05-cases/case-sre-practices.md +581 -0
  351. package/operations/06-glossary/operations-glossary.md +120 -0
  352. package/operations/aiops-anomaly-detection.md +758 -0
  353. package/operations/capacity-planning.md +1061 -0
  354. package/operations/chaos-engineering.md +659 -0
  355. package/operations/incident-command-system.md +38 -0
  356. package/operations/observability-complete.md +442 -0
  357. package/operations/slo-sli-playbook.md +517 -0
  358. package/operations/sre-operations-deep-dive.md +39 -0
  359. package/package.json +8 -0
  360. package/performance/01-standards/performance-and-scalability.md +80 -0
  361. package/performance/01-standards/performance-standards.md +156 -0
  362. package/performance/02-playbooks/query-optimization-playbook.md +103 -0
  363. package/performance/03-checklists/performance-checklist.md +56 -0
  364. package/performance/04-antipatterns/performance-antipatterns.md +146 -0
  365. package/product/01-standards/product-management-complete.md +285 -0
  366. package/product/02-playbooks/feature-launch-playbook.md +207 -0
  367. package/product/02-playbooks/user-research-playbook.md +532 -0
  368. package/product/03-checklists/feature-launch-checklist.md +275 -0
  369. package/product/04-antipatterns/product-antipatterns.md +355 -0
  370. package/product/05-cases/case-mvp-to-scale.md +384 -0
  371. package/product/06-glossary/product-glossary.md +462 -0
  372. package/product/feature-prioritization-framework.md +40 -0
  373. package/product/kpi-and-metric-tree.md +37 -0
  374. package/product/product-discovery-and-prd-deep-dive.md +41 -0
  375. package/quantum/01-standards/quantum-complete.md +1186 -0
  376. package/security/01-standards/api-security-complete.md +511 -0
  377. package/security/01-standards/container-runtime-security.md +574 -0
  378. package/security/01-standards/data-protection-gdpr.md +543 -0
  379. package/security/01-standards/owasp-top10-complete.md +1890 -0
  380. package/security/01-standards/secure-coding-baseline.md +90 -0
  381. package/security/01-standards/supply-chain-security.md +441 -0
  382. package/security/01-standards/web-security-checklist.md +108 -0
  383. package/security/01-standards/zero-trust-architecture.md +521 -0
  384. package/security/02-playbooks/auth-sso-playbook.md +166 -0
  385. package/security/02-playbooks/incident-response-security-playbook.md +588 -0
  386. package/security/02-playbooks/owasp-api-security-playbook.md +129 -0
  387. package/security/02-playbooks/payment-integration-playbook.md +119 -0
  388. package/security/02-playbooks/penetration-testing-playbook.md +517 -0
  389. package/security/03-checklists/security-audit-checklist.md +356 -0
  390. package/security/04-antipatterns/security-coding-antipatterns.md +580 -0
  391. package/security/05-cases/case-log4shell-incident.md +537 -0
  392. package/security/05-cases/case-major-breaches.md +468 -0
  393. package/security/06-glossary/security-glossary.md +212 -0
  394. package/security/compliance-automation.md +993 -0
  395. package/security/container-security.md +680 -0
  396. package/security/devsecops-complete.md +426 -0
  397. package/security/sast-dast-sca.md +775 -0
  398. package/security/secrets-management.md +594 -0
  399. package/security/security-architecture-deep-dive.md +37 -0
  400. package/security/threat-modeling-stride-playbook.md +40 -0
  401. package/seed-templates/auth-system.md +59 -0
  402. package/seed-templates/blog-content.md +94 -0
  403. package/seed-templates/dashboard.md +89 -0
  404. package/seed-templates/docs-site.md +73 -0
  405. package/seed-templates/e-commerce.md +50 -0
  406. package/seed-templates/saas-landing.md +92 -0
  407. package/seed-templates/settings-page.md +51 -0
  408. package/testing/01-standards/test-strategy-and-layering.md +83 -0
  409. package/testing/01-standards/testing-strategy-complete.md +422 -0
  410. package/testing/01-standards/unit-testing-best-practices.md +118 -0
  411. package/testing/02-playbooks/e2e-testing-playbook.md +988 -0
  412. package/testing/02-playbooks/testing-strategy-playbook.md +126 -0
  413. package/testing/03-checklists/test-strategy-checklist.md +208 -0
  414. package/testing/04-antipatterns/testing-antipatterns.md +718 -0
  415. package/testing/05-cases/case-testing-transformation.md +300 -0
  416. package/testing/06-glossary/testing-glossary.md +110 -0
  417. package/testing/risk-based-test-matrix.md +36 -0
  418. package/testing/testing-strategy-deep-dive.md +37 -0
@@ -0,0 +1,607 @@
1
+ ---
2
+ id: python-testing-strategies
3
+ title: Python测试策略完整指南
4
+ domain: development
5
+ category: 01-standards
6
+ difficulty: intermediate
7
+ tags: [agent, checklist, development, python, strategies, testing, 实战代码示例, 常见陷阱]
8
+ quality_score: 70
9
+ last_updated: 2026-06-15
10
+ ---
11
+ # Python测试策略完整指南
12
+
13
+ ## 概述
14
+ Python测试是保障代码质量的核心环节。本指南覆盖pytest/unittest/mock/fixture/参数化/覆盖率/CI集成等完整测试体系,帮助团队建立从单元测试到集成测试的全链路质量保障。
15
+
16
+ ## 核心概念
17
+
18
+ ### 1. 测试金字塔
19
+ - **单元测试(70%)**: 测试最小功能单元,执行快、隔离性强
20
+ - **集成测试(20%)**: 测试模块间交互,验证组合行为
21
+ - **端到端测试(10%)**: 模拟真实用户行为,覆盖完整流程
22
+
23
+ ### 2. 测试框架选型
24
+
25
+ | 框架 | 优势 | 劣势 | 适用场景 |
26
+ |------|------|------|----------|
27
+ | pytest | 简洁、插件丰富、fixture强大 | 学习曲线稍高 | 推荐首选 |
28
+ | unittest | 标准库、兼容性好 | 样板代码多 | 遗留项目 |
29
+ | doctest | 文档即测试 | 功能有限 | 简单函数验证 |
30
+ | hypothesis | 属性测试、自动生成用例 | 理解成本高 | 边界探索 |
31
+
32
+ ### 3. 测试原则
33
+ - **FIRST**: Fast/Independent/Repeatable/Self-validating/Timely
34
+ - **AAA模式**: Arrange(准备) → Act(执行) → Assert(断言)
35
+ - **单一职责**: 每个测试只验证一个行为
36
+ - **测试隔离**: 测试间不应有顺序依赖
37
+
38
+ ## 实战代码示例
39
+
40
+ ### pytest基础用法
41
+
42
+ ```python
43
+ # tests/test_user_service.py
44
+ import pytest
45
+ from datetime import datetime
46
+ from app.services.user import UserService, UserNotFoundError
47
+
48
+ class TestUserService:
49
+ """用户服务测试"""
50
+
51
+ def test_create_user_success(self):
52
+ """测试成功创建用户"""
53
+ service = UserService()
54
+ user = service.create_user(
55
+ name="Alice",
56
+ email="alice@example.com"
57
+ )
58
+ assert user.name == "Alice"
59
+ assert user.email == "alice@example.com"
60
+ assert user.created_at is not None
61
+
62
+ def test_create_user_duplicate_email_raises(self):
63
+ """测试重复邮箱抛出异常"""
64
+ service = UserService()
65
+ service.create_user(name="Alice", email="alice@example.com")
66
+ with pytest.raises(ValueError, match="Email already exists"):
67
+ service.create_user(name="Bob", email="alice@example.com")
68
+
69
+ def test_get_user_not_found(self):
70
+ """测试用户不存在"""
71
+ service = UserService()
72
+ with pytest.raises(UserNotFoundError):
73
+ service.get_user(user_id=999)
74
+ ```
75
+
76
+ ### Fixture系统
77
+
78
+ ```python
79
+ # tests/conftest.py
80
+ import pytest
81
+ from unittest.mock import AsyncMock
82
+ from app.db import Database
83
+ from app.services.user import UserService
84
+ from app.models import User
85
+
86
+ @pytest.fixture
87
+ def db():
88
+ """提供测试数据库连接"""
89
+ database = Database(url="sqlite:///:memory:")
90
+ database.create_tables()
91
+ yield database
92
+ database.drop_tables()
93
+
94
+ @pytest.fixture
95
+ def user_service(db):
96
+ """提供注入了测试DB的用户服务"""
97
+ return UserService(db=db)
98
+
99
+ @pytest.fixture
100
+ def sample_user(user_service):
101
+ """提供预置测试用户"""
102
+ return user_service.create_user(
103
+ name="TestUser",
104
+ email="test@example.com"
105
+ )
106
+
107
+ @pytest.fixture(scope="session")
108
+ def app_config():
109
+ """会话级别配置,所有测试共享"""
110
+ return {
111
+ "db_url": "sqlite:///:memory:",
112
+ "secret_key": "test-secret",
113
+ "debug": True,
114
+ }
115
+
116
+ @pytest.fixture(autouse=True)
117
+ def reset_caches():
118
+ """每个测试自动清除缓存"""
119
+ yield
120
+ import app.cache
121
+ app.cache.clear_all()
122
+
123
+ # 异步fixture
124
+ @pytest.fixture
125
+ async def async_client():
126
+ """异步HTTP客户端"""
127
+ from httpx import AsyncClient
128
+ from app.main import app
129
+ async with AsyncClient(app=app, base_url="http://test") as client:
130
+ yield client
131
+ ```
132
+
133
+ ### 参数化测试
134
+
135
+ ```python
136
+ import pytest
137
+
138
+ # 基础参数化
139
+ @pytest.mark.parametrize("input_val,expected", [
140
+ ("hello", 5),
141
+ ("", 0),
142
+ ("hello world", 11),
143
+ (" ", 3),
144
+ ])
145
+ def test_string_length(input_val, expected):
146
+ assert len(input_val) == expected
147
+
148
+ # 多参数组合
149
+ @pytest.mark.parametrize("a,b,expected", [
150
+ (1, 2, 3),
151
+ (-1, 1, 0),
152
+ (0, 0, 0),
153
+ (100, -50, 50),
154
+ ])
155
+ def test_add(a, b, expected):
156
+ assert add(a, b) == expected
157
+
158
+ # ID标注提升可读性
159
+ @pytest.mark.parametrize("email,is_valid", [
160
+ pytest.param("user@example.com", True, id="normal-email"),
161
+ pytest.param("user@sub.domain.com", True, id="subdomain"),
162
+ pytest.param("invalid", False, id="no-at-sign"),
163
+ pytest.param("@example.com", False, id="no-local-part"),
164
+ pytest.param("user@", False, id="no-domain"),
165
+ pytest.param("", False, id="empty-string"),
166
+ ], ids=str)
167
+ def test_email_validation(email, is_valid):
168
+ assert validate_email(email) == is_valid
169
+
170
+ # 参数化fixture
171
+ @pytest.fixture(params=["sqlite", "postgresql", "mysql"])
172
+ def database_engine(request):
173
+ engine = create_engine(request.param)
174
+ yield engine
175
+ engine.dispose()
176
+ ```
177
+
178
+ ### Mock与Patch
179
+
180
+ ```python
181
+ from unittest.mock import Mock, patch, MagicMock, AsyncMock, call
182
+ import pytest
183
+
184
+ class TestPaymentService:
185
+
186
+ def test_process_payment_calls_gateway(self):
187
+ """验证支付流程调用了网关"""
188
+ gateway = Mock()
189
+ gateway.charge.return_value = {"status": "success", "tx_id": "abc123"}
190
+
191
+ service = PaymentService(gateway=gateway)
192
+ result = service.process_payment(amount=100, currency="USD")
193
+
194
+ gateway.charge.assert_called_once_with(
195
+ amount=100, currency="USD"
196
+ )
197
+ assert result["tx_id"] == "abc123"
198
+
199
+ def test_payment_retry_on_timeout(self):
200
+ """验证超时后重试逻辑"""
201
+ gateway = Mock()
202
+ gateway.charge.side_effect = [
203
+ TimeoutError("Gateway timeout"),
204
+ {"status": "success", "tx_id": "retry123"},
205
+ ]
206
+
207
+ service = PaymentService(gateway=gateway)
208
+ result = service.process_payment(amount=50, currency="EUR")
209
+
210
+ assert gateway.charge.call_count == 2
211
+ assert result["tx_id"] == "retry123"
212
+
213
+ @patch("app.services.payment.send_notification")
214
+ def test_sends_receipt_after_payment(self, mock_notify):
215
+ """验证支付后发送通知"""
216
+ gateway = Mock()
217
+ gateway.charge.return_value = {"status": "success"}
218
+
219
+ service = PaymentService(gateway=gateway)
220
+ service.process_payment(amount=200, currency="CNY")
221
+
222
+ mock_notify.assert_called_once()
223
+ args = mock_notify.call_args
224
+ assert args[1]["amount"] == 200
225
+
226
+ @patch("app.services.payment.datetime")
227
+ def test_payment_timestamp(self, mock_dt):
228
+ """Mock时间确保一致性"""
229
+ from datetime import datetime
230
+ mock_dt.now.return_value = datetime(2025, 1, 15, 10, 30, 0)
231
+ mock_dt.side_effect = lambda *a, **kw: datetime(*a, **kw)
232
+
233
+ gateway = Mock()
234
+ gateway.charge.return_value = {"status": "success"}
235
+ service = PaymentService(gateway=gateway)
236
+ result = service.process_payment(amount=100, currency="USD")
237
+
238
+ assert result["timestamp"] == "2025-01-15T10:30:00"
239
+
240
+ # 异步Mock
241
+ class TestAsyncService:
242
+
243
+ @pytest.mark.asyncio
244
+ async def test_async_fetch(self):
245
+ """测试异步HTTP调用"""
246
+ mock_client = AsyncMock()
247
+ mock_client.get.return_value = Mock(
248
+ status_code=200,
249
+ json=Mock(return_value={"data": "test"})
250
+ )
251
+
252
+ service = DataFetcher(client=mock_client)
253
+ result = await service.fetch("/api/data")
254
+
255
+ assert result == {"data": "test"}
256
+ mock_client.get.assert_awaited_once_with("/api/data")
257
+ ```
258
+
259
+ ### Hypothesis属性测试
260
+
261
+ ```python
262
+ from hypothesis import given, strategies as st, assume, settings
263
+
264
+ @given(st.lists(st.integers()))
265
+ def test_sort_preserves_length(xs):
266
+ """排序不改变列表长度"""
267
+ assert len(sorted(xs)) == len(xs)
268
+
269
+ @given(st.lists(st.integers(), min_size=1))
270
+ def test_sort_first_element_is_min(xs):
271
+ """排序后首元素为最小值"""
272
+ assert sorted(xs)[0] == min(xs)
273
+
274
+ @given(st.text(min_size=1, max_size=100))
275
+ def test_encode_decode_roundtrip(s):
276
+ """编解码往返一致性"""
277
+ encoded = encode(s)
278
+ decoded = decode(encoded)
279
+ assert decoded == s
280
+
281
+ @given(st.dictionaries(
282
+ keys=st.text(min_size=1, max_size=20),
283
+ values=st.integers(min_value=0, max_value=10000),
284
+ min_size=1,
285
+ ))
286
+ @settings(max_examples=200)
287
+ def test_cart_total_non_negative(items):
288
+ """购物车总价始终非负"""
289
+ cart = ShoppingCart(items)
290
+ assert cart.total() >= 0
291
+ ```
292
+
293
+ ### 测试覆盖率配置
294
+
295
+ ```ini
296
+ # pyproject.toml
297
+ [tool.pytest.ini_options]
298
+ testpaths = ["tests"]
299
+ python_files = ["test_*.py"]
300
+ python_classes = ["Test*"]
301
+ python_functions = ["test_*"]
302
+ addopts = "-v --tb=short --strict-markers"
303
+ markers = [
304
+ "slow: 标记为慢速测试",
305
+ "integration: 集成测试",
306
+ "e2e: 端到端测试",
307
+ ]
308
+ asyncio_mode = "auto"
309
+
310
+ [tool.coverage.run]
311
+ source = ["app"]
312
+ branch = true
313
+ omit = [
314
+ "*/tests/*",
315
+ "*/migrations/*",
316
+ "*/__main__.py",
317
+ ]
318
+
319
+ [tool.coverage.report]
320
+ fail_under = 80
321
+ show_missing = true
322
+ exclude_lines = [
323
+ "pragma: no cover",
324
+ "def __repr__",
325
+ "if __name__ == .__main__.",
326
+ "raise NotImplementedError",
327
+ "pass",
328
+ "if TYPE_CHECKING:",
329
+ ]
330
+ ```
331
+
332
+ ### CI集成示例
333
+
334
+ ```yaml
335
+ # .github/workflows/test.yml
336
+ name: Tests
337
+ on: [push, pull_request]
338
+
339
+ jobs:
340
+ test:
341
+ runs-on: ubuntu-latest
342
+ strategy:
343
+ matrix:
344
+ python-version: ["3.10", "3.11", "3.12"]
345
+ steps:
346
+ - uses: actions/checkout@v4
347
+ - uses: actions/setup-python@v5
348
+ with:
349
+ python-version: ${{ matrix.python-version }}
350
+ - name: Install dependencies
351
+ run: |
352
+ pip install -e ".[dev]"
353
+ - name: Run linting
354
+ run: ruff check .
355
+ - name: Run unit tests
356
+ run: pytest tests/unit/ -v --junitxml=junit.xml
357
+ - name: Run integration tests
358
+ run: pytest tests/integration/ -v --timeout=120
359
+ - name: Coverage report
360
+ run: |
361
+ pytest --cov=app --cov-report=xml --cov-report=term-missing
362
+ - uses: codecov/codecov-action@v4
363
+ with:
364
+ file: coverage.xml
365
+ ```
366
+
367
+ ### 测试数据工厂
368
+
369
+ ```python
370
+ # tests/factories.py
371
+ from dataclasses import dataclass, field
372
+ from datetime import datetime, timedelta
373
+ import uuid
374
+
375
+ @dataclass
376
+ class UserFactory:
377
+ """用户测试数据工厂"""
378
+ name: str = "Test User"
379
+ email: str = field(default_factory=lambda: f"user-{uuid.uuid4().hex[:8]}@test.com")
380
+ age: int = 25
381
+ is_active: bool = True
382
+ created_at: datetime = field(default_factory=datetime.now)
383
+
384
+ def build(self, **overrides) -> dict:
385
+ data = {
386
+ "name": self.name,
387
+ "email": self.email,
388
+ "age": self.age,
389
+ "is_active": self.is_active,
390
+ "created_at": self.created_at,
391
+ }
392
+ data.update(overrides)
393
+ return data
394
+
395
+ def build_batch(self, count: int, **overrides) -> list[dict]:
396
+ return [
397
+ self.build(
398
+ email=f"user-{i}-{uuid.uuid4().hex[:4]}@test.com",
399
+ **overrides
400
+ )
401
+ for i in range(count)
402
+ ]
403
+
404
+ # 使用
405
+ def test_bulk_import():
406
+ factory = UserFactory()
407
+ users = factory.build_batch(100, is_active=True)
408
+ result = user_service.bulk_import(users)
409
+ assert result.imported == 100
410
+ assert result.errors == 0
411
+ ```
412
+
413
+ ### 数据库测试模式
414
+
415
+ ```python
416
+ import pytest
417
+ from sqlalchemy import create_engine
418
+ from sqlalchemy.orm import sessionmaker
419
+ from app.models import Base
420
+
421
+ @pytest.fixture(scope="session")
422
+ def engine():
423
+ """创建测试数据库引擎"""
424
+ engine = create_engine("sqlite:///:memory:")
425
+ Base.metadata.create_all(engine)
426
+ yield engine
427
+ Base.metadata.drop_all(engine)
428
+
429
+ @pytest.fixture
430
+ def db_session(engine):
431
+ """每个测试使用独立事务并回滚"""
432
+ connection = engine.connect()
433
+ transaction = connection.begin()
434
+ session = sessionmaker(bind=connection)()
435
+
436
+ yield session
437
+
438
+ session.close()
439
+ transaction.rollback()
440
+ connection.close()
441
+
442
+ def test_create_order(db_session):
443
+ """测试创建订单(自动回滚)"""
444
+ order = Order(user_id=1, total=99.99)
445
+ db_session.add(order)
446
+ db_session.flush()
447
+
448
+ assert order.id is not None
449
+ assert db_session.query(Order).count() == 1
450
+ ```
451
+
452
+ ## 最佳实践
453
+
454
+ ### 1. 测试命名规范
455
+ - 文件: `test_<module>.py`
456
+ - 类: `Test<Feature>`
457
+ - 方法: `test_<action>_<scenario>_<expected_result>`
458
+ - 示例: `test_login_with_invalid_password_returns_401`
459
+
460
+ ### 2. 测试组织结构
461
+ ```
462
+ tests/
463
+ ├── conftest.py # 全局fixture
464
+ ├── factories.py # 数据工厂
465
+ ├── unit/ # 单元测试
466
+ │ ├── conftest.py
467
+ │ ├── test_models.py
468
+ │ └── test_services.py
469
+ ├── integration/ # 集成测试
470
+ │ ├── conftest.py
471
+ │ ├── test_api.py
472
+ │ └── test_database.py
473
+ └── e2e/ # 端到端测试
474
+ ├── conftest.py
475
+ └── test_workflows.py
476
+ ```
477
+
478
+ ### 3. Fixture作用域选择
479
+ - `function`(默认): 每个测试函数执行一次,最安全
480
+ - `class`: 每个测试类执行一次
481
+ - `module`: 每个模块执行一次
482
+ - `session`: 整个测试会话执行一次,适合昂贵资源
483
+
484
+ ### 4. Mock边界原则
485
+ - Mock外部依赖(HTTP/DB/文件系统/第三方API)
486
+ - 不Mock被测对象本身的内部方法
487
+ - 优先使用依赖注入而非patch
488
+ - Mock越少越好,过度Mock会降低测试价值
489
+
490
+ ### 5. 异步测试规范
491
+ - 使用`pytest-asyncio`插件
492
+ - fixture和测试函数都可以是async
493
+ - 设置`asyncio_mode = "auto"`简化标注
494
+
495
+ ## 常见陷阱
496
+
497
+ ### 陷阱1: 测试间状态泄漏
498
+ ```python
499
+ # 错误: 模块级可变状态
500
+ cache = {}
501
+
502
+ def test_a():
503
+ cache["key"] = "value"
504
+
505
+ def test_b():
506
+ assert "key" not in cache # 失败!cache未清理
507
+
508
+ # 正确: 使用fixture隔离
509
+ @pytest.fixture(autouse=True)
510
+ def clear_cache():
511
+ cache.clear()
512
+ yield
513
+ cache.clear()
514
+ ```
515
+
516
+ ### 陷阱2: 过度Mock导致测试无效
517
+ ```python
518
+ # 错误: Mock掉了所有东西,测试毫无意义
519
+ def test_process():
520
+ with patch("app.service.validate") as mock_v, \
521
+ patch("app.service.transform") as mock_t, \
522
+ patch("app.service.save") as mock_s:
523
+ mock_v.return_value = True
524
+ mock_t.return_value = {"data": "ok"}
525
+ mock_s.return_value = True
526
+ assert process(data) == True # 只在测试mock逻辑
527
+
528
+ # 正确: 只Mock外部边界
529
+ def test_process(db_session):
530
+ with patch("app.service.external_api.call") as mock_api:
531
+ mock_api.return_value = {"status": "ok"}
532
+ result = process(real_data, db=db_session)
533
+ assert result.saved_to_db == True
534
+ ```
535
+
536
+ ### 陷阱3: 忽略异常消息验证
537
+ ```python
538
+ # 错误: 只检查异常类型
539
+ def test_invalid_input():
540
+ with pytest.raises(ValueError):
541
+ process(None)
542
+
543
+ # 正确: 同时验证消息内容
544
+ def test_invalid_input():
545
+ with pytest.raises(ValueError, match="Input cannot be None"):
546
+ process(None)
547
+ ```
548
+
549
+ ### 陷阱4: 硬编码时间导致不稳定
550
+ ```python
551
+ # 错误: 依赖当前时间
552
+ def test_token_expiry():
553
+ token = create_token(ttl=3600)
554
+ assert token.expires_at > datetime.now() # 可能有微秒差异
555
+
556
+ # 正确: 冻结时间
557
+ from freezegun import freeze_time
558
+
559
+ @freeze_time("2025-01-15 10:00:00")
560
+ def test_token_expiry():
561
+ token = create_token(ttl=3600)
562
+ assert token.expires_at == datetime(2025, 1, 15, 11, 0, 0)
563
+ ```
564
+
565
+ ### 陷阱5: 测试文件路径硬编码
566
+ ```python
567
+ # 错误: 依赖绝对路径
568
+ def test_read_config():
569
+ config = load_config("/home/user/project/config.yaml")
570
+
571
+ # 正确: 使用tmp_path fixture
572
+ def test_read_config(tmp_path):
573
+ config_file = tmp_path / "config.yaml"
574
+ config_file.write_text("key: value")
575
+ config = load_config(str(config_file))
576
+ assert config["key"] == "value"
577
+ ```
578
+
579
+ ## Agent Checklist
580
+
581
+ ### 测试策略审查
582
+ - [ ] 测试金字塔比例合理(单元70%/集成20%/E2E 10%)
583
+ - [ ] 所有公开API有对应测试用例
584
+ - [ ] 错误路径和边界条件有测试覆盖
585
+ - [ ] 覆盖率达到项目阈值(通常≥80%)
586
+ - [ ] 分支覆盖已启用(branch=true)
587
+
588
+ ### 测试质量检查
589
+ - [ ] 测试命名清晰描述了被测行为
590
+ - [ ] 每个测试只验证一个行为点
591
+ - [ ] 测试间无顺序依赖和状态泄漏
592
+ - [ ] Mock仅用于外部依赖边界
593
+ - [ ] 参数化覆盖了正常/边界/异常场景
594
+
595
+ ### 测试基础设施
596
+ - [ ] conftest.py中定义共享fixture
597
+ - [ ] 数据库测试使用事务回滚隔离
598
+ - [ ] CI中运行完整测试套件
599
+ - [ ] 慢速测试有标记可跳过
600
+ - [ ] 异步测试使用pytest-asyncio
601
+
602
+ ### 持续改进
603
+ - [ ] 新功能必须附带测试
604
+ - [ ] Bug修复必须添加回归测试
605
+ - [ ] 定期清理过时和冗余测试
606
+ - [ ] 监控测试执行时间并优化慢测试
607
+ - [ ] 覆盖率报告集成到PR流程