All posts by admin

How We Deliver Information Matters

I work in the software business – a lot of you reading this probably do as well. I help test, develop, and deliver software applications – and a whole lot of stuff in between. As I always tell my team, other teams, and stakeholders at my company – my team of Software Testers (me included) are information service providers.

To quote Michael Bolton – we provide quality related information to our stakeholders.

I deliver information in numerous ways – in test reports, bugs reports, emails, meetings, stand ups, slack, video calls – you name it.  Note: Now keep in mind, I deliver different types of information via different means – for example I don’t report bugs in Slack.

Many years ago I realized that how I deliver testing related information really does matter! It matters in terms of how it’s received, by whom, and what types of action is taken on it. How I write something, the wording I use, and the language I use matters. How I say something, the tone I use, and the body language I show matters.

Now imagine you’re looking to buy something that you’ll use in your home, you do your research, and finally come to a decision about the item you’ll spend your hard earned money to purchase. You’ve done your homework and are convinced that this item is absolutely amazing. You place an order and a few days later your item is delivered – but the box that arrives is wet, torn, dented and in terrible shape. You open the box and find a set of instructions about your item – but the instructions are poorly written, making it incredibly difficult to understand. Furthermore your item is wrapped in plastic that is hard to remove and after all that unwrapping, you find the item has some scratches on it. Sure the item itself may still be the amazing product you had ordered a few days earlier but lets face it – you’d probably be extremely disappointed considering it’s condition and how it was delivered.

How you report bugs – what you write, the information it contains, how you write it matters. The same goes for test reports, crash logs, information logs and how you deliver this information.

If you’re the person paying for something, whether it be a product or service – how it’s delivered will matter to you and will play a big factor in determining whether you’ll want to continue paying for it. If it’s delivered and looks sloppy, rushed, and inconsistent, chances are you won’t continue using and paying for it. On the other hand, if its clean, consistent, and you can see that time and effort was taken to deliver a quality service or product to you – you’ll likely be happy and will continue your using it.

It’s something to consider when determining good practices on how you expect yourself and your team to write bug reports, test reports, provide updates at stand ups, and other status meetings.

That being said, write and advocate for bugs well, put in time and effort into how you’re presenting your test reports, status, findings, and quality related information to your audience – because it matters and can go a long way. Eventually it will become a habit – a good habit!

 

 

Working With Testing Partners

This article was originally written for the QA on Request blog and was first published here.

Working with the right testing partner is important, but working effectively and efficiently with that testing partner is just as important. It is how you’ll be able to make the most of the service being provided to you.

When working with external testing partners, keep in mind that the really good ones don’t just think of themselves as your “testing partners”; their actions should reflect it as well. They’ll regularly communicate important testing updates and results with you, and work with you to help you get the information you need. But it’s not all just on your testing partners, there are things that you can do as well to get the most value out of testing.

Additionally, when working with your test partners – each test request, information need, client, and situation is different – meaning that what you do and to what degree, to get the most out of testing, will vary.

Communicate your information needs

Clearly communicate what it is that you’re looking for from your testing partner for each of your test requests. What does this mean? Testing is an information providing service that is designed to provide you with quality related information about your product based on your needs. Are you interested in knowing about the bugs in your product so that you can focus on fixing them? Are you interested to know the state of your product so that you can make a good decision about releasing it to market? Do you want to know how your product stacks up to your competition? Do you want to know how your product will behave during daily business usage? It’s these questions that you have – your information needs, that testing will provide you with details about so that you can make good, informed decisions regarding your product. It’s also both possible and perfectly normal that at different times throughout the development of your product, your information needs will be different, so let your testing partners know what your needs from testing are at different times within your product development lifecycle.

Testing priorities

Good testing partners will work with you to prioritize areas of your product that you require information about. Take the time to work with your partners to prioritize features and areas that should be covered. Testing can be an infinite activity but budget isn’t – it’s to everybody’s advantage to focus on the highest priority areas first. Your priorities can change as well throughout the course of a longer test period.

In the case of test requests that last a longer, there may be types of important information and bugs that testing has uncovered that gives you an insight about your product that you didn’t have before. Consequently the focus of what you’d like your testing partners to work on can change as well – let them know in these cases.

High risk areas

A good tester and test team will consider what your product is, what it’s meant to do, who your user base is, and based on the answers to these questions, can begin to define the high risk areas of your application. Nonetheless, external testing partners are often not present in product development and status meetings and may not always have the most up to date business, industry, and market information as quickly as your internal team. Work with your testing partners to review high risk product areas, and to give them this insight so that they consider it in their test design.

