Sunday, December 6, 2015

תראו כמה מסמרים!

Look at all these nails!

אמירה מפורסמת טוענת שכשיש לך פטיש ביד, כל דבר נראה כמו מסמר. מה ששוכחים לומר, הוא שכשאין לך פטיש בארגז הכלים, מאוד קל לפספס את המסמרים שבאמת נמצאים שם.

לפני שמונה חודשים, אחרי שהגעתי לאחד ממפגשי סלניום שמארגנים אדם כרמי ואורן רובין, ושמעתי שם את דייב הפנר  שהמליץ על שילוב על browsermob proxy (אגב, אם אתם עובדים עם סלניום וטרם שמעתם עליו, אתם כנראה רוצים להירשם כאן ולקבל ממנו טיפ סלניום שבועי בדוא"ל), התחלתי לקרוא קצת והחלטתי לנסות את הרעיון. השקעתי כמה שעות בהוכחת היתכנות - ואחרי שזה עבד, התחלתי להסתבך עם חיבור הפרוקסי לפרוייקט האמיתי שלנו (התנגשות של ספריות יכולה לגרום לתופעות מרגיזות מאוד) אבל בסופו של דבר, אחרי עוד כמה שעות שהתפזרו על פני כמה חודשים - כי תמיד יש משהו דחוף יותר מאשר יוזמות עצמאיות - הצלחתי לפתור את כל הבעיות ולהריץ את הבדיקות דרך פרוקסי.
כשהצגתי את היכולות לשאר הצוות, הכנתי הדגמת יכולת פשוטה, כזו שלקחה לי בערך רבע שעה, כולל עקומת הלימוד שנדרשה - עברתי על כל הבקשות שנשלחו וחיפשתי תשובות HTTP לא סטנדרטיות. התוצאה? גיליתי שיש לנו כל מיני דפים שמבקשים משאבים שלא אמורים להיות להם, אבל הסיבה לכך קבורה כל כך עמוק בקוד עתיק שהחלטנו לא לגעת בזה כרגע.
אבל זה החלק המעניין פחות - מה שמעניין יותר הוא שאחרי ההדגמה הקצרה לצוות, פתאום התחילו לעלות לנו כל מיני רעיונות שלא חשבנו עליהם קודם. מעבר לשיפורים שהתכוונו להוסיף לבדיקות הקיימות שלנו, עלו פתאום רעיוונת לכל מיני בדיקות חדשות לגמרי שקל לבצע באמצעות הכלי החדש והנוצץ שהוספנו. עצם העובדה שיש לנו עכשיו כוח שלא היה לנו קודם חשפה בפנינו מרחב אפשרויות חדש, וחלק ממרחב האפשרויות הזה מעניין. הוא היה מעניין גם לפני שהתחלנו להשתמש בכלי חדש, אבל אף אחד מאיתנו לא חשב עליו, כי מול העיניים היו מונחים לנו דברים אחרים. היה לנו את הממשק מול סלניום שמתעסק במה נמצא או לא נמצא בדף ובאלמנטים השונים בDOM, היו לנו בדיקות מול מסד הנתונים שהתרכזו במה נכתב לכל מקום, והיו לנו שריקות של קבצי הלוג - ולמרות שאנחנו משפרים את היכולות האלה באופן קבוע, גם פספסנו (ואנחנו עדיין מפספסים) עולם שלם מסביבנו.
באופן אישי, זו הייתה חוויה חינוכית מאוד. זו תזכורת מצויינת לכך שתמיד יש עוד מקומות להסתכל עליהם - מטא-דאטה, צריכת זיכרון, איך באמת משתמשים בתוכנה שלנו במציאות, ועוד מיליון ואחד מקומות אחרים.  הרחבה של היכולות שלנו באזורים שהיו נקודות עיוורות בעבר שיפרה באופן כמעט מיידי גם את הבדיקות שלנו וגם את הרעיונות שעולים לנו -אני לא יכול לחשוב על שום סיבה שזה לא יפעל באותו אופן אצלכם.


----------------------------------------------

A famous proverb states that if all you have is a hammer the everything looks like a nail. What is also true but less frequently heard is that when you don't have a hammer in your toolbox, you miss out a lot a nails. 
Eight months ago, I went to one of the local selenium meetups organized by Adam Carmi (Co-Founder of Applitools) and Oren Rubin (Founder of Testim) where I've heard Dave Haeffner that recommended to incorporate Browsermob proxy into Selenium tests (By the way, if you are working with Selenium and have not yet heard of Dave, you probably want to register here to his weekly Selenium tips). So, I did some reading and decided to give it a try. I did a quick proof-of concept and then went struggling to try and stitch BMP to our project (Library conflicts can cause all sorts of insidious problems) - Finally, after several hours of work that spread over several months - as there is always something more urgent to do than an independent pursuit of an idea - I managed to run our tests through a proxy. 
The next step was to show off to my team - I spent around 15 minutes (including the learning curve) and added a simple check: for every request checked the HTTP response status and printed all the unexpected ones. As a result I found out that some pages are asking for resources without reason (the reason for that is buried under layers upon layers of legacy code - so we have decided to leave it as is). 
At any rate, what I did or didn't find is the least interesting thing around here, the more interesting phenomenon was that once we accepted the new capabilities that we now had, we suddenly started having all those new ideas of things we now can and should do - all of them are valid and valuable checks that we did not previously thought of - on top of the improvements we intended for our existing tests, there were some new tests we came up with just because we now could easily do them with our new and shiny tool. Previously, we have not thought about them because we had other things laid out in front of our eyes. We had selenium API that is all about DOM elements, we had database checks that are focused around what is written where, and we were checking our logs as well. We are improving our work with them constantly, but in the meanwhile we missed (and are still missing) a whole world around us. 
For me, this experience was very educating. I can definitely use this as a reminder to me that there are always more areas to look at - metadata, memory consumption, the actual usage of the software in the real world, and a million other things. Expanding our capabilities in what was previously a blindspot has almost instantly improved our testing and our ideas - I see no reason it won't do the same for you. 

Thursday, December 3, 2015

בחישה קצרה בקלחת

Trying to stir things a bit

בשבוע שעבר קיבלתי זימון לישיבה של חצי שעה ל"עדכון תקופתי של משאבי אנוש" - אחת לחצי שנה, או שנה, או כמה שיוצא, נציגת משאבי אנוש שאחראית על החלק בחברה בו אני עובד משתדלת לקיים שיחה קצרה עם כל עובד ולשאול איך הולך. שיחת עדכון קצרה בלי שום אג'נדה מעבר לזה. נו, מה כבר יכול להיות? מקסימום, שרפנו חצי שעה, ומישהו הקשיב לי מקטר - אני בטח לא אגיד לזה לא. 
הגעתי לשיחה הזו עם אותה המטרה איתה אני מגיע לכל פגישה עם מי שאיכשהו קשור להנהלה - אני לא מרוצה מהיחס המקצועי לבדיקות תוכנה אצלנו בחברה. למרות שברמה הצוותית אני יודע שמעריכים את אנשי הבדיקות ויש לי יכולת השפעה משמעותית על מה שקורה עם המוצר "שלי", אני מרגיש שברגע בו עוזבים את רמת הצוות ועוברים לרמת המחלקה, יש הרבה דברים שאפשר וצריך לעשות. למשל, אפשר להצביע על פערים משמעותיים בין צוותי הבדיקות ביכולות, בציפיות שמוצבות להם ואפילו בדרישות הגיוס. בנוסף, אין באמת אף אחד בסביבה שנחשב מומחה בבדיקות תוכנה ושאפשר להתייעץ איתו או להיעזר בו כדי להשתפר בתחום הספציפי הזה. בקיצור, למרות שיש מקום חשוב לבדיקות תוכנה אצלנו בעבודה, זה לא בדיוק נראה כאילו מישהו רואה בזה מקצוע שצריך להשקיע בו ולהשתפר בו. אם מוסיפים לזה את העובדה שהעבודה ברוב הצוותים היא עאלק-אג'ילית (אני חושב שזה יהיה התרגום שלי לscrum-but), אז כבר לא לחלוטין מובן לי למה אני חלק ממחלקת בדיקות ואיזו תועלת צומחת לי מזה.
לכן, בכל פעם בה אני יושב לדבר עם מישהו שקשור להנהלה  על "מה שלומי", אני מנסה לטפטף את הרעיון שהגיע הזמן לשפר משהו - או לבטל את מחלקת הבדיקות ולהסיר את הסרבול הבירוקרטי, או לנסות לגרום לכך שיהיה ערך להשתייכות למחלקת הבדיקות - סטנדרטים אחידים, גישה אחידה למטרת הבדיקות, הכשרות רלוונטיות לבודקי תוכנה, שיתוף פעולה בין צוותי הבדיקה - משהו.
אז דיברנו קצת, ותוך כדי השיחה דיברנו גם על כך שחסר לי לשמוע על בודקי תוכנה שבאשכרה מתעניינים במקצוע שלהם. נכון לזמן זה, אני יודע על שני אנשים שחשוב להם להשתתף בקהילת בודקים חזקה - המנהל הישיר שלי ואני (למען ההגינות, אני יודע שמנהל המחלקה שלי קורא מדי פעם חומר מקצועי, שזה יותר מאשר אני יכול לומר על רוב בודקי התוכנה אצלנו). ואז נציגת משאבי אנוש (מסובך הקטע הזה של לא להשתמש בשמות) הציעה הצעה - אני ממילא קורא כל מיני דברים (ראיתם את רשימת הבלוגים שיש בצד ימין? אני ממליץ בחום לעקוב אחריהם) - אז למה שלא אשלח דברים מעניינים לכולם ונראה לאן זה יוביל. 
בכנות? זה רעיון שעבר לי בראש פעם או פעמיים, ובכל פעם חשבתי והגעתי למסקנה שאני לא רוצה להיות אחד הנודניקים האלה ששולחים דוא"ל זבל לאנשים שלא אכפת להם. כדי להתגבר על זה היא הציעה רעיון עליו לא חשבתי קודם - אני יכול לפתוח רשימת-תפוצה חדשה שזו תהיה מטרתה. כך אדע שרק מי שביקש מקבל את ההודעות, ואולי זה גם יעודד אחרים לשתף דברים שהם מצאו בעצמם.
וכך עשיתי. אחרי סאגה קצרה להפתיע עם התמיכה הטכנית בהודו הצלחתי לקבל רשימת תפוצה משלי, ושלחתי דוא"ל לכל בודקי התוכנה עם הזמנה להצטרף.
עכשיו, כל מה שנשאר לי לעשות הוא לחכות שאנשים יצטרפו (למרות היענות ראשונית נמוכה, יש לי חשד שמנהל המחלקה יפעיל לחץ פיזי מתון על כמה אנשים כדי שיצטרפו גם הם). כך או אחרת, אני חושב שזה יהיה ניסוי מועיל - או שאדע שלאף אחד לא אכפת, או שאגיע לכמות סבירה של אנשים ואתחיל בתהליך חינוך מחדש. כך או אחרת, אם מקבלים את הגישה שג'יימס באך מציע כאן, מדובר בצעד קטן בדרך שלי להפוך למומחה לבדיקות תוכנה. לפחות ברמה המקומית במקום העבודה שלי (בקצרה, אם אין לכם סבלנות להקשיב לשעה של וידאו - אחד הקריטריונים, וכנראה החשוב שבהם, להגדרת מומחה בדיקות תוכנה הוא מוניטין של מומחה לבדיקות תוכנה). 
נראה לאן זה יוביל.  

-------------------------

Last week I got a meeting summon with a title "Periodic check-up with HR" (or something along those lines) - once every 6 months, or a year, or whenever they get around to do this, our HR "business partners" (I have no idea what does this mean, but this is the official title for the HR person that is my contact point for everything under the general HR domain) try to meet every employee in order to see how things are, whether there are any complaints, requests or things that bother them. Pretty nice of them, isn't it? At any rate - a 30 minutes talk with no goal other than to listen. So, in the worst case scenario - I would have spent half an hour while someone was listening to me vent some steam. I certainly won't say no to that. 
I came to this talk with the same message I get to every meeting with someone that is either part of, or have a direct channel to, upper management.  I'm unhappy about the attitude towards testing as a profession in our company. Even though I know that inside the team our contribution is recognized and appreciated, and even though as a tester I am able to significantly influence "my" product, once we get to the department level, I feel as if we are missing a lot that can and should be done. For instance, one can point on the fact that different test team have different skills level. not just a different skill-set, that is reasonable to have, as the products are different, but the basic capabilities of the test teams is different. One team is simply better than the team next to it in the same building. There are differences in the expectations set for the different teams and even in the minimum requirements when recruiting a new junior team member. In addition, there is no-one around that fills a role of a "testing expert" testers learn from. In short, even though actual testing is appreciated, it doesn't seem as if anyone considers it to be a profession that one should invest and get better in. Adding to that the fact that most of our teams are working in a Scrum-but, I really don't understand why am I part of a "QE department", or what do I gain from that.  
So, each time I find myself having this type of conversation with anyone that has anything to do with upper management ("upper" being a relative term here, from the viewpoint of the corporation I'm working in, they are probably considered as mid-level management) I try to advocate for the idea that something needs to be fixed - either abolish the concept of "QE department" and remove the bureaucratic hassle caused by having two departments managing each team, or add some value to being part of a dedicated testing department - Have some unified standards to testing, a common test approach or shared goals, testing-centered training - anything. 
While talking about this subject and trying to understand better what is it exactly I'm missing, one of the things that came up was that I don't see anyone around that seems interested in what's going on in any sort of a testers community - no one seems to be consuming any sort of professional content - books, blogs, podcasts, local meetups, nothing.  Currently I know of two persons that want, and do an effort to participate in a strong testing community - my direct manager and myself (though, to be fair, my department's director does read at least some professional texts, which is more that I can say about the rest of the testers around).Then, the HR business partner suggested something - Since I'm already spending time reading, why won't I share interesting things I find with the rest of the testers?
Frankly, I have thought of this idea several times, and decided that I don't want to be one of those annoying guys that sends spam to a large group of uninterested people. At this point she suggested an idea I have not previously considered - create a new mailing list that will be dedicated to the subject. This way only those who opted-in will receive what I share, and it may encourage others to share as well. 
And so I did - after a surprisingly short affair with our India based IT support, I was got my mailing list, and sent an invitation to all of the QE department. Now, all I have to do is to wait for people to join (despite a very low initial interest shown, I suspect that my director will be applying some sort of pressure on certain persons to join). One way or the other, I suspect it will be a useful experiment to conduct - either I will succeed at creating some sort of professional interest in testers around me, or I'll know that no-one around me cares enough even to passively listen. At any rate, if we accept James Bach's approach, this will be a step for me becoming a testing expert, at least in my local environment (For those that don't have the time to listen to a one-hour lecture, Bach's claiming that one of the criteria to being a testing expert, and probably the most important of them, is to have the reputation of one). 
So, let's see where will it take me.