שני דברים שצריך לדעת Two things you should know

  1. כנס הבדיקות האירופאי פרסם קריאה להרצאות (ובשפתם – קריאה לשיתוף פעולה, והם מתכוונים לכל מילה בזה). כדאי לכם. זה כנס בדיקות מצויין, המארגנים מדהימים, והם עושים שמיניות באוויר כדי שיהיה קל להגיש תוכן לכנס. גם אם אתם לא מגישים תוכן, זה הזמן להתחיל לבקש ממקום העבודה שלכם תקציב להשתתפות (או לשלם בעצמכם, גם אופציה) ולהמתין לפתיחת ההרשמה המוקדמת, כי אתם רוצים להיות שם. 
  2. יצא לכם לקרוא מתישהו את הדף של ויקיפדיה על בדיקות תוכנה? שמתם לב שאפשר לשפר אותו באופן משמעותי? אלן פייג’ מנסה לתקן את זה. הצטרפו לחגיגה! אחרי הגרסה האנגלית, נתקן גם את הגרסה בעברית
———————————————————————–
  1. The European Testing Conference has published a call-for collaboration (which other conferences might name “call for papars\participation”, and the people at ETC are serious about this difference).
    If you have not done so yet, you should submit your ideas there – It’s a wonderful conference, the organizers are amazing, and they are jumping through hoops to make the content submission as easy and accessible as possible.
    Don’t want to speak? well, it’s time to get a budget (from work or by yourselves) and wait for the early bird registration to open. You want to be there. Trust me on that. 
  2. Have you read recently the Wikipedia page on software testing? Did you notice that it could be immensely improved?  Well, Alan Page is doing something about it. Come join the party!
* picture on top was found here.

Ignorance, Recognised

Stop Working & Start Thinking is intended to help postgraduate students make profitable use of an essential piece of scientific equipment: their mind. I’m only a short way in, and finding it a bit dense at times, but there’s already a few pass…

זה לא צריך לעבודThis shouldn’t work

Over a month ago, the closing keynote of NordicTestingDays was given by Kristjan Korjus from Starship Technologies and he told us about their product – a small(ish) delivery robot meant to help with “last mile delivery”. The general idea is ingenious – creating a self-driving, fully autonomic delivery bot is an extremely difficult task, but creating a mostly automated delivery bot with some human support when needed is a bit more feasible (still not easy, though).
Well, What happens when one brings such revolutionary idea to a testing conference? Naturally, you get a whole lot of questions challenging the validity of the idea. In fact, most people I’ve spoken with directly after the keynote did not seem to be convinced that it was a good idea at all.
However, while participating in the European Testing Conference I got to listen to Liz Keogh who, during an amazing Cynefin talk, mentioned that people tend to react to new ideas with four words: “That won’t work because…”. She also mentioned the value of this reaction in a complicated space and that this is one of the things testers are very well practiced on.
So, back to the the subject – A room full of testers, a new idea. Question after question that can be phrased as a “that won’t work because…” statement (with one exception of “how can I become a robot-walker?”).
What I liked in Liz’s view about “that won’t work because” is that it is a valuable to say when creating something since it allows people to consider possible setbacks and prepare for them – to lower the risk of probing (Which is, as far as I understood, Cynefin word for “quick experiment”). That this statement is balanced by the dreamers (traditionally, the dreamers are either in the developer or product manager roles, testers are most of the time hired as professional skeptics) that focus more on “imagine how great it would be if it did work”, which is why new ideas are tried out and thus have a chance to succeed (you can’t succeed in something you didn’t do). Since the experience of TWWB was so strong for me in the room, I want to try an exercise in taking the other view and trying my imagination on the success of the delivery-bots presented at the conference.