Now perhaps you are aware that the development of the latest and newest features of your product, which you’ve asked your test partners to focus on, has likely resulted in some important and previously functional areas of your product to become unstable or nonfunctional. In this case, let your testing partners know about this now high risk area.

Platforms and devices

With the emergence and popularity of mobile devices, and the abundance of software platforms that users will expect your product to work on, and making decisions about which platforms and devices to test on have that much more significance.  Are there particular platforms and devices that you absolutely want covered during testing? Let your testing partner know. Are you interested in learning more about platform and device market share information so that you can make a good decision about which devices to cover during testing? Speak to your testing partner and let them work with you to help provide these statistics.

Features that aren’t ready to be tested

Software product development is a continuous task and a good development methodology will often incorporate testing efforts as part of the development activity. If testing in this scenario is being done by an external testing partner, keep them in the loop about what features are not yet ready to be tested, as the developers may still be working on them. This will save you the time of having to go through bugs that aren’t valid from your perspective, but may be valid from the tester’s perspective if they are not aware of features or dependent features that are not yet ready to be tested.

Specifications documents

Are there specific requirements, specifications, or user flows that are important to your business for which you have documentation? If yes, it will be a good idea to provide these details to your testing partners so that they can account for these scenarios and provide you with information and cases where they may not work as desired.

Do your specifications documents consist of hundreds of pages? Unless for some reason there is value to have your testing partners go through it all, give them the essentials they need to do their job well – which is to provide you with important information about your product so that you can make good decisions about how to proceed with it. After all, you’re paying for actual testing, not having your test partners read tons of pages that will have no value or impact on testing, and will only eat up your testing budget. Keep in mind, each situation is different so consider your needs and what works in each particular situation.

To wrap it up

These are a few tips you can apply to improve the working relationship you have with your testing partners so that you are able to get the most of your testing budget with the information that testing will uncover about your product. Your testing partner is not just there to find bugs in your product, they should be a valuable member and contributor to your team, and help you quickly find bugs and other important things that matter the most to you.

Shifting to a team of Developers

This article was originally written for Testing Circus magazine and was first published on page 29 in the September 2014 edition and can also be found here.

A few years into my career as a Professional Software Tester, I had been working at a company with some great people in a nice, outgoing, dynamic environment as a software tester on the test team – a team of about 6 people. I enjoyed what I did and even back then, I was a tester who was always looking to learn new things and make myself a better, more skilled tester. One day, my manager at the time approached me about an opportunity he had recommended me for – it was an opportunity to be a part of the Research & Development team at the company as the software tester. I had built a good reputation on the team I had started on and amongst some of the other teams and individuals at the company. He also believed that I needed a new challenge at the company, and I believed that as well. As it turned out, it was an excellent challenge for me. He mentioned that I would be learning a lot, things that would really enhance my technical knowledge as a software tester and that it would only help my career, an assessment I agreed with as well. I took a few days to think it over, after which I made the decision to accept the opportunity to join the R&D team. At the time I knew it was a decision that would eventually be great for my career and towards my goal be being a better, more technical, and a more skilled tester. Little did I know then what I know now, that my decision to join the team would have a tremendous positive impact on my career as a professional software tester. I was under a lot of pressure (most of it from myself), and the learning curve I faced was steep. Things didn’t go smoothly right off the bat, it was actually quite rough in the beginning, but as I continuously put in the work and effort, things got smoother and from there, things went great.

Joining a team of Developers

They were now my team & I was a part of theirs. Now for the first time in my career, I was a member of a team with no other software testers on it. Instead, the members of my team were primarily composed of developers, a scrum master, and a product owner (we worked within an Agile Scrum software development framework). This was a big adjustment for me. I had never worked on a team surrounded by people who weren’t software testers. I no longer had a test manager (or a test coordinator) presenting my test results and findings to stakeholders, I was doing it myself. On the same account, if a development manager or lead wasn’t in favour of information I had found, I no longer had a test manager to “shield” me in this type of situation. The “safety net” of being around and on a team full of testers, was gone. This was one of the best things to happen, it allowed me to grow as a tester and as a professional. There was a lot more responsibility on my plate now, but I saw it as a lot more opportunity.

I wanted to show & prove to them that I was there to make them look good. The developers I was now working with, my new team members, had never directly worked with me before. It seemed that they weren’t yet sure if I was going to be an obstacle for them or if I was going to contribute to the team. I wasn’t there to cause chaos for the developers, nor to waste their time having them read through tons of bug reports I had logged into the bug tracking tool. I wasn’t there to point out and glorify bugs I discovered due to coding. I wasn’t there to slow things down or get in the way of deadlines. I was there to make them look good – but it wasn’t enough for me to just say that to myself, or even say it to them. I had to show them and prove it to them. Over the course of a few months (and tons of work and effort) I did, but it took a lot time and a lot of learning.

