Showing posts with label beta books. Show all posts
Showing posts with label beta books. Show all posts

Friday, November 28, 2014

Solving my Tsundoku: The Return of TESTHEAD Book Reviews

As I was settling in and preparing for my journey home from Ireland (which will include a flight from Dublin to Toronto (roughly eight hours), plus a seven hour layover, and then a flight from Toronto to San Francisco (roughly another seven hours), I figured it was a great time to dig in and work through some of the books I have received to review, as well as some I have picked up to work with due to the work that I do as a tester and occasional programmer.

I receive a number of e-books in PDF format from a variety of sources. Some are offered to me free for me to review, many more are purchased by me to work through and bulk up my geek brain (well, that was the goal in any event). At some point, the desire to read and apply got overtaken by the real life aspects of work, family, testing initiatives and other things I do. All the while, my book pile keeps getting bigger and bigger.

Zeger van Hese gave a great keynote talk at EuroSTAR this week, and in the process, he talked a bit about those great linguistic terms that English doesn't have a succinct single word for. One example that resonated with me (to the point of causing physical discomfort, to be honest) was the Japanese word "Tsundoku" (積ん読, (hiragana つんどく) which is, according to Wiktionary "(informal) the act of leaving a book unread after buying it, typically piled up together with other such unread books".

The first way to deal with a problem is to realize you have a problem, and to that end, I have decided I am going to do something about that problem. How so? By making one of my "bold boasts" I make from time to time. Since we are still a few weeks before New Years, I cannot be accused of making a New Year's Resolution (since I don't make them ;) ), but I can declare a new goal, and that new goal is that I shall henceforth and forthwith start whittling down my book collection and actually read, apply and review the stack of books that I have. To that end, you may expect, in no particular order, reviews to start appearing for the following:
  1. Accessibility Handbook
  2. Apache JMeter
  3. Application Testing with Capybara
  4. Backbone.js Cookbook
  5. Beginning PHP 6 Apache MySQL 6 Web Development
  6. Build Your Own Web Site
  7. Computer Science Programming Basics in Ruby
  8. Confident Ruby
  9. Crackproof Your Software
  10. Design Accessible Web Sites
  11. Design Driven Testing
  12. Eloquent JavaScript, 2nd Edition
  13. Everyday Scripting with Ruby
  14. Exceptional Ruby
  15. Good Math
  16. Head First Ajax
  17. Head First HTML and CSS
  18. Head First HTML5 Programming
  19. Head First JavaScript
  20. Head First JavaScript Programming
  21. Head First Mobile Web
  22. Head First PHP and MySQL
  23. Head First SQL
  24. Head First jQuery
  25. Higher Order Perl
  26. How Linux Works
  27. Jasmine JavaScript Testing
  28. JavaScript for Kids
  29. JavaScript Security
  30. JavaScript Testing Beginner's Guide
  31. JavaScript and JSON Essentials
  32. JMeter Cookbook
  33. jQuery Cookbook
  34. Kali Linux Network Scanning Cookbook
  35. Lauren Ipsum: A Story About Computer Science and Other Improbable Things
  36. Learning JavaScript Data Structures and Algorithms
  37. Learning Metasploit Exploitation and Development
  38. Learning Python Testing
  39. Manga Guide to Calculus
  40. Manga Guide to Electricity
  41. Manga Guide to Physics
  42. Manga Guide to Statistics
  43. Mastering Regular Expressions
  44. Metaprogramming Ruby
  45. Metasploit Penetration Testing Cookbook
  46. Metasploit The Penetration Testers Guide
  47. Modern Perl
  48. More Agile Testing
  49. NGUI for Unity
  50. PHP MySQL JavaScript HTML5 All in One for Dummies
  51. Pride and Paradev
  52. Pro HTML5 Accessibility
  53. Python for Kids
  54. Rails Crash Course
  55. Regular Expressions Cookbook
  56. Responsive Web Design By Example
  57. Robot Framework Test Automation
  58. Ruby Wizardry
  59. Running Lean
  60. Selenium Design Patterns and Best Practices
  61. Selenium WebDriver Practical Guide
  62. Snip, Burn, Solder, Shred: Seriously Geeky Stuff to Make With Your Kids
  63. Specification by Example
  64. Test Driven Web Development with Python
  65. TestComplete Cookbook
  66. TestComplete Made Easier
  67. The Art of Application Performance Testing
  68. The Art of Software Testing, 3rd Edition
  69. The Selenium Guidebook
  70. The Well Grounded Rubyist
  71. Web Development with Django Cookbook
  72. Web Penetration Testing with Kali Linux
  73. Webbots Spiders and Screen Scrapers 2nd edition
  74. Wicked Cool PHP
  75. Wicked Cool Ruby Scripts
  76. Wireshark Essentials
  77. Zero to One