So, what are the benefits of having a robotic delivery?

  • First is the obvious cost reduction factor, where a robot, over time, costs less money than paying a human, so everything will have the potential of being cheaper as lower costs are embodied in the final price of a product.  
  • Second, the risk of violence against the delivery person will be mostly gone (and violence against the robots isn’t a major concern since they can call the police, and each one has 9 cameras that will record perpetrators).
  • Third, a robot could deliver ice-cream without any de-frosting concerns (why wouldn’t a robot be also a miniature freezer, or have heating capabilities to keep the pizza warm?)  
  • Next, it will save people the need to interact with a complete stranger just so that they can have some food, or get a package. This will be great for people with social anxiety, but also imagine picking up your pizza delivery without bothering to get dressed – some people will find this appealing. 
  • Taking it a step forward – how will it interact with the world? Currently the robot had not yet mastered stairs, will we see smart buildings opening their elevators for it? Will we see hatches in doors for more than just cats? 
  • What about sending a package to a friend? I can totally imagine a business that will enable people to send small packages to friends – a small gift you made for your friend and want to surprise them with? The lunchbox your child forgot at home? The book you need to return to the library? Now you can get them to them without having to carry it all by yourself out in the rain. 
  • Following your delivery today has probably some legal issues  – is it ok to track a person while they work, especially when they are not working for me? Tracking robots and wouldn’t pose the same privacy issue. I could probably track the bot from my phone with no problem. 
  • Oh, and finally, I just can’t wait to see how well will the robots function with a 4 year old toddler sitting on top of it (after all, Roombas feature as cat-rides).

I could probably go on and try to create a very bright picture of how this world would look like – but I found out something interesting – as I was compiling this list of cool things, my tester habits took on a different angle, and accepting the delivery bots success as a given, I started imagining all sorts of difficulties such a success might present, it’s not exactly TWWB, but rather “this idea might be less than great” –

  • The current robots drive on the pavement, alongside pedestrians, do we want a lot of those boxes rushing along between our legs? How long will it be until separate lanes would be required? 
  • Will there be a new service of “set your robot right after it has fallen (or pushed) on it’s side?
  • Who is to blame if a robot gets to a bicycle lane (which, in some places, might be also where pedestrians should walk) and a cyclist falls and gets seriously injured? what about an old pedestrian who fell because of such robot and broke a hip? 
  • Will branded delivery bots be the target of vandals angry at your company? Will we see accusations of attacking the delivery system of the competing business? 
  • With 9 cameras and a human “emergency” operator, will we see a phenomenon of the operators spying on their ex-partners? How common will be instances of accidental spying? And how large will be the operators screenshot collection of people in embarrassing situations?
  • Speaking of spying, will the police have access to the footage if the bot witnessed a crime? Alexa was already a target of such request.
  • Will a fleet of such robots create a significant load on the phone\internet operators? 
  • Such bots are remotely operated – once hacked (and currently, it looks like every other piece of IoT, so it will probably be easy to hack) could it be derailed to the road and used to create Traffic jams and accidents? 
  • Will we see “suicide bots”? Just imagine one bot carrying a bomb in the middle of a crowded street. 
Am I saying that the current suggestion of a robot last mile delivery is a bad idea? Not necessarily (ok, I am saying that a bit, but please recall that the same was said about the telephones, cars and personal computers, and I personally don’t get how twitter is a thing, so I wouldn’t take my word on what has or hasn’t a chance) – I have no idea  which of the possible outcomes will actually come to be (tying back to Liz’s Cynefin talk, this is an extremely complex space). What I am saying is that as testers, the tendency to see fail points is useful – but during this exercise I found that seeing blockers in our way isn’t all that there is to it. If we are to reduce risk by thinking of the bad stuff that might (or might not) happen, there’s also some value to guessing what might happen when we succeed. And it doesn’t have to be just around innovative ground shaking ideas, thinking back a few years, we had a feature we thought is great, but a week after it was released more than half of our customers called in furious and demanded that we remove it, this is also a possible outcome. Don’t let such thoughts stop you from developing  new stuff, but make sure that you prepare for some of the outcomes you can guess.

——————————————-