Worked with them, and took the time to learn

I showed them that not only was I willing to work with them, but that I genuinely wanted to work with them and that I wanted to learn. I had a lot of energy and was really up to that task and I wanted them to see that. I spoke to the technical lead on the team and got his feedback about how I could approach the different developers and how I could become a valuable and contributing member of the team. He offered his insights, after which I thought about his recommendations and how I was going to go about putting my plan into action.

I wanted to learn more about the different components that made up the system that the team built from the ground up and continued to do development & testing work on. I asked the developers questions about the different components and how they were all integrated together, the data and information flows, and in which ways they were independent from and dependent on each other. When the developers took time to explain these things to me, I always made sure to take notes. I informed them that I would be taking notes so that I could review them later to better understand and so that I wouldn’t need to ask them the same questions again. I made it a point to review the notes towards the end of the day, or even on my way home which sometimes prompted me to ask further clarifying questions. One thing I found extremely useful when they explained things to me using the whiteboard, was to draw out the diagrams of components, flows, and business logic, and other important information. I always made sure to re-draw the contents of the whiteboard or even take a picture of it. This was one of the most useful techniques that helped me the most when I first joined the team, to be able to understand the technicalities and interactions between the different system components. It enabled me to ask better questions about the implications and risks of the development work being done. I was able to think of potential problems or things nobody had yet thought of within the system when discussing the development & testing efforts of new features. I was able to design my tests better, and do more effective testing because of the knowledge I obtained regarding the components, and the information and data flows between them. As a result, I was able to focus my testing and coverage, which enabled me to provide more valuable information from the testing I was doing, in the available time I had to test.

A lot of times when I was providing information about the behaviours I was seeing during my testing, the developers would access the linux server to check system and error logs to get more information on what was happening. I took a lot interest in this as I was curious and wanted to see how they were further investigating what I was telling them from my testing. One day, one of the developers asked me if I had an SSH client on my machine and the accesses to log into the server myself. I was able to install an SSH client and get information on the accesses and permissions I would need to log into the server. Once I had what I needed, the developer took some time and explained the directory structures to me, and where some of the logs and files were located. They showed me commands I could use and how to use specific search commands to follow, and apply filters on for specific keywords I was looking for within the log files. I wrote down the directory structures, and the different linux commands they were using. It took me some time to get more comfortable navigating the different directories and using the different commands, but as I used them more regularly, and was able to find the information I was looking for, logging into the server to further investigate during testing, become one of my favourite skills to use from my arsenal. I was able to quickly and better investigate the causes of some of the behaviours I was seeing, and provide this detailed level of information back to the developers, who in turn were able to use the detailed information and quickly correct pieces of the code, or components where the problems originated from. The understanding of the linux server logs, in the context of our system allowed me to further investigate during testing and allowed the developers to focus on their development and less time investigating causes of some bugs and troubleshooting abnormal behaviours.

Pair Testing

My team and I worked in an open space concept, and in an open communication style atmosphere. As the developers and I got to know each other better, and got to know each others working styles better, they occasionally asked me to log into their local machines so that we could do some testing on new development items or bug fixes before they would commit their code and deploy to our development and test environments. I enjoyed this activity, it allowed for quick feedback and also saved us time instead of having to deploy, test, fix, re-deploy and test again later.

Other times, while testing and continuously providing quick, regular feedback (this was how we worked) the developers would come over to my desk, and we would test new features, existing features, and potentially impacted features together. This allowed us to look at the application or features we were testing from different perspectives and helped us identify and find bugs or the particular types of information we were looking for depending on our testing focus at the time. It was also fun and productive as one persons thought process often led to great test ideas from the other.

There was one developer in particular whom I tested with, at his machine without the use of any UI or tool, but rather by looking at his code. This was actually one of his ideas (an awesome idea), and it allowed me to contribute to the development efforts in an entirely new way. We would chat about what the code was meant to do and for which feature we were developing and testing, and we would go through the different code statements, conditions and branches and work together to think about which logic was covered, where and which cases were accounted for in the code, and work together to brainstorm and identify cases which possibly were not covered. This was an entirely new way for me (at the time) to be able to use my testing mindset and perspective to work together with a developer.

How I said things

Early on in my career, I often saw some (a small number) software testers approaching and informing developers that they had found some bugs in the application, in a tone and with a facial expression reminiscent of a smirk, as if they were bragging and shoving the fact that they found bugs due to coding, in the face of developers. I never quite understood this, nor grasped the concept. Furthermore, I remember seeing the faces and reactions of the developers and understood the animosity between developers and testers in some companies on some teams. I knew just from witnessing this, that I never wanted to be one of these testers (and for the record, the vast majority of the testers Iʼve worked with did not do this). I paid extra attention to the words I used, how I used them, and the tone in which I used them.

