 Hi, good afternoon everyone. Thanks for joining. Today I'll be talking about making a career out of open source software testing. And by the way, I'm Nag Pavan. I work in Red Hat, Bangalore office, India. And I'm a principal quality engineer. So my main role is testing and checking the quality of software products in Red Hat. And I mainly work on Gluster storage system. So these are about me. And that was my latest photo in Chesky Krumlov. And it was an amazing place. I have about 12 years of work experience across enterprise storage, servers, and platform domain. I've been in Red Hat for the last four years. And I'm working as a principal quality engineer in Red Hat Storage Team. So the talk and its target audience. So this talk will make sense for anyone who wants to make a career in software testing and don't know where to start, how to start, and how do I get hands on, get the real-time experience, and how do I use open source for doing the same? So open source is going to be the gateway of how I get my hands on testing a product. And this talk will be how to do that. And just a disclaimer, it is not a job offering or it's not a promise of the same. It is not a definitive workflow. It is more of knowing how to start and explore, where to start exploring, and how you can use open source software to learn software testing. So before that, I have a few questions. How many of you know what is open source? Can you raise your hands? Quite a number. How many of you have contributed to open source? Pardon? Okay. How many of you have contributed to open source? Okay. How many of you have contributed to Wikipedia? Okay. And how many of you have contributed to Wikipedia but not open source? Contributed to Wikipedia, editing the Wikipedia, but not to open source? Okay. One person. Actually you have contributed to open source. Wikipedia is also open source. just for information. So, if you are editing wiki pdf pages congratulations you have started already contributing to open source ok ok. Why did I choose to speak about this topic? Before joining Red Hat even I did not have much open source exposure. I was recruited into Red Hat for my storage knowledge and my platform and enterprise skills. But still however I had majorly contributed to open source through editing wiki pdf pages that was my interest I used to edit wiki pdf pages anything on India anything on politics of India or even cricket how football is famous in Europe cricket is famous in the Indian subcontinent. So, those were my contributions to open source. And surprisingly after I joined Red Hat I understood that it is very easy to contribute to open source. Before joining even I was if someone would have given a talk I would be sitting on the other side thinking how can I contribute. Hence seeing what I have learnt in the last 4 years I would like to take this opportunity to explain how you can learn software testing through open source or contribute to open source. So, what is open source? I have just taken this definition for wiki pdf I am not going to read the definition you have the time to read it. However, open source is more described in the next page it is more of free as in free speech not as in free beer. So, open source means you can modify the code you can modify the content you can share the content based again there are multiple licenses which means it is like a free speech you can talk anything similarly you can code anything you can share it with anything you can talk it talk as you talk with free speech you can talk and remember it need not be as free in beer no one is giving you anything for free there there can be free you can get the product for free, but does not mean open source means free. Open source I can sell a product using my open source license, but I can still make money out of it. So, it need not always be someone is giving a free product it is more about the ideology and the ideas which is free it is it need not be the product which is free. So, for example, Red Hat generates revenue by selling open source software which means the code is accessible the code is free to your access. However, we sell subscriptions and support and test which is the product that is how Red Hat makes money. So, which means it is not necessarily free it can be free it need not be free. Okay how many of you are aware of what is software testing that is that is a good number. So, in simple terms in my definition software testing is just checking a software product or be testing or quality I may be using the terms interchangeably quality test quality or testing or test engineer or a quality engineer is one and the same it is to check a piece of software whether it is working as expected. So, there are two parts to it one is validation and one is verification. Validation is checking if you have built the product right that means is the product meeting the expectations what was set in the specifications. Okay and it does the specifications meet the requirements let us think as a customer I have told you to build a product A when I build the product is it have I built the product A or have I ended up building a product something which is not A that is validation. Whereas verification it is checking if I have built the product in there rightly in the sense is A working as expected or can there be improvements to A that is what it is. So, here when I talk verification it is more about that does the product meet the specifications. So, first I get the requirements then I build specifications out of the requirements when you map the specifications to the requirements it is validation and when you check whether your specifications have been met is verification it can be little bit confusing, but you will get it over time. So, firstly when I talk about quality engineer firstly how does it feel to be a quality engineer. So, the perks of being a quality engineer or what do you enjoy by making a career in software engineer as a quality engineer you get to be the gatekeeper of quality of a product and to the shipment of the product. So, it is a quality engineering team which decides whether a product is worth shipping it or we should not be shipping it. If we feel the product is still not bug free there are lot of severe bugs then we have the right we have to use our veto power to tell we should not be switching the shipping this product because if the customer installs this product it is going to be they are going to face problems and then it is going to be a bad reputation on the product itself. You get to better the product with awesome quality and always remember it is but it is always good to have a decent product with very good quality rather than having a innovative and great product, but not having quality. There have been many companies and many products which have failed because of they may be very innovative, but there is lack of quality and so quality engineering and even software engineering for that matter there has you can debate whether first of all is software engineering is it an engineering stream or is it a art stream. So, there are people who do not agree that software engineering is an engineering stream because it does not follow any of the Newton's laws it does not follow any physics it does not follow gravity some talk it like it is an art because it requires more of a creativity and it requires you to think outside the rules and define it. So, it is left to you what you want to make out of software engineering. So, whereas quality engineering is more to do with again a mix of this first it is an art where you need to exercise your interest and be creative on how you can break the product. Also, you need to know the technology like first you need to have a broad picture of the technology and then only you when you know about a product let us take a simple product may be a mobile phone. When I when I know what I first need to understand what is the purpose of this mobile phone once at least at a higher level I understand what a mobile phone is then you start to break the product in the sense is the phone doing what I expected it to do is it having any problems when you start being curious or inquisitive about it then you start getting into testing the product you feel this product can be improved in so and so manner that is all part of quality engineering. What is required to be a software quality engineer it is just your interest that is the most important thing for anything you just need interest interest and interest and you need to have the curiosity to explore a product as I told you you want to test a mobile product you need to have the curiosity to test how how the product works you need to know what buttons are for what what if I switch the wrong buttons will it really impact my product like those. So, you need to be curious and you need to have a desire to keep learning now when there is a new update to the product what are what does the new update brings to this is it breaking something or is it improving it if it is improving it how is it improving it now. So, these are main part where to start. So, first thing is you need to understand what software testing is in detail. Software testing I have told it at a high level what it is it is like testing a product and finding if it is working as per the expectation and the specifications. However, you need to get more details into it there are multiple courses it can be through YouTube or whatever and you need to understand many different levels in that like for example, what is manual and what is automation testing. You can test a product manually like for example, take a website I want to log into the railway website of Czech Republic that is cd.cz now I can test it manually like if I enter the wrong username and wrong password will it allow me to book the tickets or let's think I want to test it at a scale let's think today it's a holiday in Czech Republic or the next day is a holiday in Czech Republic let's assume and everyone wants to log in and go to their native or go out of station. Now let's think of one lakh public is trying to log in is the product going to scale to that that I can't have one lakh audience go and test it so I need to automate that I will deploy a tool to automate that one lakh log ins and see if that system can bear the stress and so that's the difference between manual and automation again you need to understand what are the levels and methods of testing example unit testing integration testing and system level testing how does the system work when I integrate with different applications also what's the difference between functional and non-functional you need to know simple example in the just when I quoted the functional testing is checking if your login is working well or not non-functional can be breaking the system it can be doing something which is not functional you're going beyond like checking if one lakh log ins can the system take one lakh log ins or one million log ins and to start with okay so all this can be complicated now where do I start with the simplest and easiest way start with the documentation find a product see if you can read the documentation if you can understand the product and you think the documentation can be improved that itself is you have started your journey to testing a product you're testing you're doing documentation testing which is also a testing it's called static testing where you read the documentation and you can even improve the product there itself so the most important part to to continue or to explore software testing is you should be able to raise your first bug a bug is a anomaly in the product so if my mobile application for some reason it's not logging in after even I enter the right credentials it means it's there is a problem it's an anomaly which needs to be fixed and how do you fix it by raising a bug and for that you need to understand what is a bug lifecycle and software development lifecycle and remember your first bug is going to be critical to boost your confidence in you are you on the right path or you need at every point of time in life you need you need to boost yourself and you need confidence so even a small bug like let's think even there is a typo in the documentation or there is a typo in the man pages raise a bug on that product and that will really boost immense confidence in you and that's the first bug is generally a memorable one for any test engineer and you'll cherish that it can be a simple bug there is nothing like a good or a bad bug it's about a bug it just needs to be valid so now all I've talked about but how do I use open source projects to learn so first you need to do is choose an area of interest example are you interested in databases are you interested in front-end technologies are you interested in back-end for example I'm interested in storage and networking so choose which one you are interested in if you are interested in for example database maybe choose a MongoDB choose couch base there are many open source technologies if you're interested in storage there is safe there is to cluster if you're really interested in platform and kernel then you you can choose the Linux kernel itself then after that the next step is find out if there are open source technologies in the areas of your interest and you'll be surprised to know there are many or you will have an answer every every domain has a open source technology for example as I just told if you want to contribute to kernel and operating systems there is Fedora there is Ubuntu if you want to contribute to storage there is cluster there is safe all these are open source projects so once you find out that you just need to visit their website and their jithub page jithub is where you do the coding and you share the code it's like code life cycle is maintained through that visit that website and join the user list and develop development list or any other mailing list once you are done that go through the documentation when you so how do how did I learn cluster for example I went through the documentation of the product installed it so if I was able to install it easily is it really matching the documentation what I read through was I able to follow the same steps and was I able to install the same product as is if I weren't then if I have a hindrance in a certain step I reach out to the user list who are always helpful in the open source community you just need to send a mail to them and they will reply and now if you think there was a step missing you can raise your first bug you can tell you need to add this extra step to make the documentation easy and now once you have done with the installation and they've got a hands-on on it it's now start testing the product it's like for example is my storage product really scaling am I able to add disks to it am I able to remove storage from it is it working as expected everything will be mentioned in the documentation you need to read that and you start getting a hands-on and a feel of the documentation of the product itself and once you start exploring and once you start getting into this product over a few months of time you you'll be able to understand the product and now you know how to make the product better and surely you can see that there will be a lot of scope for improving the product and you need to raise bugs for okay these are all part of the manual part where you do this manually but what if I'm someone I'm interested in automation that is coding I want to code how to test the product not necessarily the product code itself but I want to code some certain automation scripts to make the life easy like I would want to test a login page but I don't want to test it every time I want to have it automated so I can use Python so first you need to know is find out if that product has a automation framework surely most of them have and if they have see what is the language they use for example some products use Gluster some products use Python some use go some use Perl some use just bash scripting so if you if you are comfortable in one of those or you want to explore that that's a place to learn go through the framework the code is open everyone can go through the code like in the previous company for which I worked the code wasn't accessible only to the employees of the company whereas in open source that's the beauty of it you get to see the code you know how close so see through the code write your first simple program it can be as simple as checking a login page whether I'm able to connect and log in or check the help of it and see if you can contribute to the automation how does this benefit so if I want to talk when compared with a close source company like in the previous company I would have worked if I wanted to have a hands-on on testing a product I wouldn't because I don't know what the product is I don't have access to the product itself but with the open source communities now you get a platform to have a real-time experience in testing a software product and you can contribute to the open source community what does this get you it first gives you how confidence on how to test a product whether you are whether you think software testing can make a career for you do you think it's worth exploring that you also get an opportunity to network and learn with many open source experienced community members that is through the mailing chains which I've talked about previously that is the user's list or the devilish you can prove yourself which may lead to one of the community members recognizing and even offering an internship or a job just think if you're continuously contributing to a product in the open source community let's think you're filing lot of very critical and important bugs over time or if you're even automating and writing automation scripts for the community which are really being used by others then who knows the community member and the maintainer may even see if there is a job opportunity and may request or may offer you a job or an interview also over time if you think yeah why not explore developing the product itself then you can even try exploring switching roles in other areas like software development where you develop the code of the product itself and the design of the product you can be a community moderator or a maintainer who maintains the community or you think I'm better at doing documentation or content development I feel I can develop the content better and in a more lucid manner for anyone to understand you can be a content development engineer also now how do how do I just take this I'll just take this example of Glacier which I've been working on so and how do I use it or how do I connect with the open source to really contribute to it so first in this case I've chosen a storage system storage file system that's my area of interest now what do I do as I told in the previous page you choose an area of interest I've chosen it now find out if there are an open source technology in the interest I've chosen storage domain yes there are you browse and you'll get to know Glacier there is there is there are multiple there is video there is data optimizer many now let's think I feel I pick Glacier now what do I do in the next thing go to their website just go to Glacier.org and if you go to the web page you get every information like how you can read the documentation there is community information how do I become part of the community how do I subscribe to the mailing list like Glacier users and Glacier devil and also you get to read and understand the product you can go to their documentation and then once you have a hands-on on that the documentation also explains you how to install or how to perform admin operations and once you have done that you start getting hands-on on that product once over time like maybe a couple of months based on your time and interest and your bandwidth once you start getting into the product see how you can improve the product and as you'll be following the Glacier users and devil list you'll be able to see many community members who are using this application or this product they reach out with questions they reach out with questions on how to use the product or can I use the product in a better way or can this product fit my solution or not once you start reading and trying to see in information from that you'll start knowing what the product is and that will help you prepare for even testing the product and also you get to participate in the community meetings which can happen weekly once and that helps in networking and knowing other people ideas and when you once start collaborating with them and also you get to know if in this case if there is an automation framework yes there is Glacier test you can contribute to that through coding through Python that's it any questions and answer questions yeah please yes yes yes that's a very good point thanks for bringing that so if you like I've chosen an example of Glacier but Fedora is probably a better example it it's an exposure to the operating system itself and there are many layers it can be at the kernel level or it can be at the user level it can be even if you are installing the browser is it working well or not you can participate in the test days Fedora has it whenever there is almost a new release every release before that they have test days where you can participate there and they also instruct you how to how to participate and how to be active there so feel free to reach out and reach out to Fedora mailing list you don't have to be held back by thinking what is it you just need to join the test days and they have they will be there to help you and that will be a very good starting point to start exploring and testing your product yeah okay any other questions you can please reach out to me anything else you want to talk anything which is not clear please reach out thanks thanks for