הרצאת הסיום של NordicTestingDays ניתנה על ידי קריסטיאן קוריוס מStarship Technologies, והוא סיפר לנו על המוצר שלהם – רובוט לא מאוד גדול שמטרתו להקל על המשימה של שילוח בק”מ האחרון (אין לי מושג ירוק איך לתרגם את last mile shipping, אבל שיהיה). הרעיון הבסיסי הוא די מבריק –  בנייה של רובוט אוטונומי לגמרי שידע להתמודד עם האתגר המורכב הזה היא משימה קשה להחריד. אבל בנייה של רובוט שידע להתמודד עם המקרים הקלים ואת השאר ישאיר למפעיל אנושי – ובכן, זה כבר קצת יותר בר ביצוע (גם אם לא פשוט בכלל). 
אז מה קורה כשמגיעים עם רעיון חדש ומהפכני לכנס בדיקות? מקבלים מבול של שאלות שמצביעות על פערים, בעיות ותוהות האם הרעיון הזה בכלל לגיטימי. למעשה, מעט האנשים שדיברתי איתם אחרי ההרצאה לא נשמעו משוכנעים בכך שזה רעיון טוב. בכל מקרה, זה התחבר לי להרצאה אחרת ששמעתי בEuropean Testing Conference, שם Liz Keogh דיברה על קנבין (מאייתים את זה Cynefin, וזו עוד אחת מהמילים שנכתבות בצורה אחת ונקראות בצורה אחרת לגמרי). ליז הזכירה את הנטייה של אנשים להגיב מהר מאוד ב”זה לא יעבוד כי…”, וציינה שבודקי תוכנה מתורגלים מאוד בגישה הזו.
בכל מקרה, בחזרה לנושא המקורי – רעיון חדשני, חדר מלא בבודקי תוכנה, זמן השאלות. כצפוי – מבול של שאלות שאת רובן אפשר היה לנסח כהצהרת “זה לא יעבוד כי…” (עם חריגה אחת בולטת של “איך אפשר להתקבל לתפקיד של מלווי רובוטים).
מה שמצא חן בעיני במיוחד באמירה של ליז על זלי”כ (“זה לא יעבוד כי”, ארוך לי לכתוב את זה) זו הגישה לפיה לאמירה הזו יש מקום של כבוד במרחב המורכב (complex) בו צריך לגשש כדי לנסות לראות אם דברים פועלים, כי זו דרך לצמצם את מידת הסיכון אליה נחשפים. האמירה הזו מאוזנת על ידי החולמים (באופן מסורתי, אלו יהיו מנהלי המוצר או מפתחי התוכנה, לבודקים משלמים עבור סקפטיות מקצועית), שמתעלמים כמעט לגמרי מהמכשולים ועסוקים בעיקר בלדמיין “כמה מגניב זה יהיה כשזה יצליח”. כיוון שאווירת זלי”כ בחדר הייתה מאוד משמעותית, אני רוצה לתרגל דווקא את הלך המחשבה השני ולנסות לחשוב אילו השפעות חיוביות יהיו לרובו-שליחים.

  •  בראש ובראשונה, הצלחה של המוצר נמדדת בהוזלת עלויות השילוח. זה נותן לחברות השונות שולי רווח גבוהים יותר, שמתבטאים ביכולת להוריד מחירים כי יש פחות עלויות שצריך לגלם במוצר הסופי. 
  • שנית, סיכויי האלימות נגד שליחים מצטמצמים באופן משמעותי (ולא ממש אכפת לנו מאלימות נגד הרובוטים, יש להם תשע מצלמות וקשר ישיר למוקד המשטרתי).
  • שלישית – הרובוט יכול להעביר גלידה בלי שהיא תימס. הרי יש כבר חשמל, למה שהרובוט הזה לא יהיה גם מקפיא? או תנור שיכול לאפות את הפיצה בדרך (או סתם לשמור עליה חמה). 
  • חוץ מזה, יש אנשים שפשוט לא אוהבים לתקשר עם זרים. נכון, זו פחות בעיה בארץ, בה “אחי” הוא כינוי למי שאין לך מושג מה שמו, אבל לפחות את ההתלבטות של האם צריך לשלם תשר או לא אפשר לחסוך. 
  • אגב, ההשפעה של הצלחה גדולה על העולם עשוייה להיות לא זניחה בכלל. למשל, אנחנו יודעים שהרובוט עדיין לא מתמודד היטב עם מדרגות, האם נראה בניינים חכמים פותחים עבורו את המעלית ומכוונים אותו לקומה הנכונה? האם נראה פתחים בדלת שיתאימו ליותר מאשר חתולים?
  • ומה אם רוצים לשלוח חבילה לחברים? אני לגמרי יכול לדמיין עסק שישכיר רובו-שליחים במחיר שווה לכל כיס. רוצים להפתיע מישהו עם מתנה בלי שהוא יראה אתכם סוחבים אותה? הילד שכח את המחברת בבית? צריך להחזיר ספר לספרייה אבל שלושים וחמש מעלות עם תשעים אחוזי לחות בחוץ?  בעלות מינימלית יגיע אליכם רובוט שיקח את החבילה ויעביר אותה ליעדה. 
  • מעקב אחרי משלוח. היום, אפשר לטעון (אולי) לבעיות חוקיות באפשרות לעקוב אחר מיקומו המדוייק של שליח. בכל זאת – בן אדם. אבל עם שליחים רובוטיים, אפשר יהיה לראות כמה רחוקה בדיוק הפיצה. 
  • ולסיום, אני מת לראות איך יסתדרו הרובוטים האלה כשכל מיני ילדים יתחילו לתפוס עליהם טרמפ. אחרי הכל, אחד הפיצ’רים החשובים ביותר של רומבה הוא הסעת חתולים