I never walked up to any of the developers with a smirk on my face and said something along the lines of “Hey Iʼve found some bugs in the application and broke your code”. I respected software and developers way too much. I considered the working and communication style on our team (open communication with a focus on quick and regular feedback) so that when I found bugs or something not working “correctly” I would always try to find as much information I could supporting the behaviour I was seeing regarding the bug and its extent. I made it a point to always tell the developers I was working with, in an informal way, and offering for them to come take a look at my observations at my machine. Depending on what the behaviour was that I was observing, and in which component it was likely taking place in, I often asked the developers if they had committed and deployed the code for that specific component or feature yet. I also learned the check in, check out and deployment process and system we used, therefore I would also go check myself at times. The point was, I was always communicating in an open manner and in a non-threatening tone. I focused on communicating in a helpful manner, for example, “Hey can we look into this a little further because something doesn’t seem right”.

I also learned when to bring things up. We worked in an Agile Scrum development framework, therefore I made sure I was always explicit (yet respectful) in my updates. If there was an issue I had discovered that would require some additional time (more time than usual) for the developer to come to my machine so that I could show them my findings, along with supporting information from my investigation, I would mention it in the morning stand up and ask a timeframe in the day that we (together) could look into it further. I think this showed the team that I wasn’t just finding bugs, reporting them and cleaning my hands of them – but that I wanted take the time to show them, and work with them to resolve them. If there was a discussion I had with a developer the previous day, and I was still unsure of the outcome of the discussion because it still somewhat contradicted my understanding, I would bring it up at the morning stand up (so that it could be brought to the attention of the correct people to be taken offline). I would explain my initial understanding and where the contradiction still remained based on what was discussed. This helped with transparency and for the whole team to chime in, and open up the discussion to determine if we were indeed all on the same page with the same understanding. In some cases we discovered that understanding on some things weren’t completely unanimous. Most importantly, it didn’t attempt to put anybody on blast. The approach I used in my communication with the team helped me become a welcome member of the team, and be recognized as contributing member and team player.

Got to know them

Just as I was extremely passionate about Software Testing and was always looking to enhance my skills, the developers on my team were equally passionate about Development. Over time, the understanding of being truly passionate about oneʼs craft allowed us to have an even better understanding and respect for what the other did.

What they believed in and practiced as Developers

Some of the things I spoke about to the developers on my team were their backgrounds as developers, where their interest in software and development stemmed from, how they got started and what they believed in and practiced as professional developers. It was interesting to hear the types of systems that they had helped develop before they had started working at the company we worked at, what types of industries they had worked in, what coding related work they did on their own time, and how they were increasing their knowledge and skill level. I had numerous discussions with them about their thoughts on information technology and software, this made for great and very insightful conversations. What made the conversations even more interesting was the fact that my discussions with each of the developers was different with each individual given the fact that their interests, backgrounds, coding they did outside of work were unique. Over time this led to a friendship between myself and each of the developers, unique friendships (that exist to this day even though we donʼt work together anymore).

Going out for lunches

From time to time I also went out to lunch with the developers on my team, often on a one to one basis. This allowed us to informally chat about the projects, the user stories and features we were working on, different partners we were working with and how that was going, as well as technical implications and decisions. This gave us a chance to brainstorm about the aforementioned topics and get into deep discussions about them. If the lunch was with the technical leads on the team, they always made sure to ask about my feedback for testing matters, and again that led to great informal discussions regarding testing matters in the context of our team. Over time working with the team, and the manner in which I did, focusing on integrating myself as a valuable and contributing member of the team and taking the time to get to know the developers, helped me build credibility (within the team) and build a great trust level amongst the members of the team – all of which helped us run like a well oiled machine and at the same time, having fun learning from each other and working together.

Final Thoughts

As I mentioned at the beginning of this article, I knew this would be a great opportunity for me to accept, but little did I know how great the opportunity would actually turn out to be, considering the amazing impact it ended up having for me as a professional and as a software tester. The things I learned, both on the technical and software side, as well engaging with and working on a team with individuals who were not just software testers, was superb. The experience was invaluable – to this day one of the greatest work experiences of my career so far.

