J
James Bach
satisfice.com · Personal blog · on HN since 2008
James Bach writes about software testing, exploratory testing and context-driven methods, and argues against "best practices."
What HN saysHN commenters cite his pairwise testing article and exploratory testing definitions, and share his skepticism of dogmatic "best practices."
30HN people shared it
11linked it in comments
28stories submitted
61story points
4 months agolast shared
2008people per year2026
Most-shared posts
- 1No Best Practices (2005)5 people · 6 points · first shared 2009 · discussion on HN
- 2A Context-Driven Approach to Automation in Testing [pdf]2 people · 6 points · first shared 2016 · discussion on HN
- 3WebGreeter Fails Turing Test2 people · 4 points · first shared 2009 · discussion on HN
- 4Exploratory Testing 3.02 people · 1 points · first shared 2015 · discussion on HN
- 5Homepage2 people · first shared 2022
- 6Blog2 people · first shared 2009
- 7Archives 4878812 people · first shared 2025
- 8Advice to Lawyers Suing Toyota1 people · 7 points · first shared 2010 · 1 comments on HN
- 9Quality is Dead #2: The Quality Creation Myth1 people · 4 points · first shared 2009 · 1 comments on HN
- 10My Personal Source Code: Books to Learn Analysis1 people · 4 points · first shared 2018 · discussion on HN
- 11James Bach – Enough About Process (1995) [pdf]1 people · 3 points · first shared 2014 · discussion on HN
- 1234 Years in Testing1 people · 3 points · first shared 2021 · discussion on HN
- 13No Best Practices (2006)1 people · 3 points · first shared 2025 · discussion on HN
- 14Public Service Announcement: Don't Say You Use AI for Writing1 people · 2 points · first shared 2026 · discussion on HN
- 15A Good Example of a Stupid Idea: Testers Shouldn't Test1 people · 2 points · first shared 2023 · discussion on HN
What HN people wrote when they linked it
adityaathalye · 2025-09-15
OP here. Ordinarily, I would agree with you, because PageObjects themselves are not composable, in languages belonging to the "Kingdom Of Nouns".
However, the following design, thanks to Clojure's language design, helped address a rather nasty situation.
A tightly scoped Domain Specific Language, over some Types of PageObjects, all of which compose arbitrarily (without breaking value semantics). So, if you wanted the `value` of a Modal box having all sorts of switches, form fields etc., you'd call `value` on it, and it would call `value` on all of its constituents, and return the immutable hash-map snapshot of whatever state it found.
Cross-cutting concerns | v PageObject / DSL -> | open | close | open? | select | deselect | ... | |-----------------------+------+-------+-------+--------+----------+-----| | Dropdown | | | | | | | | Checkbox | | | | | | | | Switch | | | | | | | | Modal | | | | | | | | SearchList | | | | | | | | ... | | | | | | | Concrete example (in the deck and demo linked below):
(defprotocol IPageObject "Each PageObject MUST implement the IPageObject protocol." (page-object [this]) (exists? [this]) (visible?…
drewcoo · 2022-05-04
You started with a goal and you took notes so the only thing different between your experience and Exploratory Testing is the debrief session. Oh, but you've started that here already, too.
If all manual testers played games like you, there would be more respect for that profession. Likewise, if more game testers did . . . anywho . . .
What, may I ask, did you play?
As if I'll look back here again! Seriously, I'll try to remember. That sounds like the kind of exercise James (not the seagull son) Bach would do. ;-)
https://www.satisfice.com
bklaasen · 2022-01-31
"All pairs" is the approach to take. There is a good amount of quality writing on this; I suggest starting here: https://www.satisfice.com/download/pairwise-testing-a-best-practice-th…
userbinator · 2018-10-07
...showing just how useful "best practices" actually are.
I associate that phrase with dogmatic cargo-cult "don't think just follow" and the horrible results thereof. Lots of self-proclaimed "experts" love to say "do X and Y and Z and you will be successful because these are best practices", but it's all a bunch of snake oil.
https://agilepainrelief.com/notesfromatooluser/2010/03/there-are-no-be…
http://www.satisfice.com/blog/archives/27
http://www.satisfice.com/presentations/nobest.pdf
"Best practices are best not practiced."
joosters · 2016-07-12
Has anyone tried combining fuzzing with 'all-pairs'/'pairwise' test case generation?
The idea of pairwise testing is that individual features in a program are commonly tested, but combinations of them are often poorly tested. However, trying to test all features with each other soon becomes a combinatorial nightmare. To deal with this, you use an algorithm (e.g. see the code for 'allpairs' at http://www.satisfice.com/tools.shtml ) to pick a minimal set of test cases that cover all possible pairs of configuration settings.
These test cases could then be used as starting points for fuzzing, to provide a greater code coverage faster.
rsanheim · 2012-01-18
Agile is not best practices.
http://www.satisfice.com/blog/archives/27
Sorry, just one of my pet peeves, and describing agile as == best practice doesn't help anyone.
pasbesoin · 2009-04-26
James Bach turned QA into an independent gig. There are a few others who have significant public personae. I haven't checked in on his blog, lately; it's here:
http://www.satisfice.com/blog/
http://www.satisfice.com/recommends.shtml
I don't know whether this will be any use to you. Hope it helps, though.
ideamonk · 2009-04-25
"Don't listen to me. Just do it your own way. Coz that's what you'll do anyway. It's never possible to follow suggestions/rules, like a sworn monk. And that's how you'll enjoy learning :P"
That's true :) http://www.satisfice.com/blog/archives/27
cratermoon · 2025-05-24
Perhaps this one from James Bach. "Is There Something in Your “I”?" https://www.satisfice.com/blog/archives/487881
satisfice · 2025-05-04
I blogged about this just yesterday. The problem of disguised authorship ruins your reputation as a thinker, worker, and writer.
https://www.satisfice.com/blog/archives/487881
meej · 2013-02-21
"The lesson I took away from that day is that when I’m stuck I ask an outsider."
Interesting, there's a very similar lesson in this post from James Bach's blog yesterday about programmer pairing with a tester:
http://www.satisfice.com/blog/archives/852