אפשר להמשיך ולצבוע את העולם בצבעים ורודים ולספר כמה זה יהיה מגניב. אבל שמתי לב לתופעה מעניינת. תוך כדי המחשבה על איך תשפיע ההצלחה על העולם, ההרגלים שלי כבודק תוכנה קפצו שוב ושוב והתחלתי לדמיין כל מיני בעיות שיהיו אם הרובוט השליח באמת יצליח בגדול. בכך שקיבלתי כהנחת יסוד את הצלחת הרובוט, זלי”כ השתנה קצת והפך להיות “בעצם, לא בטוח שזה רעיון כל כך טוב”. המהות היא אותה מהות, אבל השינוי בזווית הראיה משפיע על סוג הבעיות שמצליחים לחשוב עליהן. 
  • הרובוטים האלה נוסעים על המדרכה. גם ככה צפוף על המדרכה, אז עוד כל מיני רובוטים כאלה שיתפסו מקום? האם אנחנו רוצים את הקופסאות האלה שועטות לנו בין הרגליים? כמה זמן ייקח עד שיהיה צורך בנתיבים נפרדים רק בשבילם? 
  • האם נראה חברות שמספקות שירות “אנחנו נרים את הרובוט שלך אחרי שהוא ייפול(או שידחפו אותו) על הצד”? 
  • את מי מאשימים (ותובעים) אם רוכב אופניים מתנגש ברובוט כזה שייסע בשביל אופניים (או על ההמצאה המגונה הזו בה מדרכה היא גם שביל אופניים וגם מדרכה בו זמנית)  ומתהפך? 
  • האם נתחיל לראות נזק לרובוטים שישאו את הלוגו של חברה לא אהודה במיוחד? או את המעסיק שבדיוק פיטר את השליחים שלו כי עכשיו יש לו רובוטים?
  • עם תשע מצלמות ומפעיל אנושי שצריך לעזור בחלקים הקשים, האם נראה תופעות של מפעילים שמרגלים אחרי האקסית שלהם? עד כמה נפוצה תהיה הבעיה של ריגול לא מכוון? כמה גדול יהיה אוסף התמונות החושפניות\מביכות באוסף של כל מפעיל רובוטים?
  • ואגב ריגול, האם המשטרה תוכל להשתמש בתמונות שהרובוט יאסוף אם הוא היה עד לפשע? אלקסה כבר מתמודדת עם דרישות דומות
  • כמה עומס ייצור צי רובוטים כזה על תשתיות הטלפון והאינטרנט? אנחנו מדברים על רובוטים שמשדרים וידאו בכל רגע נתון.
  • אפשר לנהוג ברובוטים האלה מרחוק. כשיפרצו את הרובוט (ובינינו, כרגע זה נראה כמו כל פיסת IoT אחרת, מה שרומז על כך שלא יהיה קשה מאוד לפרוץ לשם) האם אפשר יהיה לגרום לרובוט להידרדר לכביש ולהפריע לתנועה? או לגרום לתאונות?
  • ומה לגבי רובוטים מתאבדים? כולנו כבר יודעים כמה נזק עלול לגרום “חפץ חשוד” בצורה של תיק שנשכח בפינה. אם הרובוטים האלה מסתובבים בין הרגליים של כולם ואף אחד לא שם לב אליהם, מה מפריע למישהו למלא את הרובוט בחומר נפץ?