I have worked at different companies, and on different projects with different teams and different developers under different conditions. At my current place of employment, I work very closely on projects with both software testers and developers, and have a great working rapport with both my fellow software testers and with the developers. I use many of the things I learned and applied in my experiences, on a daily basis, and encourage other testers on my team to do the same (I try to tell different testers in different ways as everybody has their own style). At my current place of employment the efforts have led to a cooperative, productive, and fun working environment. My efforts have also been recognized by others. Iʼve been told by my managers that the developers on the projects I work on enjoy working with me, given my testing skill, and how I engage them throughout the projects we work on together.

Working well with talented teams composed of individuals in different roles, focused on different activities is extremely important as companies are slowly starting to realize that testing isnʼt something that should be done alone, or after development is complete, but rather that testing is actually an important and valuable activity that goes hand in hand with development. As this becomes more common, it will be important for software testers to evolve and learn to enhance their skills and how they work with other members of the team – and I donʼt mean just other software testers.

Interview Basics

During the past few years in some of my respective roles, I have been part of the hiring process. I’ve helped define the the companies needs for test roles, identified skills and experience we’re looking for, reviewed candidates’ profiles, interviewed potential candidates, and have spoken to their references.

I’ve had candidates who’ve come prepared and done well, and on the other end of the spectrum, I’ve had candidates who’ve came to the interview extremely unprepared wasting both my time and theirs. It shouldn’t come as a surprise that they didn’t do well or get the job. There are some basics to an interview that I would’ve thought to be obvious to everybody, but in my experience they aren’t. Below I’ve listed a few basics things that anybody interviewing for a job should come prepared for and with.

Research the company

This is so basic yet I’ve had some candidates who’ve come into the interview not knowing anything about what we do. If you’re answer to the commonly asked question “what do you know about us?” is “not much”, you’ve crossed yourself off the list of potential hires. For me personally, when somebody answers the question in that manner, the interview is over. It would take a lot for the person to catch my attention and interest, and make me want to hire them after answering like that – it hasn’t happened so far. Visit the company website, check out their Twitter account, their LinkedIn profile – find out what they do, what and who their business is, and what their clients are saying about them.

Know what’s on your resume

Numerous times now I’ve asked candidates regarding something specific from their resume, whether it be a tool or technology they’ve listed, an experience with a particular project, or some form of education they’ve listed, and they seem dumbfounded by my question and are unable to answer it. It’s important to be aware of what you’ve written in your resume, people read it and will want to know more.

Bring a portfolio

I’m always puzzled when somebody comes in for an interview completely empty handed as if they just strolled in for a casual chat. I highly suggest you bring a portfolio with the following: a pen, a paper to take notes, a copy of your resume, and anything else that may be relevant for the interview.

Ask questions and take notes

It’s important to come prepared with questions for things that matter to you. When a candidate doesn’t come prepared with any questions and doesn’t think of any during our discussion, it makes me wonder whether they are really interested in working at the company and being a successful part of it, or if the person is just looking for paycheque. You’ll be spending approximately one third of your day at the office with the team, five days a week – don’t you want to know more about the work you’ll be doing, how you’ll be doing it and whom you’ll be doing it with? Some of the questions may get answered at different points of the interview – so prepare more than just a few. Also take notes. There is a lot of information, topics, and details discussed during an interview and chances are you won’t remember them all. You’ll need these notes so that you can review them once the interview is done, and if you’re offered the job, there are things you’ll want to keep in mind and consider.

Dress well

As the saying goes “Dress for the job you want, not the job you have”. You don’t want to come in looking like you were just called into the office for a chat while taking an afternoon stroll. I won’t write much more about this as I feel that it’s a given (not to mention common sense).

Answer questions like a real human

What do I mean by this? There is a lot of information about the type of questions and how to answer them on the internet. There is nothing wrong with reading up on this in an effort to help you prepare. I actually encourage it, but don’t memorize and practice answering questions with “typical” or “standard” answers you read on the internet. I can’t speak for all interviewers, but I like to hear real answers from real humans based on their experiences, their knowledge, and their skills. I like honesty, and originality in responses – it makes for a much more interesting and informative discussion for both parties. Don’t tell the interviewer what you think they want to hear, tell them from your perspective and in your words what your answer to the question is and feel free to explain why.

Practice and learn about interviews

Read up on interviewing well, practice, understand the different types of questions that can be asked during an interview. It takes time and practice to become really good at being interviewed. You may not do great at every single interview as there are a lot of factors at play during an interview, only a handful of which you can control, but that doesn’t mean you won’t learn from each and every one and if the lessons you learn are applied well, it will only make you better. The more you learn and understand about interviews and questions, the better at them you will get. There is a lot of good information out there!

 

What I’ve Been Up To

It’s been a long while since I’ve posted anything. I’m still here, still doing some great work, and taking pride in what I do. I still love what I do, what I stand for, what I believe in, and of course this skilled craft we call Software Testing. A little bit below about where I’ve been and what I’ve been doing …