Yes, this is a line in the sand. Yes, I intend to fix this problem of mine. No, I cannot say which order these reviews will appear, but be sure, they are coming. Yes, I encourage you all to call me on it if I slack off.

One way or another, this begins today, and it will not finish until all of the stack is read, worked and commented on. That may take awhile ;).

Friday, August 31, 2012

Developing Book Review: Explore It!

Pragmatic Publishing has been getting a lot of my book dollars the past couple of years. There's a reason for this. They seem to be the ones best situated for my particular technology and challenges list at this point in time, plus I greatly appreciate their model of how they make books available. With many publishers, you need to be part of a secret club or know the author to get your hands on a developing book. Pragmatic Publishing has baked it into their writing model. Most of their books are made available as beta titles early on, and those who wish to get involved with the reading, implementing and reviewing of titles can do so. They realize that the books are half baked, sections are still to be written, aspects of layout and graphics are not completed, and grammar may still be a bit loose.

As I've said with other developing reviews, fair enough. Again, I will say "If we extract all of that, is there a value in getting this book now and being one of the people who will be willing to work with all of those for the time vagaries to get to what will ultimately be a good product?" That's what I hope this review will represent. Also, this review will be converted to a full review after the books ship. Oh and for those who want to say at this point "tl; dr", here's my answer.

YES!!!

Exploratory testing has been getting press lately. Deservedly so, I should say. Still, outside of blog posts and direct interaction with those who have represented the movement of exploratory testing, there isn't a good one stop for explaining what exploratory testing is in a meaningful way. Practitioners have to scratch around and try out a number of different sources and models and deal with a lot of "it depends". Getting all of the details in one place, and with a smooth narrative that can help make sense of the process is a good thing. Giving you ways to practice it and actually get some hands on understanding is even better. Hearing it in a voice and a narrative that flows smoothly, is not overly technical, and allows users to connect the dots effectively would also be a huge plus. Are we there yet? With the beta 1.0 release of "Explore It!" by Elisabeth Hendrickson, I'll dare say we are are a lot closer than we have been to date.

Software development is hard. It takes a certain amount of discipline, structured thinking and a variety of language skills to put a system together. What makes it even more challenging is that it's not like building a house on rock. It's not even like building a house on sand. It's really more like building a boat on an ocean. So much of software development requires the interaction of so many moving parts that, really, nothing is stable or static. Not really. It's in this world that we as testers are often asked to do our work. If we have illusions that everything is going to be neat and orderly and tidy, like a house built upon a stone foundation, we are liable to miss a great deal of what happens. This is where having an exploratory approach and mindset is critical. We understand that we need to explore, but how do we develop that mindset? It's with this aspect that much of the initial chapters are focused.