האם אני אומר ששילוח רובוטי של הק”מ האחרון זה רעיון רע? לא. לפחות, לא לגמרי (כאילו, כן. אבל אני לגמרי מודע לזה שאת אותו דבר אמרו על הטלפון, המכונית והמחשב האישי, ובאופן אישי אני לא מבין איך אנשים מפרסמים את כל החיים שלהם בפייסבוק, שלא לדבר על הזוועה ששמה טוויטר – אז אני כנראה לא בדיוק המדד הטוב ביותר למה יתפוס ומה לא). אין לי מושג ירוק מה מבין התוצאות האפשריות שהזכרתי כאן יתממש, ומה עוד יצוץ (כמו שכבר הזכרנו, בעולם של קנבין מדובר בתחום מורכב לעילא ולעילא). מה שאני אומר הוא שההרגל שלנו כבודקי תוכנה לצפות תקלות הוא חשוב, אבל להבחין בבעיות בדרך למימוש זה לא הכל. כדאי גם להקדיש קצת זמן ולתרגל את עצמנו לנסות לנחש מה עלול לקרות אם (או כאשר) נצליח. כמובן, לא חייבים לפתח משהו סופר-חדשני כדי שצורת המחשבה הזו תהיה רלוונטית. אם אני מסתכל אצלנו, לפני כמה שנים הוצאנו פיצ’ר חדש, ובערך שבוע אחרי שהוא שוחרר, יותר מחצי מהלקוחות שלנו התקשרו בזעם ודרשו לבטל אותו. גם זו תוצאה שעלולה לקרות. 
כמו במקרה של זלי”כ – אל תיתנו למחשבות השליליות לעצור אתכם מלפתח דברים חדשים, רק שימו לב שאתם מוכנים לכל תוצאה שאתם יכולים לשער. 

Ruby on Rails bottom up security – hardening the servers

Reading Time: 3 minutesTL;DR Next series of blog posts is about Ruby on Rails bottom up security. I will cover all aspects of web application written in Ruby on Rails framework. Described security concepts could be applied to any other modern web framework because we will describe which security problem particular concept resolves. I will start with hardening the … Continue reading Ruby on Rails bottom up security – hardening the servers

Ruby on Rails bottom up security – hardening the servers

Reading Time: 3 minutesTL;DR Next series of blog posts is about Ruby on Rails bottom up security. I will cover all aspects of web application written in Ruby on Rails framework. Described security concepts could be applied to any other modern web framework because we will describe which security problem particular concept resolves. I will start with hardening the … Continue reading Ruby on Rails bottom up security – hardening the servers

In Two Minds

Jerry Weinberg’s definition of quality is well known. It is generally applied to encapsulate a relationship between a person and a product, at a particular time, and goes like this:

Quality is value to some person

It is intended to be a practical tool, and I think Weinberg would agree with something like this as a gloss for it: theoretical assessments of quality — perceived quality — are less important than those which are motivated by action. For example, a property is worth what someone actually pays for it. Without the action, it’s just philosophy. What someone is willing to pay, or sacrifice, determines the quality (to them) at that moment.