In November 2015 I had the opportunity to attend TestBash NY and had a chance to catch up with Matt Heusser. Now we didn’t just talk software and testing, but we had a nice chat about some of the most important things in our personal lives including family, our significant others, the gift of time time, and celebrations. I’ll never forget that chat and the advice Matt gave to me that day. One of the things he told me was that it was okay to step away from the testing world to focus on personal stuff and then balance it all out and to never forget or take for granted the people and things that are most important to us.

Now I’ve still been reading, staying up to date on the happenings in the testing and software world on twitter, and still doing some great testing at work. Matter of fact, I just finished up working on a project with a great software development team working alongside a fellow skilled and talented tester, and a strong team of individuals that filled out the different roles on our team. Great news is that I’ll be staying alongside many of the team members to work on our next project!

Throughout the past 10 months I’ve continued to experience a lot, learn a lot, and observe a lot of different things – I have a ton I’m going to be talking about in my upcoming posts.

 

 

TestBashNY – 99 Second Talks

I had the opportunity to attend TestBashNY in early November 2015. I learned a lot, had a chance to catch up with old testing friends, and made some new ones. I also gave a 99 second talk!

Presenting in front of an audience is nothing new as I’ve regularly present, hold trainings and workshops at work, and present at MOIIST workshops, but this is the first time I’ve spoken in front of this many people at the Gramercy Theatre in New York.

I knew that one of the challenges in giving a 99 second talk was making sure I clearly delivered my message. When you’re prepared and have a message to deliver – those 99 seconds go quick! I took some time to prepare my points and to figure out how I was going to deliver my message that morning. I tweaked certain points of my talk throughout the day and then gave my 99 second talk.

Mark Tomlinson was awesome throughout the entire process, with the support, encouragement, and making sure was able to catch my flight back home by having me be the second presenter (I didn’t want to go first). I had to leave right after I gave my talk to make sure I was able to catch my flight back home.

You can see my talk and all the others below – I am the second presenter.

99 Second Talks at TestBashNY

 

TestBashNY – Part 1

 

TestBash NY
TestBash NY @ Gramercy Theatre

A few weeks ago I had a chance to attend a great two day Software Testing conference in New York City called TestBashNY! Why was it great? Well I got to learn tons, I gained more knowledge & skills to help me become an even better Software Test professional, I got to actively converse with some very smart, intellectual testing people, and I gained insights into a lot of content, and teachings to bring back to my team here in Montreal, as well for for myself. And if that wasn’t enough – I also got to  catch up with some old friends and make a few new ones!

Now before I continue, I would like to thank Richard Bradshaw for holding a contest to allow contestants a chance at a free ticket to the TestBashNY conference session. You see, I entered and was one the five winners. The contest was a classy act by Richard and offered a great chance to those interested to attend.

I would also like to thank my colleague and founder of the company where I currently work, Simon Papineau for investing in me to take the trip to New York, and giving me the opportunity to attend the tutorials as well as the conference session. I’ve bought back a great deal of information for our team here in Montreal.

The first day of the conference was the tutorial sessions. I registered for the Mobile Test Design tutorial instructed by JeanAnn Harrison which I attended in the morning, and in the afternoon I attended the Swimming with Sharks tutorial instructed by Martin Hynie and Anna Royzman.

Mobile Test Design

I registered for this tutorial as testing on mobile platforms is within the realm of testing that I do, and I always focus on and work at getting better at what I do, in addition to learning new and better ways to do what I do.

We spoke about how testing mobile applications is so much more than just the GUI, and how there are a lot more things going on in a mobile application that can be considered in test design, depending on what the application is, the type of application it is, and what it does.

We discussed a lot of great content in this tutorial, the questions and tips from the attendees gave me ideas to think about in the context of my own mobile tests. JeanAnn spoke about the different types of mobile applications out there including native apps, hybrid apps, mobile web apps, and mobile websites. Questions from the attendees helped us further break down how we can figure out within which category the applications we test fall under, and the types of applications that typically fall under certain categories. Determining and knowing the type of mobile application you are testing can really help you design effective tests, and prioritize them to help you gather important information for your stakeholders.

We actively discussed and brainstormed performance tests on native applications, hybrid applications and mobile web applications.

Towards the end of the tutorial, JeanAnn spoke about User Experience Tests and tips for designing these types of tests. There was a lot of content covered – so much that I’ve asked JeanAnn if she would be willing to share her slides from the tutorial (which she did), so that I can take some of the content introduced and learn more about it and build on it during my own time – which I look forward to doing!

Swimming with Sharks … Communication Tools for Testers