Part One deals with establishing and developing the exploratory foundations, so this is where exploration is explained and put into terms that a variety of people, not just testers, can understand. The key attributes of exploration (execution, learning and steering) are put forward, as well as disavowing the notion that testing is only a process of the test team (it's not, everyone tests, whether they are aware of the fact or not). Creating testing charters and understanding how to make them neither too specific nor too vague is important. There is also an emphasis on time boxing and Session Based Test Management, so as to help keep things in focus and make the exploration meaningful and on target. I like the approach Elisabeth uses in this early section to make a simple and easy top understand exploration template. Much the way that Agile development makes a story ("As a [stakeholder]., I want [functionality] So that I can [achieve result]"), consider exploration to be "Explore [target] with [resources] to discover [information]". That alone is a great takeaway from this section!

Observation is a big part of exploration, and Elisabeth puts a good emphasis on learning how to see what others don't. Inattentional blindness is addressed, and yes, we get a visit from "The Moonwalking Bear" (and if you have no idea what that is, follow the youtube link in the footnotes). The key point is that we need to make an effort to make the invisible more visible, and Elisabeth explains a number of techniques and methods to do exactly that.

Part Two digs deeper, and gives us the opportune ity to work variations and different approaches to our explorations. Elisabeth recommends that we take some time to recognize our habits and how those habits may be blocking our vision to see the unseen. From there, make a conscious effort to avoid doing things the way you normally do. Personas are introduced, and fleshed out considerably. For anyone who has heard this term, Elisabeth give this a good treatment, and also puts it into perspectives you may not have considered. States and transitions are an avenue for exploration that gets a good treatment here, and how to take advantage of them to vary your testing approach. Modeling the system and the way we interact with it are also covered. Look for places where transitions occur, and see if you can influence the way those transition occur.

Part Three puts the different approaches into unique contexts and shows that the skills are applicable in a broad range of circumstances. Exploration is often considered a front end approach, but it can be used in many places; unit tests, acceptance test driven development, behavior driven development, testing of API's, and anywhere that a user might interact with an application, even if the end user isn't actually a human. Also, while exploratory testing is encouraged for systems under development, it's just as powerful a tool for legacy and currently marketed applications, too. Elisabeth describes the value of doing reconnaissance on applications. Discover the applications capabilities and its limitations. From this, you can start asking interesting questions of the application, and discover areas where it should be doing something, or should not be doing something, and when to tell the difference.

Part of what makes this book fun, at least for me, is the fact that I have worked with Elisabeth in the past. I know her, I know her sense of humor, her manner of speaking, and the way that she gets points across. Thus, it's very easy to read this book in her voice. Even if you are not familiar with Elisabeth and how she talks and describes things, you will still be able to follow along with her as she makes the examples relevant, and sometimes amusingly so. While calculating to the air velocity of a swallow (European or African), the fact that she's willing to include those whimsical details makes it easy to get into the spirit of the book and go with the flow of the narative. For technical books, that's quite an achievement.

At the present time, the ToC lists 13 chapters, with three of them still to be written (Exploring Entities and their Relationships, Exploring Requirements, and Integrating Exploring Throughout). The appendix section includes a section on ways to interview for good exploratory testers and the now famous (for many) Test Heuristics Cheat Sheet. If you want to see progress on the book, you can certainly check the book Progress page to see if the area you are interested in is ready or well along in the process. If you want to wait for the whole book to be finished, that's understandable. If, however, you'd like to get in and try these techniques for yourself, and are willing to deal with some loose ends for a few months as they get developed, not to mention help Elisabeth deliver an even more solid book by offering suggestions in the book's Errata section, then why wait? Get the book, go forth and see what you will find. Even in it's Beta 1.0 state, my guess is, quite a bit.

Thursday, August 16, 2012

Developing Book Review: Cucumber Recipes

For quite some time, I have been considering the best way to handle doing book reviews for beta titles. Two companies that have been pioneers in this process, Pragmatic Publishing and LeanPub, give readers the opportunity to purchase books at their first availability, and then they get the chance to offer feedback, grammar checks and other errata fixes. and watch the book grow as its content gets created and developed over a period of several months.


I've had the pleasure of watching books develop from their initial beta offering through publication many times through Pragmatic Publishing, including titles such as Build Awesome Command Line Applications in Ruby, Technical Blogging, The Cucumber Book, tmux: Productive Mouse-Free Development and Practical Vim (which is, actually, still in Beta).


Often, I will find the initial value compelling, and I will work through the titles and enjoy the experience of having them months earlier than anyone else. Sometimes, though, I feel that there is great information that people are missing out on because I'm waiting for the book to be finished, but think it's unfair to give a lukewarm review for a book that isn't even finished yet. So what to do?


In this case, I've decided to change my own policy and create a new kind of book review. This will be specifically for beta titles. The key point to any beta title is it is a work in progress. It is missing sections. It has spelling errors, it may have half thought through paragraphs, and the page flow may be less than stellar. It may be missing figures and graphics. Also, the examples may or may not work as they are presented. To which I say, fair enough. If we extract all of that, is there a value in getting this book now? Is there a value to being one of the people who will be willing to work with all of those former vagaries to get to what will ultimately be a good product? That's what I hope these review will represent. Also, these reviews will be converted to full reviews and updated after the Production release books ship.


The second title I will consider for this treatment (since "Cucumber and Cheese" was really the first book I reviewed this way) is "Cucumber Recipes" by Ian Dees, Matt Wynne and Aslak Hellesoy. Mat and Aslak may be familiar to some readers for creating The Cucumber Book. Ian may likewise be familiar for his book Scripted GUI Testing with Ruby. Those two titles are tutorial books, and are meant to work with programmers and testers unfamiliar or having a relatively low understanding of the technologies. Cucumber Recipes is not a tutorial book. It expects you to have some working knowledge of what statements are and how they work, what step definitions are, and how to create them, as well as some working knowledge of Ruby. The real value of Cucumber Recipes is in the variety of avenues that you can explore in just a few pages.


Unlike a tutorial book that requires the user to go from beginning to end, more or less, to understand the details of what is happening, Cucumber Recipes does not have that limitation. Each "recipe" is its own section and is a standalone article. The subtitle of the book is "Automate Anything with BDD Tools and Techniques" and that is the key feature of each of these recipes. They are not just being offered as "here's how to use Cucumber to test something on iOS". Instead, it's "here's how to use BDD principles in this particular instance, and here's how you can carry those BDD techniques to it, and use them in other ways". A comment that Seth Godin made in "Linchpin" is that there are millions of "cook books" in just about any profession, but there are few, if any "chef's books". Cucumber Recipes, through its structure and approach, strives to be a chef's book.


Cucumber Recipes also looks to cast a wide net, and give the readers a broad set of possibilities. Not everything will be applicable to every reader, and it's possible whole chapters will be of little interest to some. Having said that, even with the material available at B1.0 (first beta release), I was able to find several examples related to such diverse topics as fixing Windows quirks, better reporting, data comparisons and transformations, and techniques for testing on iOS.


Each Recipe starts with a Problem statement (the issue that needs to be tackled). Then each recipe contains an Ingredients section. This contains any elements you need to be aware of, whether that be a particular class, gem, or external tool to use to make the solution work, and then a Walkthrough into the proposed solution. Again, the solutions require that you already know a bit about the given area, but the solution is walked through so that you can go from start to finish and see it in action. Each recipe runs from 4 to 10 pages on averages (some of the to-be-added ones may run longer, but I can't speak to that yet). Each recipe ends with a Further Exploration section, which may point to another Recipe, an external site or Ruby Gem (or library, jar or archive if you are using other languages like Java,.NET, Erlang, etc.), or some other noteworthy item (lots of footnotes and references here).


At the present time, the ToC has listed 42 recipes, of which many are still to be included, as well as a pending RSpec tutorial, and pending topics include testing on Arduino, Android, Linux, JavaScript, Java, .NET and Windows. There's something for just about everyone, provided the everyone in question is looking to use Cucumber somewhere in their mix.


As I said previously, not everything is going to be relevant to everyone, so check the book's Progress page to see if the areas you are interested in are ready or how far along in the process they are. Also, if you find issues, consider commenting in their Forum or Errata sections. If you want to wait for the whole book to be finished, that's cool, but if you have an itch to get to the party early, Cucumber Recipes is proving to be a worthwhile title to do exactly that.