@shaykec/bridge 0.4.25 → 0.4.26

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 (319) hide show
  1. package/journeys/ai-engineer.yaml +34 -0
  2. package/journeys/backend-developer.yaml +36 -0
  3. package/journeys/business-analyst.yaml +37 -0
  4. package/journeys/devops-engineer.yaml +37 -0
  5. package/journeys/engineering-manager.yaml +44 -0
  6. package/journeys/frontend-developer.yaml +41 -0
  7. package/journeys/fullstack-developer.yaml +49 -0
  8. package/journeys/mobile-developer.yaml +42 -0
  9. package/journeys/product-manager.yaml +35 -0
  10. package/journeys/qa-engineer.yaml +37 -0
  11. package/journeys/ux-designer.yaml +43 -0
  12. package/modules/README.md +52 -0
  13. package/modules/accessibility-fundamentals/content.md +126 -0
  14. package/modules/accessibility-fundamentals/exercises.md +88 -0
  15. package/modules/accessibility-fundamentals/module.yaml +43 -0
  16. package/modules/accessibility-fundamentals/quick-ref.md +71 -0
  17. package/modules/accessibility-fundamentals/quiz.md +100 -0
  18. package/modules/accessibility-fundamentals/resources.md +29 -0
  19. package/modules/accessibility-fundamentals/walkthrough.md +80 -0
  20. package/modules/adr-writing/content.md +121 -0
  21. package/modules/adr-writing/exercises.md +81 -0
  22. package/modules/adr-writing/module.yaml +41 -0
  23. package/modules/adr-writing/quick-ref.md +57 -0
  24. package/modules/adr-writing/quiz.md +73 -0
  25. package/modules/adr-writing/resources.md +29 -0
  26. package/modules/adr-writing/walkthrough.md +64 -0
  27. package/modules/ai-agents/content.md +120 -0
  28. package/modules/ai-agents/exercises.md +82 -0
  29. package/modules/ai-agents/module.yaml +42 -0
  30. package/modules/ai-agents/quick-ref.md +60 -0
  31. package/modules/ai-agents/quiz.md +103 -0
  32. package/modules/ai-agents/resources.md +30 -0
  33. package/modules/ai-agents/walkthrough.md +85 -0
  34. package/modules/ai-assisted-research/content.md +136 -0
  35. package/modules/ai-assisted-research/exercises.md +80 -0
  36. package/modules/ai-assisted-research/module.yaml +42 -0
  37. package/modules/ai-assisted-research/quick-ref.md +67 -0
  38. package/modules/ai-assisted-research/quiz.md +73 -0
  39. package/modules/ai-assisted-research/resources.md +33 -0
  40. package/modules/ai-assisted-research/walkthrough.md +85 -0
  41. package/modules/ai-pair-programming/content.md +105 -0
  42. package/modules/ai-pair-programming/exercises.md +98 -0
  43. package/modules/ai-pair-programming/module.yaml +39 -0
  44. package/modules/ai-pair-programming/quick-ref.md +58 -0
  45. package/modules/ai-pair-programming/quiz.md +73 -0
  46. package/modules/ai-pair-programming/resources.md +34 -0
  47. package/modules/ai-pair-programming/walkthrough.md +117 -0
  48. package/modules/ai-test-generation/content.md +125 -0
  49. package/modules/ai-test-generation/exercises.md +98 -0
  50. package/modules/ai-test-generation/module.yaml +39 -0
  51. package/modules/ai-test-generation/quick-ref.md +65 -0
  52. package/modules/ai-test-generation/quiz.md +74 -0
  53. package/modules/ai-test-generation/resources.md +41 -0
  54. package/modules/ai-test-generation/walkthrough.md +100 -0
  55. package/modules/api-design/content.md +189 -0
  56. package/modules/api-design/exercises.md +84 -0
  57. package/modules/api-design/game.yaml +113 -0
  58. package/modules/api-design/module.yaml +45 -0
  59. package/modules/api-design/quick-ref.md +73 -0
  60. package/modules/api-design/quiz.md +100 -0
  61. package/modules/api-design/resources.md +55 -0
  62. package/modules/api-design/walkthrough.md +88 -0
  63. package/modules/clean-code/content.md +136 -0
  64. package/modules/clean-code/exercises.md +137 -0
  65. package/modules/clean-code/game.yaml +172 -0
  66. package/modules/clean-code/module.yaml +44 -0
  67. package/modules/clean-code/quick-ref.md +44 -0
  68. package/modules/clean-code/quiz.md +105 -0
  69. package/modules/clean-code/resources.md +40 -0
  70. package/modules/clean-code/walkthrough.md +78 -0
  71. package/modules/clean-code/workshop.yaml +149 -0
  72. package/modules/code-review/content.md +130 -0
  73. package/modules/code-review/exercises.md +95 -0
  74. package/modules/code-review/game.yaml +83 -0
  75. package/modules/code-review/module.yaml +42 -0
  76. package/modules/code-review/quick-ref.md +77 -0
  77. package/modules/code-review/quiz.md +105 -0
  78. package/modules/code-review/resources.md +40 -0
  79. package/modules/code-review/walkthrough.md +106 -0
  80. package/modules/daily-workflow/content.md +81 -0
  81. package/modules/daily-workflow/exercises.md +50 -0
  82. package/modules/daily-workflow/module.yaml +33 -0
  83. package/modules/daily-workflow/quick-ref.md +37 -0
  84. package/modules/daily-workflow/quiz.md +65 -0
  85. package/modules/daily-workflow/resources.md +38 -0
  86. package/modules/daily-workflow/walkthrough.md +83 -0
  87. package/modules/debugging-systematically/content.md +139 -0
  88. package/modules/debugging-systematically/exercises.md +91 -0
  89. package/modules/debugging-systematically/module.yaml +46 -0
  90. package/modules/debugging-systematically/quick-ref.md +59 -0
  91. package/modules/debugging-systematically/quiz.md +105 -0
  92. package/modules/debugging-systematically/resources.md +42 -0
  93. package/modules/debugging-systematically/walkthrough.md +84 -0
  94. package/modules/debugging-systematically/workshop.yaml +127 -0
  95. package/modules/demo-test/content.md +68 -0
  96. package/modules/demo-test/exercises.md +28 -0
  97. package/modules/demo-test/game.yaml +171 -0
  98. package/modules/demo-test/module.yaml +41 -0
  99. package/modules/demo-test/quick-ref.md +54 -0
  100. package/modules/demo-test/quiz.md +74 -0
  101. package/modules/demo-test/resources.md +21 -0
  102. package/modules/demo-test/walkthrough.md +122 -0
  103. package/modules/demo-test/workshop.yaml +31 -0
  104. package/modules/design-critique/content.md +93 -0
  105. package/modules/design-critique/exercises.md +71 -0
  106. package/modules/design-critique/module.yaml +41 -0
  107. package/modules/design-critique/quick-ref.md +63 -0
  108. package/modules/design-critique/quiz.md +73 -0
  109. package/modules/design-critique/resources.md +27 -0
  110. package/modules/design-critique/walkthrough.md +68 -0
  111. package/modules/design-patterns/content.md +335 -0
  112. package/modules/design-patterns/exercises.md +82 -0
  113. package/modules/design-patterns/game.yaml +55 -0
  114. package/modules/design-patterns/module.yaml +45 -0
  115. package/modules/design-patterns/quick-ref.md +44 -0
  116. package/modules/design-patterns/quiz.md +101 -0
  117. package/modules/design-patterns/resources.md +40 -0
  118. package/modules/design-patterns/walkthrough.md +64 -0
  119. package/modules/exploratory-testing/content.md +133 -0
  120. package/modules/exploratory-testing/exercises.md +88 -0
  121. package/modules/exploratory-testing/module.yaml +41 -0
  122. package/modules/exploratory-testing/quick-ref.md +68 -0
  123. package/modules/exploratory-testing/quiz.md +75 -0
  124. package/modules/exploratory-testing/resources.md +39 -0
  125. package/modules/exploratory-testing/walkthrough.md +87 -0
  126. package/modules/git/content.md +128 -0
  127. package/modules/git/exercises.md +53 -0
  128. package/modules/git/game.yaml +190 -0
  129. package/modules/git/module.yaml +44 -0
  130. package/modules/git/quick-ref.md +67 -0
  131. package/modules/git/quiz.md +89 -0
  132. package/modules/git/resources.md +49 -0
  133. package/modules/git/walkthrough.md +92 -0
  134. package/modules/git/workshop.yaml +145 -0
  135. package/modules/hiring-interviews/content.md +130 -0
  136. package/modules/hiring-interviews/exercises.md +88 -0
  137. package/modules/hiring-interviews/module.yaml +41 -0
  138. package/modules/hiring-interviews/quick-ref.md +68 -0
  139. package/modules/hiring-interviews/quiz.md +73 -0
  140. package/modules/hiring-interviews/resources.md +36 -0
  141. package/modules/hiring-interviews/walkthrough.md +75 -0
  142. package/modules/hooks/content.md +97 -0
  143. package/modules/hooks/exercises.md +69 -0
  144. package/modules/hooks/module.yaml +39 -0
  145. package/modules/hooks/quick-ref.md +93 -0
  146. package/modules/hooks/quiz.md +81 -0
  147. package/modules/hooks/resources.md +34 -0
  148. package/modules/hooks/walkthrough.md +105 -0
  149. package/modules/hooks/workshop.yaml +64 -0
  150. package/modules/incident-response/content.md +124 -0
  151. package/modules/incident-response/exercises.md +82 -0
  152. package/modules/incident-response/game.yaml +132 -0
  153. package/modules/incident-response/module.yaml +45 -0
  154. package/modules/incident-response/quick-ref.md +53 -0
  155. package/modules/incident-response/quiz.md +103 -0
  156. package/modules/incident-response/resources.md +40 -0
  157. package/modules/incident-response/walkthrough.md +82 -0
  158. package/modules/llm-fundamentals/content.md +114 -0
  159. package/modules/llm-fundamentals/exercises.md +83 -0
  160. package/modules/llm-fundamentals/module.yaml +42 -0
  161. package/modules/llm-fundamentals/quick-ref.md +64 -0
  162. package/modules/llm-fundamentals/quiz.md +103 -0
  163. package/modules/llm-fundamentals/resources.md +30 -0
  164. package/modules/llm-fundamentals/walkthrough.md +91 -0
  165. package/modules/one-on-ones/content.md +133 -0
  166. package/modules/one-on-ones/exercises.md +81 -0
  167. package/modules/one-on-ones/module.yaml +44 -0
  168. package/modules/one-on-ones/quick-ref.md +67 -0
  169. package/modules/one-on-ones/quiz.md +73 -0
  170. package/modules/one-on-ones/resources.md +37 -0
  171. package/modules/one-on-ones/walkthrough.md +69 -0
  172. package/modules/package.json +9 -0
  173. package/modules/prioritization-frameworks/content.md +130 -0
  174. package/modules/prioritization-frameworks/exercises.md +93 -0
  175. package/modules/prioritization-frameworks/module.yaml +41 -0
  176. package/modules/prioritization-frameworks/quick-ref.md +77 -0
  177. package/modules/prioritization-frameworks/quiz.md +73 -0
  178. package/modules/prioritization-frameworks/resources.md +32 -0
  179. package/modules/prioritization-frameworks/walkthrough.md +69 -0
  180. package/modules/prompt-engineering/content.md +123 -0
  181. package/modules/prompt-engineering/exercises.md +82 -0
  182. package/modules/prompt-engineering/game.yaml +101 -0
  183. package/modules/prompt-engineering/module.yaml +45 -0
  184. package/modules/prompt-engineering/quick-ref.md +65 -0
  185. package/modules/prompt-engineering/quiz.md +105 -0
  186. package/modules/prompt-engineering/resources.md +36 -0
  187. package/modules/prompt-engineering/walkthrough.md +81 -0
  188. package/modules/rag-fundamentals/content.md +111 -0
  189. package/modules/rag-fundamentals/exercises.md +80 -0
  190. package/modules/rag-fundamentals/module.yaml +45 -0
  191. package/modules/rag-fundamentals/quick-ref.md +58 -0
  192. package/modules/rag-fundamentals/quiz.md +75 -0
  193. package/modules/rag-fundamentals/resources.md +34 -0
  194. package/modules/rag-fundamentals/walkthrough.md +75 -0
  195. package/modules/react-fundamentals/content.md +140 -0
  196. package/modules/react-fundamentals/exercises.md +81 -0
  197. package/modules/react-fundamentals/game.yaml +145 -0
  198. package/modules/react-fundamentals/module.yaml +45 -0
  199. package/modules/react-fundamentals/quick-ref.md +62 -0
  200. package/modules/react-fundamentals/quiz.md +106 -0
  201. package/modules/react-fundamentals/resources.md +42 -0
  202. package/modules/react-fundamentals/walkthrough.md +89 -0
  203. package/modules/react-fundamentals/workshop.yaml +112 -0
  204. package/modules/react-native-fundamentals/content.md +141 -0
  205. package/modules/react-native-fundamentals/exercises.md +79 -0
  206. package/modules/react-native-fundamentals/module.yaml +42 -0
  207. package/modules/react-native-fundamentals/quick-ref.md +60 -0
  208. package/modules/react-native-fundamentals/quiz.md +61 -0
  209. package/modules/react-native-fundamentals/resources.md +24 -0
  210. package/modules/react-native-fundamentals/walkthrough.md +84 -0
  211. package/modules/registry.yaml +1650 -0
  212. package/modules/risk-management/content.md +162 -0
  213. package/modules/risk-management/exercises.md +86 -0
  214. package/modules/risk-management/module.yaml +41 -0
  215. package/modules/risk-management/quick-ref.md +82 -0
  216. package/modules/risk-management/quiz.md +73 -0
  217. package/modules/risk-management/resources.md +40 -0
  218. package/modules/risk-management/walkthrough.md +67 -0
  219. package/modules/running-effective-standups/content.md +119 -0
  220. package/modules/running-effective-standups/exercises.md +79 -0
  221. package/modules/running-effective-standups/module.yaml +40 -0
  222. package/modules/running-effective-standups/quick-ref.md +61 -0
  223. package/modules/running-effective-standups/quiz.md +73 -0
  224. package/modules/running-effective-standups/resources.md +36 -0
  225. package/modules/running-effective-standups/walkthrough.md +76 -0
  226. package/modules/solid-principles/content.md +154 -0
  227. package/modules/solid-principles/exercises.md +107 -0
  228. package/modules/solid-principles/module.yaml +42 -0
  229. package/modules/solid-principles/quick-ref.md +50 -0
  230. package/modules/solid-principles/quiz.md +102 -0
  231. package/modules/solid-principles/resources.md +39 -0
  232. package/modules/solid-principles/walkthrough.md +84 -0
  233. package/modules/sprint-planning/content.md +142 -0
  234. package/modules/sprint-planning/exercises.md +79 -0
  235. package/modules/sprint-planning/game.yaml +84 -0
  236. package/modules/sprint-planning/module.yaml +44 -0
  237. package/modules/sprint-planning/quick-ref.md +76 -0
  238. package/modules/sprint-planning/quiz.md +102 -0
  239. package/modules/sprint-planning/resources.md +39 -0
  240. package/modules/sprint-planning/walkthrough.md +75 -0
  241. package/modules/sql-fundamentals/content.md +160 -0
  242. package/modules/sql-fundamentals/exercises.md +87 -0
  243. package/modules/sql-fundamentals/game.yaml +105 -0
  244. package/modules/sql-fundamentals/module.yaml +45 -0
  245. package/modules/sql-fundamentals/quick-ref.md +53 -0
  246. package/modules/sql-fundamentals/quiz.md +103 -0
  247. package/modules/sql-fundamentals/resources.md +42 -0
  248. package/modules/sql-fundamentals/walkthrough.md +92 -0
  249. package/modules/sql-fundamentals/workshop.yaml +109 -0
  250. package/modules/stakeholder-communication/content.md +186 -0
  251. package/modules/stakeholder-communication/exercises.md +87 -0
  252. package/modules/stakeholder-communication/module.yaml +38 -0
  253. package/modules/stakeholder-communication/quick-ref.md +89 -0
  254. package/modules/stakeholder-communication/quiz.md +73 -0
  255. package/modules/stakeholder-communication/resources.md +41 -0
  256. package/modules/stakeholder-communication/walkthrough.md +74 -0
  257. package/modules/system-design/content.md +149 -0
  258. package/modules/system-design/exercises.md +83 -0
  259. package/modules/system-design/game.yaml +95 -0
  260. package/modules/system-design/module.yaml +46 -0
  261. package/modules/system-design/quick-ref.md +59 -0
  262. package/modules/system-design/quiz.md +102 -0
  263. package/modules/system-design/resources.md +46 -0
  264. package/modules/system-design/walkthrough.md +90 -0
  265. package/modules/team-topologies/content.md +166 -0
  266. package/modules/team-topologies/exercises.md +85 -0
  267. package/modules/team-topologies/module.yaml +41 -0
  268. package/modules/team-topologies/quick-ref.md +61 -0
  269. package/modules/team-topologies/quiz.md +101 -0
  270. package/modules/team-topologies/resources.md +37 -0
  271. package/modules/team-topologies/walkthrough.md +76 -0
  272. package/modules/technical-debt/content.md +111 -0
  273. package/modules/technical-debt/exercises.md +92 -0
  274. package/modules/technical-debt/module.yaml +39 -0
  275. package/modules/technical-debt/quick-ref.md +60 -0
  276. package/modules/technical-debt/quiz.md +73 -0
  277. package/modules/technical-debt/resources.md +25 -0
  278. package/modules/technical-debt/walkthrough.md +94 -0
  279. package/modules/technical-mentoring/content.md +128 -0
  280. package/modules/technical-mentoring/exercises.md +84 -0
  281. package/modules/technical-mentoring/module.yaml +41 -0
  282. package/modules/technical-mentoring/quick-ref.md +74 -0
  283. package/modules/technical-mentoring/quiz.md +73 -0
  284. package/modules/technical-mentoring/resources.md +33 -0
  285. package/modules/technical-mentoring/walkthrough.md +65 -0
  286. package/modules/test-strategy/content.md +136 -0
  287. package/modules/test-strategy/exercises.md +84 -0
  288. package/modules/test-strategy/game.yaml +99 -0
  289. package/modules/test-strategy/module.yaml +45 -0
  290. package/modules/test-strategy/quick-ref.md +66 -0
  291. package/modules/test-strategy/quiz.md +99 -0
  292. package/modules/test-strategy/resources.md +60 -0
  293. package/modules/test-strategy/walkthrough.md +97 -0
  294. package/modules/test-strategy/workshop.yaml +96 -0
  295. package/modules/typescript-fundamentals/content.md +127 -0
  296. package/modules/typescript-fundamentals/exercises.md +79 -0
  297. package/modules/typescript-fundamentals/game.yaml +111 -0
  298. package/modules/typescript-fundamentals/module.yaml +45 -0
  299. package/modules/typescript-fundamentals/quick-ref.md +55 -0
  300. package/modules/typescript-fundamentals/quiz.md +104 -0
  301. package/modules/typescript-fundamentals/resources.md +42 -0
  302. package/modules/typescript-fundamentals/walkthrough.md +71 -0
  303. package/modules/typescript-fundamentals/workshop.yaml +146 -0
  304. package/modules/user-story-mapping/content.md +123 -0
  305. package/modules/user-story-mapping/exercises.md +87 -0
  306. package/modules/user-story-mapping/module.yaml +41 -0
  307. package/modules/user-story-mapping/quick-ref.md +64 -0
  308. package/modules/user-story-mapping/quiz.md +73 -0
  309. package/modules/user-story-mapping/resources.md +29 -0
  310. package/modules/user-story-mapping/walkthrough.md +86 -0
  311. package/modules/writing-prds/content.md +133 -0
  312. package/modules/writing-prds/exercises.md +93 -0
  313. package/modules/writing-prds/game.yaml +83 -0
  314. package/modules/writing-prds/module.yaml +44 -0
  315. package/modules/writing-prds/quick-ref.md +77 -0
  316. package/modules/writing-prds/quiz.md +103 -0
  317. package/modules/writing-prds/resources.md +30 -0
  318. package/modules/writing-prds/walkthrough.md +87 -0
  319. package/package.json +1 -1