I registered for this tutorial as I am an advocate for effective collaboration and communication to help add value to your team. I’ve previously written and spoke on the subject, but the content I learned about in this tutorial will help me take my knowledge and collaboration skills even further as I take time to breakdown and study the tutorial, the exercises we did, their outcomes, and the lessons learned.

Martin and Anna used the Trading Zones metaphor to help create a visual communication framework for the group to consider and work within as part of our exercises. We worked in small groups of 3-4 people and using the framework shown to us, placed some of our real-life workplace relationships with people we work with at some level, within the framework in one of the four trading zones (Interlanguage, Fractionated, Enforced, Subversive). We discussed why the relationship was in the trading zone that we had put it in and sometimes discussing it with group members gave different perspectives of where that relationship really might be and ways to improve it, which in turn is a step in improving the collaboration level and communication within the team and/or workplace setting.

I learned about interactional expertise and how it applies to me as a Software Tester. I also learned about the Scarf Model, and how to think about it and begin to use it to better collaborate with others. These are two very interesting topics that were introduced to me that I’ve slowly started to learn more about and learning to better apply it in my own communication with others in my own communication and working relationship with others.

Roundup of the tutorials

There are so much more details, synergies, discussions, and hands on learning that took place in these tutorials, in addition to the actual content that was discussed, and taught – my post touches on the main topics of the tutorials, and some of the details around them . Both tutorials have taught me enough to take what I’ve learned and do the research to build on my knowledge and skill to apply my learning in my own situations.

Stay tuned for Part 2, where I’ll write about the second day – the talks!

Being a Good Teammate

As Software Testers we work with many different people in many different roles. Some of the roles the people we work with occupy can include other software testers, developers, software architects, product owners, project managers, database analysts, clients and many more depending on the context of the project and makeup of the project team. These individuals are often our teammates.

Throughout the years I’ve had teammates ranging from terrible to bad to good to truly great. It’s the truly great teammates that I remember and would like to work with again. The terrible and bad teammates exhibited behaviours and actions that I will never exhibit towards anybody (you can learn a lot from negative behaviours).

In my experience, a lot of the qualities of being a good teammate also apply to being a good professional. A lot of it is not doing and exhibiting certain types of behaviour, and not treating others in ways we wouldn’t want to be treated – which leads us into three short areas I’ll cover below.

Don’t bark commands

Regardless of your role and position within the team, nobody enjoys having commands barked to them. I’ve seen this in different companies, and people in general don’t enjoy being spoken to and treated in that manner. Most people don’t enjoy working with people who bark orders. Speak to teammates with respect, it doesn’t hurt to respectfully ask as opposed to barking orders. Being a leader and a good teammate doesn’t mean you have to bark orders to have an impact on your team – unless it’s negative impact you’re trying to achieve.

Listen

Listening just might be one of the least used communication skills in today’s society and within the workplace. I often see individuals prepared and ready to speak before the individual speaking has finished talking. It’s important for teammates to be able to express themselves and say what they are trying to say and for the audience to listen, hear, and consider what is being said. Listening and considering what our teammates are saying can also lead to better replies, discussions, and solutions which are beneficial to the entire team and project.

Work together and learn from each other

A big reason I remember the truly great teammates I’ve worked with is because of how we worked together, and learned from each other to deliver great work on the projects we contributed to. Working together on a project is not some type of internal competition (or shouldn’t be), it’s about working and collaborating with our teammates to help deliver great work together, using everybody’s skills, expertise, and contributions to help deliver a successful project. Learning from each other is not the same as quickly telling somebody how something works without considering whether they fully understood or not – it’s clearly explaining concepts that are important to the testing being done in the context of the project that end up benefiting the team as well as the stakeholders of the project. Working together and learning from each other involves the exchange of good ideas, building on these ideas, using the energy that comes from the collaboration, and incorporating in into our own specific tasks so that we can do them better.

There is a lot more to being a great teammate than the areas I’ve covered above. Different situations will enable us to be good and great teammates in different ways and exhibit different qualities .

Being a good teammate (and especially a great one) is one of the things that will leave a positive impression on those you work with and help them remember you as such. It’s also one of the things that can help you build a good reputation for yourself and be somebody that other’s will want to work with.

 

I Don’t Need Explicit Written Requirements to Test

I’ve been in Software Testing and Quality for almost 10 years now, and a disturbing trend I tend to hear every now and then, are individuals on the test team complaining and whining that they are unable to test because there aren’t any written requirements available.  I’ve seen these same individuals refuse to begin any testing effort (not even willing to launch the system) without having the written requirements in front of them, and waiting for somebody to produce these requirements before even launching the system, not realizing the valuable time they’ve just wasted, time that could have been used to test.  Of course, I believe a big part of this approach and expectation could be due to their uninformed belief of what software testing (and their job) really is – but more on that later.