I’ve thought about this definition a lot over the years. In particular I’ve found myself speculating about the granularity of the definition. Back in 2012 I was wondering whether it was interesting to consider quality in terms of the aggregation of a set of qualitiesmore recently I was thinking about the way that product quality and its effect on quality of life might be interesting; and just now I’ve been worrying away at the possibility of holding conflicting views of the quality of a product at the same time.

Although there are numerous examples in Weinberg’s work of multiple people with differing opinions of a product at once, I haven’t found any where a single person has that. Here’s one relevant extract, from Quality Software Management volume 1, page 5:

For different persons, the same product will generally have different “quality,” as in the case of my niece’s word processor. My [complaint about a bug not being fixed] is resolved once I recognize that to [my niece], the people involved were her readers; and to [the word processor developer], the people involved were the majority of his customers.

One of the things I find intriguing is that the definition, and its common usage, together seem to suggest that a person is only able to assert or demonstrate or alter their assessment of the quality of a product at certain times: when they pay for the product, and when they are making use of the product. So I tried some thought experiments.

In the first, I imagined that I might be in a position to buy a Bentley:

  • I believe that the build standards of a Bentley are much higher than cheaper cars. I will pay more for higher build standard. This is a measure of value. As quality is value, I think the car is high quality.
  • I believe I would get no extra benefit from a Bentley over some other cheaper car, given how I use my car. So I won’t pay a high price for a Bentley. This is a measure of value. As quality is value, I think the car is low quality.

And then I reflected:

  • I feel that I can hold these kinds of opposing views at the same time without problem (at least in some cases).
  • I speculate that quality can be a relationship between a person and product-attribute rather than a product.
  • My examples are couched in terms of belief rather than actual knowledge (I have never even sat in a Bentley)
  • … so to Weinberg I’ve really I’ve got a statement about perceived value, if anything, here.
  • Perhaps related, quality assessment of wants (I’d love a Bentley) could be different to needs (I have to have some personal transport).
  • Is there always, ultimately, some overriding single attribute of quality that wins out for any given person, at a given time, and so multiple perceived qualities collapse at the point of use into a single assessment?
  • Or perhaps simultaneity is a false perception here. Maybe I am switching between views — very rapidly — and only hold one at any given time.
  • Another angle: when I consider two contexts of use, or aspects, or applications of a product, could really be considering effectively two different products?

I tried another scenario, which attempts to take belief and perception out of the equation by using a more mundane product that I have personal experience of. Let’s say I have bought a new pen and I want to use it for two tasks: taking notes while standing up and taking notes while suspended by my feet.

  • The pen is suitable for the first task and I am very happy with the price I paid. I say this is a good quality pen.
  • The pen is not suitable for the second task. I had to keep inverting it to let ink run back to the nib end, which I am unwilling to do any longer. I say this is a low quality pen.

More thoughts:

  • At the point where I pay for my pen, by Weinberg’s model, I make an explicit statement about the quality of the pen for me.
  • Unintuitively, perhaps, if I’ve never used such a pen before this is based only on my perception of the value the pen will return to me
  • … so perceived quality can turn into actual quality with no additional evidence to back it up
  • … and, on engagement with the pen, I might rapidly revise my opinion.
  • Once I’ve paid for it, I express my view of the quality of the pen by the extent to which I am prepared to sacrifice to use it
  • … and (if I understand the model) effectively the only time at which I can express this view is at the point of use
  • … because at other times I merely express a perception of what I would do when I came to use it
  • … and so can I change my expression of the quality of the pen without using it?
  • For example, can I express an opinion on quality by choosing not to use something?
  • … but then how to distinguish between something that I happen not to use and something that I actively don’t use, and something that I use only occasionally but is perfect for a particular task?

And then I stopped and dumped my notes here, after pondering how much I was prepared to sacrifice to continue this particular line of thought at this time.
Image: https://flic.kr/p/B7gwWJ

With thanks to Jerry for patiently listening to me trying to make some kind of argument along these lines in email, and then patiently declining to agree. And also to Šime for prompting more thoughts when I was going round in circles.