@@ -0,0 +1,64 @@
1
+ # Design Patterns Walkthrough — Learn by Doing
2
+
3
+ ## Step 1: Strategy in Practice
4
+
5
+ **Task:** Implement a `PaymentProcessor` that can use different payment strategies (CreditCard, PayPal, Crypto). The processor should accept a strategy and delegate the `pay(amount)` call.
6
+
7
+ **Question:** What would you need to change to add Apple Pay? Would you edit the processor or add a new strategy class?
8
+
9
+ **Checkpoint:** The user has a working strategy setup and understands open/closed extension.
10
+
11
+ ---
12
+
13
+ ## Step 2: Factory for Object Creation
14
+
15
+ **Task:** Create a `NotificationFactory` that returns the right notification type (Email, SMS, Push) based on a string or enum. The factory encapsulates the `if/switch` logic.
16
+
17
+ **Question:** Where should configuration (e.g., API keys for each channel) live — inside the factory, or passed in? What are the tradeoffs?
18
+
19
+ **Checkpoint:** The user has a factory that returns typed instances based on input.
20
+
21
+ ---
22
+
23
+ ## Step 3: Observer for Event Handling
24
+
25
+ **Task:** Build a simple `Subject` class: `subscribe(callback)`, `unsubscribe(callback)`, `notify(data)`. Use it to let a "form" notify "validators" and "analytics" when the user submits.
26
+
27
+ **Question:** What happens if a subscriber throws? How might you make the observer more robust?
28
+
29
+ **Checkpoint:** The user has a working pub-sub and multiple subscribers.
30
+
31
+ ---
32
+
33
+ ## Step 4: Decorator for Layered Behavior
34
+
35
+ <!-- hint:code language="javascript" highlight="1,3" -->
36
+
37
+ **Task:** Create a `Logger` interface with `log(msg)`. Implement `ConsoleLogger`. Then create `TimestampDecorator` and `LevelDecorator` that wrap a logger and add behavior. Compose them: `TimestampDecorator(LevelDecorator(ConsoleLogger))`.
38
+
39
+ **Question:** What order should decorators be applied? Does it matter?
40
+
41
+ **Checkpoint:** The user can stack decorators and explain composition order.
42
+
43
+ ---
44
+
45
+ ## Step 5: Adapter for Legacy Code
46
+
47
+ **Task:** You have a function `fetchData(callback)` that uses callbacks. Create an adapter so it can be used with `async/await` or returns a Promise.
48
+
49
+ **Question:** Does the adapter change the behavior of the legacy code, or just its interface?
50
+
51
+ **Checkpoint:** The user can wrap a callback API in a Promise-based interface.
52
+
53
+ ---
54
+
55
+ ## Step 6: When *Not* to Use a Pattern
56
+
57
+ <!-- hint:buttons type="single" prompt="For a simple utility function, which applies?" options="Singleton,Factory,Strategy,No pattern" -->
58
+ <!-- hint:card type="concept" title="YAGNI: You Aren't Gonna Need It" -->
59
+
60
+ **Task:** Consider a small feature (e.g., a utility function). Would Singleton, Factory, or Strategy apply? If not, explain why. "No pattern" is a valid answer.
61
+
62
+ **Question:** What's the cost of over-applying patterns? When does YAGNI trump pattern elegance?
63
+
64
+ **Checkpoint:** The user can articulate when patterns add value vs unnecessary complexity.
@@ -0,0 +1,133 @@
1
+ # Exploratory Testing — Structured Discovery of Bugs
2
+
3
+ <!-- hint:slides topic="Exploratory testing: exploratory vs scripted, session-based test management, charters, SFDPOT heuristic, and note-taking" slides="5" -->
4
+
5
+ ## Exploratory vs Scripted Testing
6
+
7
+ **Scripted testing**: Follow predefined steps. Repeatable, good for regressions.
8
+ **Exploratory testing**: Simultaneous learning, test design, and execution. You explore based on what you discover. Ideal for finding unknown unknowns.
9
+
10
+ They complement each other. Use scripted tests for known risks; use exploratory for discovery.
11
+
12
+ ## Session-Based Test Management (SBTM)
13
+
14
+ James Bach's framework structures exploratory testing into **time-boxed sessions** with clear charters and debriefs.
15
+
16
+ ### Session Structure
17
+
18
+ - **Charter**: What to explore (1–2 sentences).
19
+ - **Time box**: 60–90 minutes typical.
20
+ - **Uninterrupted focus**: No meetings, minimal context switching.
21
+ - **Notes**: Log what you tried, found, and questions.
22
+ - **Debrief**: Summary for the team.
23
+
24
+ ```mermaid
25
+ flowchart TD
26
+ A[Define charter] --> B[Start timer]
27
+ B --> C[Explore: try, observe, note]
28
+ C --> D{Time up or scope done?}
29
+ D -->|No| C
30
+ D -->|Yes| E[End session]
31
+ E --> F[Debrief: findings, risks, bugs]
32
+ F --> G[Create bug reports]
33
+ ```
34
+
35
+ ## Test Charters
36
+
37
+ A charter guides exploration without prescribing steps. Format:
38
+
39
+ > **Explore** [target] **with** [resources/tools] **to discover** [information].
40
+
41
+ ### Examples
42
+
43
+ - Explore the checkout flow with a test credit card to discover payment failure handling.
44
+ - Explore the search feature with various input lengths to discover how results are truncated.
45
+ - Explore the profile page with different user roles to discover permission gaps.
46
+
47
+ Charters give direction but not instructions. You decide *how* to explore.
48
+
49
+ ## SFDPOT — A Heuristic for Coverage
50
+
51
+ Elisabeth Hendrickson's **SFDPOT** helps ensure you don't miss areas:
52
+
53
+ | Letter | Area | Questions |
54
+ |--------|------|-----------|
55
+ | **S** | Structure | UI layout, navigation, menus, links |
56
+ | **F** | Function | Features work as stated? |
57
+ | **D** | Data | Valid, invalid, boundary, empty, special chars |
58
+ | **P** | Platform | Browsers, OS, devices, screen sizes |
59
+ | **O** | Operations | Install, upgrade, backup, config |
60
+ | **T** | Time | Delays, timeouts, dates, concurrent users |
61
+
62
+ Use SFDPOT to generate charter ideas: "Explore [Structure] of the dashboard to discover layout bugs on narrow viewports."
63
+
64
+ ## Note-Taking During Sessions
65
+
66
+ Capture:
67
+
68
+ - **What you did**: Steps, inputs, paths.
69
+ - **What you observed**: Bugs, odd behavior, questions.
70
+ - **Ideas**: New charters, areas to revisit.
71
+
72
+ Keep notes lightweight: bullet points, timestamps, screenshots. A session report template:
73
+
74
+ ```
75
+ Charter: Explore X with Y to discover Z
76
+ Time: 14:00–15:30
77
+ Tester: [name]
78
+
79
+ Exploration notes:
80
+ - Tried A → observed B
81
+ - Bug: [brief description]
82
+ - Question: [unresolved]
83
+
84
+ Bugs found: 2
85
+ Risks: [areas of concern]
86
+ ```
87
+
88
+ ## Bug Reporting
89
+
90
+ Good bug reports have:
91
+
92
+ - **Title**: One-line summary.
93
+ - **Steps to reproduce**: Numbered, precise.
94
+ - **Expected vs actual**: What should happen vs what did.
95
+ - **Environment**: Browser, OS, version.
96
+ - **Screenshots/videos**: When helpful.
97
+ - **Severity**: Impact and frequency.
98
+
99
+ ```
100
+ Title: Search returns no results when query contains &
101
+ Steps: 1. Go to /search. 2. Enter "A&B Corp". 3. Click Search.
102
+ Expected: Results for "A&B Corp"
103
+ Actual: "No results found"
104
+ Env: Chrome 120, MacOS
105
+ ```
106
+
107
+ ## Debrief Sessions
108
+
109
+ After exploration, share:
110
+
111
+ - **Findings**: Bugs, risks, positive discoveries.
112
+ - **Coverage**: What you did and didn't cover.
113
+ - **Charters for next time**: Unfinished areas.
114
+ - **Blockers**: What stopped you (e.g., missing access).
115
+
116
+ Debriefs turn individual exploration into team learning.
117
+
118
+ ## Combining Exploratory with Automated Testing
119
+
120
+ - **Before release**: Exploratory sessions on new features.
121
+ - **After automation**: Exploratory to find what automation misses (UX, edge cases, integration quirks).
122
+ - **Charters from automation gaps**: "Explore areas with low e2e coverage to discover risks."
123
+
124
+ ---
125
+
126
+ ## Key Takeaways
127
+
128
+ 1. **Exploratory = learning + designing + executing** — not ad-hoc clicking.
129
+ 2. **SBTM** — time-boxed sessions with charters and debriefs.
130
+ 3. **Charters** — "Explore X with Y to discover Z" — guide without scripting.
131
+ 4. **SFDPOT** — heuristic for broad coverage.
132
+ 5. **Notes and debriefs** — make exploration visible and actionable.
133
+ 6. **Combine** exploratory with automated tests for balanced quality.
@@ -0,0 +1,88 @@
1
+ # Exploratory Testing Exercises
2
+
3
+ ## Exercise 1: Charter Writing Practice
4
+
5
+ **Task:** Write 3 test charters for a "User Profile" page that allows editing name, avatar, and notification preferences. Use the format: Explore [target] with [resources] to discover [information]. Make each charter focus on a different aspect (e.g., Structure, Data, Function).
6
+
7
+ **Validation:**
8
+ - [ ] Each charter has target, resources, and discovery goal
9
+ - [ ] Charters are distinct (not redundant)
10
+ - [ ] Charters are specific enough to guide a 30–60 min session
11
+
12
+ **Hints:**
13
+ 1. Vary the "with" — different data, different roles, different devices
14
+ 2. Vary the "discover" — bugs, UX, performance, accessibility
15
+ 3. One charter per SFDPOT area is a good spread
16
+
17
+ ---
18
+
19
+ ## Exercise 2: SFDPOT Coverage Analysis
20
+
21
+ **Task:** For an app you've tested (or a hypothetical one), list which SFDPOT areas you typically cover and which you skip. For one skipped area, write a charter that would address it.
22
+
23
+ **Validation:**
24
+ - [ ] Identifies at least 2 often-skipped areas
25
+ - [ ] Explains why they're skipped (time, habit, tooling)
26
+ - [ ] One charter targets a gap
27
+
28
+ **Hints:**
29
+ 1. Platform (P) and Time (T) are commonly skipped
30
+ 2. Operations (O) — install, upgrade, config — often forgotten
31
+ 3. "We never test on Safari" → Platform charter
32
+
33
+ ---
34
+
35
+ ## Exercise 3: Session Notes to Bug Report
36
+
37
+ **Task:** You have these raw session notes:
38
+
39
+ - Clicked "Add to cart" 3 times quickly → cart showed 1 item
40
+ - Tried empty search → spinner forever
41
+ - Pasted 5000 chars in "Notes" → UI froze for 2 sec
42
+
43
+ Convert one of these into a proper bug report (title, steps, expected, actual, environment).
44
+
45
+ **Validation:**
46
+ - [ ] Title is concise and descriptive
47
+ - [ ] Steps are reproducible (someone else could follow them)
48
+ - [ ] Expected vs actual is clear
49
+ - [ ] Environment is specified
50
+
51
+ **Hints:**
52
+ 1. "3 times quickly" — how quick? Add timing if relevant
53
+ 2. "5000 chars" — exact count or range helps
54
+ 3. Include browser/OS if it might matter
55
+
56
+ ---
57
+
58
+ ## Exercise 4: Debrief Summary
59
+
60
+ **Task:** After a hypothetical session on a "Password reset" flow, you found: (1) Email validation allows "test@"; (2) Reset link expires after 5 min but error says "invalid"; (3) Success message appears before email is actually sent. Write a 5-bullet debrief summary for your team.
61
+
62
+ **Validation:**
63
+ - [ ] Bugs are listed clearly
64
+ - [ ] Risks or patterns are noted (e.g., "validation inconsistent")
65
+ - [ ] Next steps or charters suggested
66
+ - [ ] Tone is factual, not blaming
67
+
68
+ **Hints:**
69
+ 1. Group related issues (e.g., "error messaging")
70
+ 2. Prioritize: what's critical vs nice-to-fix
71
+ 3. Suggest: "Charter for email delivery and expiration edge cases"
72
+
73
+ ---
74
+
75
+ ## Exercise 5: Exploratory + Automation Plan
76
+
77
+ **Task:** A "Drag-and-drop file upload" feature is new. You have 2 hours. Propose a plan: how much time for exploratory vs writing/reviewing automated tests? What charters? What would you automate?
78
+
79
+ **Validation:**
80
+ - [ ] Exploratory time is allocated first (discovery before automation)
81
+ - [ ] At least 2 charters for exploratory
82
+ - [ ] Automation targets are clear (e.g., "happy path upload")
83
+ - [ ] Rationale for the split
84
+
85
+ **Hints:**
86
+ 1. Exploratory finds edge cases; automate the obvious happy path
87
+ 2. File types, sizes, network failures — exploratory
88
+ 3. "Upload valid file, see in list" — automate
@@ -0,0 +1,41 @@
1
+ slug: exploratory-testing
2
+ title: "Exploratory Testing — Structured Discovery of Bugs"
3
+ version: 1.0.0
4
+ description: "Learn session-based exploratory testing, test charters, and heuristics to find bugs systematically."
5
+ category: quality-assurance
6
+ tags: [exploratory-testing, manual-testing, bug-hunting, quality, test-charters]
7
+ difficulty: intermediate
8
+
9
+ xp:
10
+ read: 15
11
+ walkthrough: 40
12
+ exercise: 25
13
+ quiz: 20
14
+ quiz-perfect-bonus: 10
15
+
16
+ time:
17
+ quick: 5
18
+ read: 20
19
+ guided: 50
20
+
21
+ prerequisites: [test-strategy]
22
+ related: [debugging-systematically, accessibility-fundamentals]
23
+
24
+ triggers:
25
+ - "What is exploratory testing?"
26
+ - "How do I find bugs without a test plan?"
27
+ - "What are test charters?"
28
+ - "How do I do structured manual testing?"
29
+
30
+ visuals:
31
+ diagrams: [diagram-flow, diagram-mermaid]
32
+ quiz-types: [quiz-drag-order, quiz-timed-choice]
33
+ slides: true
34
+
35
+ sources:
36
+ - url: "https://www.amazon.com/Explore-It-Reduce-Risk-Exploratory/dp/1937785025"
37
+ label: "Explore It! by Elisabeth Hendrickson (book)"
38
+ type: book
39
+ - url: "https://www.satisfice.com/download/session-based-test-management"
40
+ label: "Session-Based Test Management (James Bach)"
41
+ type: docs
@@ -0,0 +1,68 @@
1
+ # Exploratory Testing Quick Reference
2
+
3
+ ## Charter Format
4
+
5
+ ```
6
+ Explore [target] with [resources] to discover [information]
7
+ ```
8
+
9
+ ## SFDPOT Heuristic
10
+
11
+ | Letter | Area | Example Focus |
12
+ |--------|------|---------------|
13
+ | S | Structure | UI, navigation, layout |
14
+ | F | Function | Features, behavior |
15
+ | D | Data | Valid, invalid, bounds, empty |
16
+ | P | Platform | Browsers, OS, devices |
17
+ | O | Operations | Install, upgrade, config |
18
+ | T | Time | Delays, timeouts, concurrency |
19
+
20
+ ## SBTM Session Flow
21
+
22
+ ```
23
+ Charter → Timer → Explore (try, observe, note) → End → Debrief
24
+ ```
25
+
26
+ ## Session Notes Template
27
+
28
+ ```
29
+ Charter: ...
30
+ Time: ...
31
+ Tester: ...
32
+
33
+ Exploration: [what you did, what you saw]
34
+ Bugs: [list]
35
+ Risks: [concerns]
36
+ Next charters: [ideas]
37
+ ```
38
+
39
+ ## Bug Report Checklist
40
+
41
+ - [ ] Title (one line)
42
+ - [ ] Steps to reproduce (numbered)
43
+ - [ ] Expected vs actual
44
+ - [ ] Environment (browser, OS)
45
+ - [ ] Screenshots/video (when helpful)
46
+
47
+ ## Debrief Outline
48
+
49
+ - Findings (bugs, risks)
50
+ - Coverage (what was/wasn't tested)
51
+ - Next charters
52
+ - Blockers
53
+
54
+ ## Exploratory vs Scripted
55
+
56
+ | Exploratory | Scripted |
57
+ |-------------|----------|
58
+ | Learn + design + execute | Follow predefined steps |
59
+ | Discovery, unknowns | Regression, known risks |
60
+ | Charters guide | Test cases define |
61
+ | Debrief shares learning | Results are pass/fail |
62
+
63
+ ## One-Liners
64
+
65
+ - **Charter**: Guide, don't prescribe.
66
+ - **SFDPOT**: Don't skip Platform, Time, or Operations.
67
+ - **Debrief**: Turn exploration into team learning.
68
+ - **Combine**: Exploratory finds gaps; automation locks in coverage.
@@ -0,0 +1,75 @@
1
+ # Exploratory Testing Quiz
2
+
3
+ ## Question 1
4
+
5
+ What is the main difference between exploratory and scripted testing?
6
+
7
+ A) Exploratory is faster; scripted is more thorough
8
+ B) Exploratory combines learning, design, and execution; scripted follows predefined steps
9
+ C) Exploratory is only for manual testers; scripted is for automation
10
+ D) There is no real difference
11
+
12
+ <!-- ANSWER: B -->
13
+ <!-- EXPLANATION: Exploratory testing involves simultaneous learning about the product, designing tests on the fly, and executing them. Scripted testing follows a predefined test plan with fixed steps. Both can be manual or involve tools. -->
14
+
15
+ ## Question 2
16
+
17
+ What is a test charter?
18
+
19
+ A) A formal test plan with detailed steps
20
+ B) A short directive that guides exploration: Explore X with Y to discover Z
21
+ C) A list of all bugs found in a session
22
+ D) A tool used for automation
23
+
24
+ <!-- ANSWER: B -->
25
+ <!-- EXPLANATION: A test charter is a brief mission statement that gives direction without prescribing exact steps. It guides what to explore, with what resources, and what information to discover. -->
26
+
27
+ ## Question 3
28
+
29
+ What does SFDPOT stand for?
30
+
31
+ A) A test automation framework
32
+ B) A heuristic for test coverage: Structure, Function, Data, Platform, Operations, Time
33
+ C) A bug severity classification
34
+ D) A type of test charter
35
+
36
+ <!-- ANSWER: B -->
37
+ <!-- EXPLANATION: SFDPOT is a heuristic by Elisabeth Hendrickson to ensure broad coverage across structure, function, data, platform, operations, and time—areas that are easy to overlook. -->
38
+
39
+ ## Question 4
40
+
41
+ Why is a debrief valuable after an exploratory session?
42
+
43
+ A) It's required by process
44
+ B) It turns individual findings into shared learning, context, and next steps
45
+ C) It replaces bug reports
46
+ D) It's only for managers
47
+
48
+ <!-- ANSWER: B -->
49
+ <!-- EXPLANATION: Debriefs summarize findings, risks, coverage, and ideas for future charters. They add context and priorities that raw bug reports don't capture, and help the team decide what to do next. -->
50
+
51
+ ## Question 5
52
+
53
+ What should a good bug report include?
54
+
55
+ A) Only a title and severity
56
+ B) Steps to reproduce, expected vs actual, environment, and screenshots when helpful
57
+ C) Opinions about the developer's code
58
+ D) Only the actual behavior
59
+
60
+ <!-- ANSWER: B -->
61
+ <!-- EXPLANATION: A good bug report enables someone else to reproduce the issue. It needs clear steps, expected vs actual behavior, environment details, and visual evidence when useful. -->
62
+
63
+ ## Question 6
64
+
65
+ Drag these SBTM session steps into the correct order:
66
+
67
+ <!-- VISUAL: quiz-drag-order -->
68
+
69
+ A) Define charter → Start timer → Explore → End session → Debrief
70
+ B) Explore → Debrief → Define charter → Start timer
71
+ C) Start timer → Explore → Define charter → Debrief
72
+ D) Debrief → Explore → Define charter → End session
73
+
74
+ <!-- ANSWER: A -->
75
+ <!-- EXPLANATION: In Session-Based Test Management, you first define a charter, then start the time box, explore, end when time is up or scope is done, and finally debrief to share findings. -->
@@ -0,0 +1,39 @@
1
+ # Exploratory Testing — Resources
2
+
3
+ ## Books
4
+
5
+ - **Explore It! Reduce Risk and Increase Confidence with Exploratory Testing** by Elisabeth Hendrickson — Charters, heuristics, and practical techniques. The go-to book on exploratory testing.
6
+ - **Session-Based Test Management** (PDF) by Jonathan Bach & James Bach — The original SBTM paper. Time-boxed sessions, charters, debriefs.
7
+ - **Lessons Learned in Software Testing** by Cem Kaner, James Bach, Bret Pettichord — Context-driven testing, exploratory mindset.
8
+
9
+ ## Articles
10
+
11
+ - [Session-Based Test Management](https://www.satisfice.com/download/session-based-test-management) — James Bach. Original SBTM methodology.
12
+ - [Exploratory Testing Explained](https://www.ministryoftesting.com/articles/exploratory-testing-explained) — Ministry of Testing. Clear introduction.
13
+ - [How to Use SFDPOT Heuristic](https://www.developsense.com/blog/2010/02/sfdpot/) — Michael Bolton. Applying SFDPOT in practice.
14
+ - [Heuristic Test Strategy Model](https://www.satisfice.com/download/heuristic-test-strategy-model) — James Bach. Broader model for test design.
15
+
16
+ ## Videos
17
+
18
+ - [Exploratory Testing — Elisabeth Hendrickson](https://www.youtube.com/watch?v=7LsS9Yl0NDg) — Keynote on exploration and charters.
19
+ - [Session-Based Testing — James Bach](https://www.youtube.com/watch?v=4QdR0Mdt-cs) — SBTM in practice.
20
+ - [Ministry of Testing — Exploratory Testing](https://www.youtube.com/results?search_query=ministry+of+testing+exploratory) — Various talks and workshops.
21
+
22
+ ## Communities
23
+
24
+ - [Ministry of Testing](https://www.ministryoftesting.com/) — Community, articles, TestBash conferences.
25
+ - [Software Testing Stack Exchange](https://sqa.stackexchange.com/) — Q&A on testing topics.
26
+ - [Association for Software Testing](https://www.associationforsoftwaretesting.org/) — Conferences, workshops, BBST courses.
27
+
28
+ ## Tools
29
+
30
+ - [Session Tester](https://www.sessiontester.com/) — Session tracking and charter management.
31
+ - [Rapid Reporter](https://www.theconnective.co.uk/rapid-reporter/) — Lightweight note-taking during sessions.
32
+ - [Azure DevOps / Jira](https://www.atlassian.com/software/jira) — Bug tracking integrated with charters and sessions.
33
+ - [OBS Studio](https://obsproject.com/) — Screen recording for bug reports and session evidence.
34
+
35
+ ## Quick References
36
+
37
+ - [SFDPOT Cheat Sheet](https://www.developsense.com/blog/2010/02/sfdpot/) — One-page SFDPOT reminder.
38
+ - [Charter Template](https://www.ministryoftesting.com/articles/writing-exploratory-testing-charters) — Examples and templates.
39
+ - [Bug Report Template](https://www.atlassian.com/software/jira/guides/getting-started/best-practices) — Jira best practices for bug reports.
@@ -0,0 +1,87 @@
1
+ # Exploratory Testing Walkthrough — Learn by Doing
2
+
3
+ ## Before We Begin
4
+
5
+ **Diagnostic Question:** What's the difference between "running tests" and "exploratory testing"? When would you choose one over the other?
6
+
7
+ **Checkpoint:** You recognize that scripted tests verify known behavior, while exploratory testing discovers what you don't yet know. Both matter; they serve different purposes.
8
+
9
+ ---
10
+
11
+ ## Step 1: Write a Test Charter
12
+
13
+ <!-- hint:list style="checklist" -->
14
+
15
+ You're about to explore a new "Export to CSV" feature. The feature lets users export a filtered list of orders.
16
+
17
+ **Task:** Write a test charter for this feature using the format: "Explore [target] with [resources] to discover [information]."
18
+
19
+ **Question:** What makes a charter too narrow vs too broad? How would you know when you're "done" with this charter?
20
+
21
+ **Checkpoint:** User writes a charter like "Explore the Export to CSV feature with various filter combinations to discover data accuracy and format issues." They understand narrow = prescriptive; broad = vague. Done when time box ends or key areas covered.
22
+
23
+ ---
24
+
25
+ ## Step 2: Use SFDPOT to Generate Charters
26
+
27
+ <!-- hint:card type="concept" title="SFDPOT" -->
28
+
29
+ Pick a feature you know: e.g., a login form, a search bar, or a settings page.
30
+
31
+ **Task:** For each letter of SFDPOT, write one charter idea. You don't have to execute them—just generate possibilities. (Example for F: "Explore the Function of the login form with invalid credentials to discover error messages.")
32
+
33
+ **Question:** Which SFDPOT areas do you usually skip when testing? Why might that hide bugs?
34
+
35
+ **Checkpoint:** User produces 6 charter ideas. They reflect on often-skipped areas (often Platform, Time, Operations) and recognize these can hide real issues.
36
+
37
+ ---
38
+
39
+ ## Step 3: Conduct a Mini Session
40
+
41
+ <!-- hint:buttons type="single" prompt="How did having a charter change your exploration?" options="Focused my attention,Made it rigid,No difference" -->
42
+
43
+ Pick any web app or tool you can access (e.g., a todo app, a calculator). Set a 10-minute timer.
44
+
45
+ **Task:** Run a mini exploratory session. Charter: "Explore [pick one area] with [a constraint] to discover [something]." Take notes as you go: what you tried, what you saw, any bugs or questions.
46
+
47
+ **Question:** How did having a charter change your exploration compared to "just clicking around"?
48
+
49
+ **Checkpoint:** User completes a short session with notes. They notice the charter focused their attention; they found at least one observation (bug or quirk) they might have missed without structure.
50
+
51
+ ---
52
+
53
+ ## Step 4: Write a Bug Report
54
+
55
+ Suppose during exploration you found: When you paste a long URL into a "Share link" field, the Save button does nothing and no error appears.
56
+
57
+ **Task:** Write a bug report with: title, steps to reproduce, expected vs actual, and environment. Aim for clarity so a developer can reproduce it without talking to you.
58
+
59
+ **Question:** What's the risk of writing "sometimes it doesn't work" without clear steps?
60
+
61
+ **Checkpoint:** User writes numbered steps, clear expected/actual, and environment. They understand vague reports waste time and block fixes.
62
+
63
+ ---
64
+
65
+ ## Step 5: Plan a Debrief
66
+
67
+ You've just finished a 90-minute session on a checkout flow. You found 2 bugs and noticed the "Apply coupon" field behaves oddly with special characters.
68
+
69
+ **Task:** Outline what you'd cover in a 10-minute debrief. What would you tell the team? What would you ask for?
70
+
71
+ **Question:** Why is a debrief valuable even if you've already filed bug reports?
72
+
73
+ **Checkpoint:** User lists: bugs found, risks (coupon field), coverage (what was/wasn't tested), suggested next charters, blockers. They see debrief adds context, priorities, and ideas for follow-up that raw bug reports don't.
74
+
75
+ ---
76
+
77
+ ## Step 6: Combine Exploratory with Automation
78
+
79
+ <!-- hint:diagram mermaid-type="flowchart" topic="exploratory and automation workflow" -->
80
+
81
+ Your team has good e2e coverage for happy paths. A new "Bulk actions" feature was just added.
82
+
83
+ **Task:** Propose how exploratory and automated testing could work together. When would you run exploratory? What charters might fill gaps that automation won't cover?
84
+
85
+ **Question:** What kinds of bugs does automation typically miss that exploratory can find?
86
+
87
+ **Checkpoint:** User suggests: exploratory first on new feature to find risks, then automate critical paths. Automation misses UX quirks, odd input combinations, cross-browser issues, performance under load—exploratory can target those with charters.