Even before I practiced and got better at approaching situations where I was asked to test and told there were no written requirements, I believed in getting the information I needed in order to test.  In the last few years I’ve began referring to it as “information hunting”.  This information could be anything relevant to the situation at hand, from the manner in which to access the system under test, to who the end users of the system will be.

If I find myself in a situation where there are no written requirements, I am going to go “information hunting” to find out more about the project and testing situation I am in.  If I find myself in a situation where there are written requirements, I’ll be sure to read & analyze them and I will also go “information hunting”.  You see, there is SO MUCH more to software testing than just the requirements. I’ve seen many systems in the past, with tons of written requirements and numerous test cases mapped to each of the requirements, yet when I actually used the system myself and tested it – it was less than positive experience using the system and there were many problems present, despite of all those test cases that had been mapped to each of the requirements and “passed” by whomever was assigned to run the tests.

Now going back to what and how some people on test teams view their role and job – some people just don’t see software testing as anything more than validating the requirements – but that’s not software testing.  Software testing is about providing important information about the quality of the system under test.  One of the many things I’ve learned from Michael Bolton is that you don’t need explicit written requirements in order to launch a system and begin to question it, observe its behavior and learn about it – so that you’re to provide important information about the quality of the system you are testing.  This is such a huge part of Software Testing that I believe is missing on many software test teams – the understanding and appreciation of the skills required to be a valuable software tester, the use of the brain, and actually thinking while interacting with the system under test.

When I go “information hunting” I want to learn and get more information about the current test situation (every test situation is different) that I find myself in.  I carefully put together and analyze all of the information I am able to gather about the testing needs and the system, so that I can create and share my test approach with my managers and project stakeholders – and carry out good testing.

I like to find out the reasoning justifying the cost behind the development effort.  What are the information needs of my stakeholders for this specific test effort at this specific time?  What is the purpose of the system and what are the goals that the system is setting out to accomplish?  Who will be the end users of the system?  How will the users use the system?  Why will they use the system?  What will they use the system for?  When will they use it?   Who are the developers with whom I will be collaborating with and can/will they answer my questions about technical changes and possible impacts to consider in my test approach?  Who can I work with to discuss the risks?  Who can I work with to discuss security and performance expectations?  Which other systems and components will be impacted?  There is more information I may look to seek out depending on the specific situation and circumstances surrounding the system under test (for example test environments, remote team members, third-party involvement).

Using the information I hunt down, I am able to think about the system and how I am going to approach my assignment of testing it.  The answers to my “information hunting” questions have a direct impact of what I test and how.  I am always thinking when I test, while I observe my interactions with the system, and the behaviours I observe within it.

Within the past few years I have also studied and learned different test skills, the use of judgement, oracles, and heuristics and to incorporate them into my testing, in order to help me find and report important quality related information.

I don’t need explicit written requirements to start testing, nor do I heavily rely on them in order to do my job well and to be a valuable contributor to the team.

My Love for Computers and Software – Part 1

How it all started – Part 1

My love for computers and software began when I was 10 year old kid in elementary school.  At that time, the only students who had access to the computer lab were selected (and very intelligent) students in grade 6. I was a student in grade 4 at the time but I had a good friend who was in grade 6 and recognized as one of the smartest and intelligent students in the school – and of course he had access to the computer lab, even during lunch hour!

Finally after months of hearing how awesome computers were and what you could do with the software on them, my friend asked the teachers in charge of the computer lab if he could bring me to see the lab one day during lunch hour. I was a very well behaved student and so there wasn’t much hesitation from the teachers to allow me to come into the lab during a lunch hour one day, under one condition – I could see but not touch.  So the day finally came, I got to enter the computer lab and see 10-12 computers – I was told they were MacIntosh computers (I noticed an apple on each of the machines).  So I sat and watched my friend type things onto the keyboard and the computer execute the commands my friend was requesting. This was all so mind blowing to me!

After that lunch hour, it was 2 years later that I was a student in grade 6 and allowed back into the computer lab!  By that time computer class had become a part of the school curriculum. Finally I had the opportunity to be the pilot behind the keyboard, and type commands onto the keyboard and see a green turtle on screen execute the commands (I was using Apple’s logowriter programming language) I was typing. It was cool to watch it all happen 2 years before, and even cooler to be the individual behind the keyboard.

I was 12 years old at the time, and I had no idea how powerful and common computers & software would become in the years to follow and how much my interests (and life) would be tied to computers and software …