tag:blogger.com,1999:blog-24812288096153887182024-03-18T19:56:49.232-07:00Test Automation For Manual TestersBlog About Learning Selenium Test Automation And Java Programming; Selenium WebDriver Training In Vancouver, BCAlex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.comBlogger170125tag:blogger.com,1999:blog-2481228809615388718.post-35217531106096216192017-12-30T12:39:00.000-08:002017-12-30T12:48:58.782-08:00How to Learn Selenium WebDriver in 3 Days<span style="font-size: large;">or How to Learn Selenium WebDriver like a JEDI</span><br />
<br />
<br />
I like Star Wars movies.<br />
<br />
I still remember seeing the first episode, A New Hope, at the cinema, back in the 1980s.<br />
<br />
Since then, I watched it and the following 5 episodes, produced by LucasFilm, many, many times.<br />
<br />
The new ones, produced by Disney, are still good (much simpler though) especially Rogue One and The Last Jedi.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://static1.squarespace.com/static/5632a0a3e4b0c1d58a53baad/t/5a401032419202d4b199bba0/1514147896745/the-last-jedi-theatrical-poster-film-page_bca06283.jpeg?format=500w" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="711" data-original-width="480" src="https://static1.squarespace.com/static/5632a0a3e4b0c1d58a53baad/t/5a401032419202d4b199bba0/1514147896745/the-last-jedi-theatrical-poster-film-page_bca06283.jpeg?format=500w" /></a></div>
<br />
<br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">There is an interesting difference between the old Star Wars movies and the recent ones.</span><br />
<br />
In The Last Jedi, Luke Skywalker agrees to teach Rey just 3 lessons about the force. She needs to learn how to be a JEDI to be able to fight the imperial army and yes, Kylo Ren.<br />
<br />
The lessons happen fast and only bits of knowledge and wisdom go from the teacher to the student. Not much skills as Luke is now a wise old man instead of a JEDI knight as before.<br />
<br />
<b>Just 3 lessons are enough for Rey to discover her potential and the mighty force</b>. Having the force, she lifts a huge pile of rocks that stops her friends from running from the imperial army.<br />
<br />
Unfortunately, as the episode title explains, the last JEDI disappears so in the future, there are no more JEDIs to teach about the force.<br />
<br />
No more lessons about the force but probably the lessons are not needed any longer.<br />
<br />
If Rey can learn the force in 3 lessons, maybe she can explain it to others in 1 lesson or maybe in just a few sentences.<br />
<br />
<b>The force is no longer accessible to a few but to all.</b><br />
You just need to put your mind to it and there it is.<br />
<br />
<br />
<span style="font-size: large;">Now, why shouldnt we be able to do the same with Selenium WebDriver?</span><br />
<br />
3 lessons.<br />
<br />
It is not that hard.<br />
<br />
<b>The secret of the force is in how the study material is broken down per day.</b><br />
<br />
<b>Day 1</b><br />
learn about html, xpath, css, browser dom, eclipse, java basics, unit testing.<br />
<br />
<b>Day 2</b><br />
learn about object oriented notions like classes, objects, inheritance, composition, interfaces, polymorphism, generics, predicates, reflection, streams.<br />
<br />
<b>Day 3</b><br />
learn the page object model, page factory, loadable component, slow loadable component and a few other design patterns.<br />
<br />
<br />
<b>And that's it, we are there, we can lift our own automation rocks.</b><br />
<br />
This is totally doable if you are a Star Wars believer.<br />
<br />
Everyone can do whatever they put their mind to.<br />
Everything is easy to do and learn.<br />
Everything is accessible to all of us, even the force.<br />
The JEDI knights go away and who need them anyways?<br />
<br />
<br />
<span style="font-size: large;">Now, the old Star Wars episodes are a little different from the new ones.</span><br />
<span style="font-size: large;"><br /></span>
In The Phantom Menace and Attack Of The Clones, the process of becoming a JEDI knight is explained in detail. You had to start your training at the JEDI Academy at a young age and complete it.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://images-na.ssl-images-amazon.com/images/I/81Vl2RQrZkL._SL1500_.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="800" data-original-width="800" height="640" src="https://images-na.ssl-images-amazon.com/images/I/81Vl2RQrZkL._SL1500_.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
Then, a mentor would guide you through real life experiences until you are ready to pass the JEDI trials for becoming a knight.<br />
<b><br /></b>
<b>No one became a JEDI in 3 lessons or 6 or 15.</b><br />
<b>No matter how skilled, talented or gifted.</b><br />
<br />
Instead, the trainee would go through a long, difficult and intensive education with both teachers, peers and mentors.<br />
<br />
This would totally work for Selenium WebDriver as well.<br />
<br />
Selenium WebDriver learning is basically learning how to code which is best done with teachers, peers and mentors.<br />
<br />
So Star Wars is a viable source of inspiration.<br />
<br />
You just have to watch the proper episodes.<br />
<br />
<b>Watch The Last Jedi and believe that 3 lessons are sufficient.</b><br />
<b><br /></b>
<b>Watch The Phantom Menace and understand that 6 months is a better time range.</b><br />
<b><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='480' height='399' src='https://www.blogger.com/video.g?token=AD6v5dz6Wiej6lPu8ufLnkUd_So-TaHGV4MtEMwDRf2kjCNlTszbrxkOc_6oHPk9rcWq8BNKufu_Q017N-ij9wxdhw' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
<b><br /></b>Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com0tag:blogger.com,1999:blog-2481228809615388718.post-84363008430705741262017-12-19T08:20:00.003-08:002017-12-19T08:20:41.310-08:00What are the risks of taking selenium<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
This question took me by surprise.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
Risks of taking selenium?</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
Are there any risks?</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
Am I in danger?</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
Am I sick from too much Selenium?</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://cdn8.openculture.com/wp-content/uploads/2015/07/20081123/chuck-jones-evolution.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="460" data-original-width="633" height="464" src="https://cdn8.openculture.com/wp-content/uploads/2015/07/20081123/chuck-jones-evolution.png" width="640" /></a></div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
<br /></div>
<div background-url="https://qph.ec.quoracdn.net/main-qimg-5a29fdc3d9f18c0176b3f9baa0e66b06.webp" class="gif_noclick_wrapper" gif-embedded="https://qph.ec.quoracdn.net/main-qimg-886fd2147bac5a9e5a334cc5ffd3894b" is-playing="false" style="color: #333333; cursor: -webkit-zoom-in; display: inline-block; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; position: relative;">
<div class="gif_embed_noclick">
</div>
</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
Read along.</div>
<hr class="qtext_hr" style="background: rgb(226, 226, 226); border: 0px; box-sizing: content-box; color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; height: 2px; margin: 2em auto; padding: 0px; position: relative; width: 148px;" />
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
Of course, there are risks.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
But first, a few words about <b>benefits</b>.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
Selenium is a mineral.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
It is taken into the body in water and foods. People use it for medicine.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
Selenium is used for diseases of the heart and blood vessels, including stroke and “hardening of the arteries” (atherosclerosis). It is also used for preventing various cancers including cancer of the prostate, stomach, lung, and skin.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
Some people use selenium for under-active thyroid, osteoarthritis, rheumatoid arthritis(RA), an eye disease called macular degeneration, hay fever, infertility, cataracts, gray hair, abnormal pap smears, chronic fatigue syndrome (CFS), mood disorders, arsenic poisoning, and preventing miscarriage.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
Selenium is also used for preventing serious complications and death from critical illnesses such as head injury and burns. It is also used for preventing bird flu, treating HIV/AIDS, and reducing side effects from cancerchemotherapy.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
And the <b>risks</b>?</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
Selenium deficiency is very rare in the United States and Canada.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
Selenium deficiency can cause Keshan disease (a type of heart disease) and male infertility.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
It might also cause Kashin-Beck disease, a type of arthritis that produces pain, swelling, and loss of motion in your joints.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://johnkstuff.blogspot.com/uploaded_images/FallingHare_comp_002-726189.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="602" data-original-width="800" height="480" src="https://johnkstuff.blogspot.com/uploaded_images/FallingHare_comp_002-726189.jpg" width="640" /></a></div>
<br /></div>
<hr class="qtext_hr" style="background: rgb(226, 226, 226); border: 0px; box-sizing: content-box; color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; height: 2px; margin: 2em auto; padding: 0px; position: relative; width: 148px;" />
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
Now, joking aside, <b>what are the risks of taking, sorry, learning Selenium WebDriver?</b></div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
You are a manual tester.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
You want to learn test automation, meaning programming and Selenium WebDriver.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; margin-bottom: 1em; padding: 0px;">
Some of the risks that you are exposing to are</div>
<ol style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 16px; list-style-image: initial; list-style-position: initial; margin: 0px 2em 1em 0px; padding: 0px;">
<li style="margin: 0px 0px 0px 2em; padding: 0px 0px 0.7em; position: relative;">you may find that you don’t have enough motivation; most people have high enthusiasm initially which, when confronted with the challenges of learning programming, goes away bit by bit until it is over ; so <b>one of the risks is that you start learning, then stop it and feel like you failed</b></li>
<li style="margin: 0px 0px 0px 2em; padding: 0px 0px 0.7em; position: relative;">you may realize while learning Selenium that you like it so much that you dont want to do manual testing any longer; i know people who after learning some automation did not want to go back; so <b>another risk may be that your manual testing days are over but your automation days are started</b></li>
<li style="margin: 0px 0px 0px 2em; padding: 0px 0px 0.7em; position: relative;">you may get to a point where you will be willing on learning Selenium and programming not only during your work hours but also at home; <b>so you will be risking some of your free time (and your family’s)</b></li>
<li style="margin: 0px 0px 0px 2em; padding: 0px 0px 0.7em; position: relative;"><b>you may be risking some of your friendships</b> if you make progress with your automation learning; some of your tester friends who cannot do it may not be positively impressed by you doing what they cannot</li>
<li style="margin: 0px 0px 0px 2em; padding: 0px; position: relative;">finally, <b>you may be risking your career and your job</b>; when you learn enough programming and automation, you may stop being a tester and become a developer; you lose your tester job but gain a developer one</li>
</ol>
Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com0tag:blogger.com,1999:blog-2481228809615388718.post-33130182503958454842017-09-03T17:47:00.000-07:002017-09-09T13:29:15.424-07:00TestNG benefits for Selenium test automationShort ebook on TestNG benefits for Selenium test automation
<iframe allowfullscreen="true" frameborder="0" height="569" mozallowfullscreen="true" src="https://docs.google.com/presentation/d/e/2PACX-1vRDMay33YdVRgn3mDX4Gr4m5LQVsgF2z5-0qYxf99aAwGziQmZfZhomW9iyLuAOEvv3afgJxXEKy4di/embed?start=false&loop=false&delayms=3000" webkitallowfullscreen="true" width="960"></iframe>Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com0tag:blogger.com,1999:blog-2481228809615388718.post-78494242738252356322017-08-26T15:49:00.001-07:002017-09-09T13:29:56.077-07:00How To Run Selenium Automated Tests In JenkinsShort ebook on how to get started on using Jenkins for test automation with Selenium
<iframe allowfullscreen="true" frameborder="0" height="569" mozallowfullscreen="true" src="https://docs.google.com/presentation/d/e/2PACX-1vTtL0TdpAvdPYqXYuU05DjVYyWv9H3us_jqPYOoES4Z8zTz87ragh3fuV0ro9uhbDVXitlpMAoJNMwK/embed?start=false&loop=false&delayms=3000" webkitallowfullscreen="true" width="960"></iframe>Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com0tag:blogger.com,1999:blog-2481228809615388718.post-47589914866065966332017-08-02T14:50:00.005-07:002017-08-12T15:17:57.576-07:00How do I identify fake Selenium testers?<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikmpPFjUQh-A6derf3knWPetSUx3Sq-w3VWBVOEsUodn0z4U8xgHuyuxcFQRXKYIxHGFS07aGFbpWFUzWhhjDo84Tzphzh9YLj2ZaPToZ54FdogMxkRaUpFyRTkZFEMgB56sDOrwvHARk/s1600/real_fake.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1280" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikmpPFjUQh-A6derf3knWPetSUx3Sq-w3VWBVOEsUodn0z4U8xgHuyuxcFQRXKYIxHGFS07aGFbpWFUzWhhjDo84Tzphzh9YLj2ZaPToZ54FdogMxkRaUpFyRTkZFEMgB56sDOrwvHARk/s640/real_fake.jpg" width="640" /></a></div>
<br />
<br />
<br />
There are things that can be done before the hiring interview, during the interview and after.<br />
<br />
<br />
<b><span style="font-size: large;">BEFORE THE INTERVIEW</span></b><br />
<br />
<i><span style="color: red;"><b>The tester gets a Java coding project from <a href="http://codility.com/">Codility.com</a> to be done in 30 minutes</b></span></i>.<br />
<br />
It does not have to be very difficult, even an easy one is good enough.<br />
<br />
Such as finding all characters from an array that are duplicated.<br />
<br />
Or checking if a sequence of ( and ) is well formed (each ( has a corresponding )).<br />
<br />
The solution for this project should show if the tester understands the basics of Java and can write “easy to understand” code for a simple task.<br />
<br />
If the solution is good, <i>I ask for a <b><span style="color: red;">GitHub repository (or a blog link) where the tester has sample Selenium automation code</span></b></i>.<br />
<br />
<a href="https://seleniumjava.com/2017/08/12/how-do-you-recognize-a-fake-selenium-tester-by-his-code/">Looking at code that the tester wrote in the past shows you what code he may write in the future</a>.<br />
<br />
Good Selenium testers have sample code available for interviewing purposes so that they can prove before the interview how good they are.<br />
<br />
When looking at sample code, I pay attention to<br />
<ul>
<li>how the locators are designed</li>
</ul>
<ul>
<li>where are the locators stored (in the page classes, separate locator classes, property files)</li>
</ul>
<ul>
<li>if page object model is implemented</li>
</ul>
<ul>
<li>how page object model is implemented (to interact with the site’s features or to interact with HTML elements)</li>
</ul>
<ul>
<li>how short/long the page classes are</li>
</ul>
<ul>
<li>how many methods are in each page class</li>
</ul>
<ul>
<li>how easy to understand the test methods are</li>
</ul>
<ul>
<li>how long are the test methods</li>
</ul>
<ul>
<li>the automation framework’s layers</li>
</ul>
<ul>
<li>if utility classes are used as parent classes of the page classes (since utility classes are not following OOP principles)</li>
</ul>
<ul>
<li>if lots of static methods and variables are used (static and OOP are not going well together; also, static can be a problem for parallel execution)</li>
</ul>
<ul>
<li>if there are classes that implement functionality that already exists in the Selenium library (in other words, if the tester is interested in re-inventing the wheel)</li>
</ul>
<ul>
<li>how error handling is implemented</li>
</ul>
<ul>
<li>if there is duplicated code</li>
</ul>
<ul>
<li>if the code uses static delay</li>
</ul>
<br />
<br />
<b><span style="font-size: large;">DURING THE INTERVIEW</span></b><br />
<br />
The phone interview is first.<br />
<br />
This is an opportunity to understand how good the communication skills are.<br />
<br />
And to <i><b><span style="color: red;">assess more the programming skills by asking questions with different degrees of complexity</span></b>.</i><br />
<br />
The questions can be about the Selenium library and even more about Java.<br />
<br />
<i>Good Java knowledge is essential for good Selenium test automation.</i><br />
<br />
This means much more than basic concepts since understanding of topics such as<br />
<br />
<ul>
<li>polymorphism</li>
</ul>
<ul>
<li>interfaces</li>
</ul>
<ul>
<li>generics</li>
</ul>
<ul>
<li>predicates</li>
</ul>
<ul>
<li>annotations</li>
</ul>
<ul>
<li>streams</li>
</ul>
<ul>
<li>composition</li>
</ul>
<ul>
<li>code refactoring</li>
</ul>
<br />
is essential.<br />
<br />
The in-person interview is next where the programming skills assessment continues.<br />
<br />
I may <i><b><span style="color: red;">show the tester some code samples</span></b></i> and ask<br />
<br />
<ul>
<li>what is correct</li>
</ul>
<ul>
<li>what is incorrect</li>
</ul>
<ul>
<li>what would he change and why</li>
</ul>
<br />
<br />
<br />
<b><span style="font-size: large;">AFTER THE INTERVIEW</span></b><br />
<br />
Finally, the practical test.<br />
<br />
<i><b><span style="color: red;">An end-to-end test needs to be automated with Java and Selenium WebDriver</span></b>.</i><br />
<br />
First, an automation framework should be created.<br />
<br />
Second, the automation framework is used for the following end-to-end-test:<br />
<ol>
<li>open www.bestbuy.com</li>
<li>search for a keyword</li>
<li>select a product that is available online</li>
<li>add the product to the cart</li>
<li>open the order basket</li>
<li>choose to continue the checkout as a not-logged in user</li>
<li>specify the user address info</li>
<li>specify the payment type</li>
<li>specify invalid payment info</li>
<li>submit the order</li>
<li>check that the correct error is displayed</li>
</ol>
<br />
<br />
<br />
I know, <b>this process is complicated and time consuming.</b><br />
<br />
But <i>there are no simple solutions for complicated problems.</i><br />
<br />
<b>Better hiring processes are needed.</b><br />
<br />
If not, you will keep hiring fake testers that are "professional test automation engineers" and either create a lot of bad code that will eventually be thrown away.<br />
<br />
Or will create one test per month.Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com2tag:blogger.com,1999:blog-2481228809615388718.post-65534346477706666272017-08-01T19:45:00.001-07:002017-08-01T19:55:22.394-07:00Why are Selenium automation jobs decreasing?<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSyfkKlEaInGBxeaUoYxj4ZA3GFIU33ghaL4TX2so0OzSQARII9D6HTeE7fDOj5MGYuR6KSSJyKRMRqlwr7_ycQvgRmFutuJyp5nLiZveMu1JBksk8l97Vt4ByCz6s78a2t4oHgLKA5yU/s1600/selenium+jobs.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="731" data-original-width="959" height="486" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSyfkKlEaInGBxeaUoYxj4ZA3GFIU33ghaL4TX2so0OzSQARII9D6HTeE7fDOj5MGYuR6KSSJyKRMRqlwr7_ycQvgRmFutuJyp5nLiZveMu1JBksk8l97Vt4ByCz6s78a2t4oHgLKA5yU/s640/selenium+jobs.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">from indeed.com</td></tr>
</tbody></table>
<b><br /></b>
<b><br /></b>
<b><br /></b><br />
<b>The market demand for test automation is higher than ever but the number of automation jobs is lower.</b><br />
<b><br /></b>
<br />
How can this be?<br />
<br />
<br />
<br />
One reason is the "test automation" name.<br />
<br />
Test automation is not a good name for this type of work.<br />
<br />
Automated checking or tool-assisted testing (James Bach) are describing better what actually happens.<br />
<br />
Automation does not automate or replace creative testing but just checks that simple and clear test cases work.<br />
<br />
<br />
<br />
<i>Because test precedes automation in the name, companies and testers thought that test automation is a part of testing and it should be done by testers.</i><br />
<br />
Testers thought that test automation is the silver bullet for their careers and went ahead with the "learning phase".<br />
<br />
After learning the bare minimum of Selenium and a programming language in less than a year, many claimed that they are automation engineers instead of manual testers.<br />
<br />
And some companies, especially the ones without rigorous interviewing processes, hired the manual-testers-converted-overnight-to-automation-engineers.<br />
<br />
These "engineers" started with enthusiasm to build automation projects and wrote code, lots of code.<br />
<br />
Which in most cases was just a bunch of crap.<br />
<br />
<br />
<br />
I have seen such projects built by automation "experts" who<br />
<ol>
<li>do not understand inheritance and composition</li>
<li>have no clue how to use interfaces</li>
<li>don’t know what page factory, loadable component or yes, maven are</li>
<li>use maps instead of objects</li>
<li>create test classes with thousands of lines of code and hundreds of methods</li>
<li>create page classes with click/type/getText methods for each page element (again with thousands of lines of code)</li>
<li>use static methods and variables heavily</li>
<li>use utility classes a lots</li>
</ol>
<br />
<br />
<b>These are testers that are experts at writing-VB-code-in-Java.</b><br />
<br />
The only thing that matters for them is if the code works now.<br />
<br />
It is less important that the code is inefficient, not object oriented, difficult to read and maintain.<br />
<br />
It is also less important that the code fails randomly when executed in Jenkins.<br />
<br />
If the tests fail, we just rerun them until they pass.<br />
<br />
After a while, companies start realizing that things are not going well at all, especially when they have a few thousands of tests which fail with a 25-30% rate.<br />
<br />
And, at this moment, they switch direction and hire either developers or testers who became developers.<br />
<br />
In most cases, a good developer can do the work of 3-4 VB-in-JAVA automation experts.<br />
<br />
<br />
<br />
So, see, it is completely possible that the business demand is higher but the number of jobs lower.<br />
<br />
<b>The market matures and filters out people who are not suitable or ready for automation work.</b><br />
<br />
Pradeep Soundararajan (from Moolya) said somewhere on Quora that<br />
<blockquote class="tr_bq">
Not all manual testers will disappear, only the unprofessional ones.</blockquote>
<br />
My opinion is that this is happening for test automation as well:<br />
<blockquote class="tr_bq">
The professional automation engineers will stay, the other ones will fade away.</blockquote>
<br />
<br />
<b>Contrary to what you hear from a lot of people, test automation is not easy and it is not for anyone.</b><br />
<br />
To do it well, you have to learn a new job and become a developer.Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com2tag:blogger.com,1999:blog-2481228809615388718.post-29007848096832907652017-06-04T20:17:00.000-07:002017-06-04T20:17:10.341-07:00How to create page object classes with Selenium WebDriverNew article from seleniumjava.com:<br />
<br />
<a href="https://seleniumjava.com/2017/06/05/how-to-create-page-objects-with-selenium-webdriver/">https://seleniumjava.com/2017/06/05/how-to-create-page-objects-with-selenium-webdriver/</a>Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com2tag:blogger.com,1999:blog-2481228809615388718.post-77728978047165366412017-04-30T18:42:00.000-07:002017-04-30T18:42:10.364-07:00Test automation - from theory to reality<span style="font-family: Arial, Helvetica, sans-serif;">If you have been reading about test automation in magazines, blogs or books, you get the idea that automation is nice, easy, straightforward and beautiful.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Because all these talk about theory, most of the time. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: large;">Theory is always like a finished, s</span><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: large;">imple, beautiful, well designed, professionally-done </span></span><span style="font-family: Arial, Helvetica, sans-serif; font-size: large;">building. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjknEmPTTEzrBw3Bn0HDp1PXJE_8TpanBS7S0kv4YKQHtz6h5roJabvH2bfKYNO9idxy736XTJeChK-QeOnsZJKNNYq8xFR0UqIg9xyiGXNDqT9eDhQ1MU1INYZoyYDtga1isOvlJK_i1o/s1600/building.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="432" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjknEmPTTEzrBw3Bn0HDp1PXJE_8TpanBS7S0kv4YKQHtz6h5roJabvH2bfKYNO9idxy736XTJeChK-QeOnsZJKNNYq8xFR0UqIg9xyiGXNDqT9eDhQ1MU1INYZoyYDtga1isOvlJK_i1o/s640/building.jpg" width="640" /></a></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">In theory, automation is about having </span><br />
<br />
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><b>independent tests</b></span></li>
</ul>
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><b>tests that create their own data</b> and delete it after being executed </span></li>
</ul>
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><b>dedicated test automation environment </b></span></li>
</ul>
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><b>tests that run in parallel </b></span></li>
</ul>
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;">tests that use simulated external dependencies </span></li>
</ul>
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><b>tests that run in 3 minutes </b></span></li>
</ul>
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><b>good code written by professional people</b></span></li>
</ul>
<br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">This all sounds great and makes you want to get started with test automation tomorrow :) </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: large;">And how is test automation in reality? </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Have a look at this construction. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw6hwpD6LaYlIc5QNC1saGSlRzUiewMNRIHz66wHQYZyw4_8_JWU6vtCTLeiir8GuZ_w1d9fW-irjfYSB3ktoYiMj7wZB3IY7vq27-xWoIMZ7LnTyb4CwuOAkGeexnmGRmdueKN2XqpmQ/s1600/construction.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw6hwpD6LaYlIc5QNC1saGSlRzUiewMNRIHz66wHQYZyw4_8_JWU6vtCTLeiir8GuZ_w1d9fW-irjfYSB3ktoYiMj7wZB3IY7vq27-xWoIMZ7LnTyb4CwuOAkGeexnmGRmdueKN2XqpmQ/s640/construction.jpg" width="640" /></a></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Automation in real life means in many cases</span><br />
<br />
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><b>dependent tests</b>; if one test fails, multiple other tests fail </span></li>
</ul>
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><b>tests that use manually created data</b>; the data is also different from environment to environment; </span></li>
</ul>
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><b>shared test automation environment</b>; the tests are created and executed on an environment used as well for manual testing </span></li>
</ul>
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><b>tests that run in "parallel"</b>; instead of having tests executed in parallel on multiple Jenkins slaves, you have tests executed in "parallel" on the same slave </span></li>
</ul>
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;">tests that use real external dependencies </span></li>
</ul>
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><b>tests that run in a few hours </b></span></li>
</ul>
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;"><b>bad code written by non-professional people</b></span></li>
</ul>
<br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Theory and reality are never similar. </b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">To get from reality to something similar to theory is difficult and takes a long time. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">But it is worth doing, that is for sure!
</span>Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com0tag:blogger.com,1999:blog-2481228809615388718.post-42753836023644206252017-04-30T12:41:00.000-07:002017-04-30T12:41:05.526-07:00SeleniumJava.com post - How to deal with windows authentication popups<div style="background-color: white; box-sizing: inherit; color: #6a6c6e; font-size: 17px; padding: 0px 0px 1.5em;">
<span style="box-sizing: inherit; color: #ff6600;"><span style="font-family: Arial, Helvetica, sans-serif;">If you dont like Bugs Bunny, maybe you should not continue reading.</span></span></div>
<div style="background-color: white; box-sizing: inherit; color: #6a6c6e; font-size: 17px; padding: 0px 0px 1.5em;">
<br /></div>
<div style="background-color: white; box-sizing: inherit; color: #6a6c6e; font-size: 17px; padding: 0px 0px 1.5em;">
<span style="font-family: Arial, Helvetica, sans-serif;">What is the first thing that I do every morning at work?</span></div>
<div style="background-color: white; box-sizing: inherit; color: #6a6c6e; font-size: 17px; padding: 0px 0px 1.5em;">
<strong style="box-sizing: inherit;"><span style="font-family: Arial, Helvetica, sans-serif;">Check the results of the automation scripts executed in Jenkins over night.</span></strong></div>
<div style="background-color: white; box-sizing: inherit; color: #6a6c6e; font-size: 17px; padding: 0px 0px 1.5em;">
<span style="font-family: Arial, Helvetica, sans-serif;">I want to know how many scripts passed or failed because of the work done in the previous day.</span></div>
<div style="background-color: white; box-sizing: inherit; color: #6a6c6e; font-size: 17px; padding: 0px 0px 1.5em;">
<span style="font-family: Arial, Helvetica, sans-serif;">Most days, some scripts pass and some fail.</span></div>
<div style="background-color: white; box-sizing: inherit; color: #6a6c6e; font-size: 17px; padding: 0px 0px 1.5em;">
<span style="font-family: Arial, Helvetica, sans-serif;">But recently, most scripts failed.</span></div>
<div style="background-color: white; box-sizing: inherit; color: #6a6c6e; font-size: 17px; padding: 0px 0px 1.5em;">
<span style="font-family: Arial, Helvetica, sans-serif;">This was very unusual so I looked into it right away.</span></div>
<div style="background-color: white; box-sizing: inherit; color: #6a6c6e; font-size: 17px; padding: 0px 0px 1.5em;">
<span style="font-family: Arial, Helvetica, sans-serif;">All failures followed the same pattern: <em style="box-sizing: inherit;">the scripts failed on opening the site in the browser.</em></span></div>
<div style="background-color: white; box-sizing: inherit; color: #6a6c6e; font-size: 17px; padding: 0px 0px 1.5em;">
<span style="font-family: Arial, Helvetica, sans-serif;"><em style="box-sizing: inherit;"><br /></em></span></div>
<div style="background-color: white; box-sizing: inherit; color: #6a6c6e; font-size: 17px; padding: 0px 0px 1.5em;">
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="https://seleniumjava.com/2017/04/30/how-to-deal-with-windows-authentication-popups/">Read more on SeleniumJava.com</a><i>.</i></span></div>
<br />
<br />Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com0tag:blogger.com,1999:blog-2481228809615388718.post-67065925885736093782017-03-25T03:30:00.002-07:002017-03-28T07:59:12.298-07:00A day in the life of an automated testerWhat does an automation engineer do?
<br />
<br />
What skills does he need?
<br />
<br />
How does a work day look like?
<br />
<br />
What problems does he face?
<br />
<br />
How are they solved?
<br />
<br />
What else except writing code is involved in test automation?
<br />
<br />
Are all automation jobs the same?
<br />
<br />
<br />
<br />
<br />
<b>Test automation jobs are as diverse as the manual testing ones.
</b><br />
<br />
Many things can be different between 2 automation jobs:
<br />
<ul>
<li><b>application type</b>: web site, mobile app, windows application or a console utility</li>
<li><b>programming language</b>: automation is done mostly in Java and C# but also in Ruby, Python and JavaScript</li>
<li><b>automation library</b>: open source (example: Selenium WebDriver, Appium, Robot Framework) or proprietary (UFT)</li>
<li><b>how the tests are designed</b>: unit tests, behaviour integration tests, etc</li>
<li><b>project's design</b>: page object model, page factory, keyword driven are just a few different models that can be used for automation</li>
</ul>
<br />
<br />
<b>Test automation jobs can focus on different things.
</b><br />
Some create the automation project from scratch.
<br />
Others create tests for an existing framework or redesign existing automation frameworks.
<br />
<br />
<br />
<b>Every job is about solving problems.
</b><br />
<br />
This series of articles aims to describe a day in the life of an automated tester, the problems that the tester has and their solutions.
<br />
<br />
Everything that follows is about a fictive job but inspired from reality.
<br />
<br />
Thanks for reading.
<br />
<br />
<br />
<br />
<a href="http://test-able.blogspot.com/p/day-4.html">Day 4 - Page Object Model</a>
<br/>
<a href="http://test-able.blogspot.com/p/day-3.html">Day 3 - About Automation Test Data</a>
<br />
<a href="http://test-able.blogspot.com/p/day-2.html">Day 2 - What Type Of Automation Job Is This?</a>
<br/>
<a href="http://test-able.blogspot.ro/p/day-1.html">Day 1 - First Day Of A New Job</a>
Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com1tag:blogger.com,1999:blog-2481228809615388718.post-45257779576854741002017-03-17T02:49:00.000-07:002017-03-17T03:23:33.323-07:00The good, the bad and the ugly of test automationEach manual tester that I know wants more excitement and challenge in his day-to-day work.
<br />
<br />
Because, lets admit it, manual testing gets boring at times.
<br />
<br />
So the testers look at the next best thing such as test automation.
<br />
<br />
They imagine a day when, having enough knowledge and skill, the manual testing will be traded with test automation.
<br />
<br />
Which will be exciting, challenging, interesting and never boring.
<br />
<br />
In other words, Good.
<br />
<br />
This is obviously not true all the time.
<br />
<br />
Test automation experiences can be good.
<br />
<br />
But also bad.
<br />
<br />
Or ugly.
<br />
<br />
<b>Good, bad and ugly, 3 faces of test automation.</b><br />
<br />
<br />
<br />
Have you seen this movie with Clint Eastwood?
<br />
<br />
<a href="https://en.wikipedia.org/wiki/The_Good,_the_Bad_and_the_Ugly">The good, the bad and the ugly</a>
is one of the greatest films of all time.
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWjl-4WrT7cWoXpsXM1lIKDR8Hl8gPXAMiiTYeTOVw4U4pngf-8Nm220-KA9ahWsB0bw9vUlfhVah059rLyJO3LpClYWToY0g1FMshr4agdwppNV4shg83JTkx46Dy1OEULCmJSwt2C48/s1600/the+good+the+bad+the+ugly.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWjl-4WrT7cWoXpsXM1lIKDR8Hl8gPXAMiiTYeTOVw4U4pngf-8Nm220-KA9ahWsB0bw9vUlfhVah059rLyJO3LpClYWToY0g1FMshr4agdwppNV4shg83JTkx46Dy1OEULCmJSwt2C48/s640/the+good+the+bad+the+ugly.jpg" width="640" /></a></div>
<br />
<br />
It is about 3 gun fighters, the good, the bad and the ugly, all in search of a burried treasure.
<br />
<br />
Clint Eastwood as Blondie: <b>The Good</b>, a subdued, confident bounty hunter, capable of pity and providing comfort for dying soldiers,
<br />
<br />
Lee Van Cleef as Angel Eyes: <b>The Bad</b>, a ruthless, unfeeling, and sociopathic mercenary.
<br />
<br />
Eli Wallach as Tuco: <b>The Ugly</b>, a comical and oafish but cagey and resilient, fast-talking Mexican bandit who is wanted by the authorities for a long list of crimes.
<br />
<br />
<br />
<br />
Back to test automation.
<br />
<br />
How are automation projects good, bad or ugly?
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVYcGAkZ5lqAZYdo8d5nSGXunj35l7K6SUhkirphVBmMU9bBsWQd8rHGUxn3n634laoYxy0VKwx4oEB5i5x1dJl9TMFLrEGbp9QcBmY3rYx5PQ5Z7rkMvzet__lTaoha5NXdfCqEseFHU/s1600/the+good.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVYcGAkZ5lqAZYdo8d5nSGXunj35l7K6SUhkirphVBmMU9bBsWQd8rHGUxn3n634laoYxy0VKwx4oEB5i5x1dJl9TMFLrEGbp9QcBmY3rYx5PQ5Z7rkMvzet__lTaoha5NXdfCqEseFHU/s640/the+good.png" width="640" /></a></div>
<br />
<h2>
The Good</h2>
You get hired to create test automation scripts for a web site.
<br />
<br />
The website already exists and it is stable.
<br />
<br />
There is no test automation in place.
<br />
<br />
Test data is easy to get and recreate.
<br />
<br />
The test environment is not shared with other test and development teams and can be easily refreshed.
<br />
<br />
It is your responsibility to create the test automation project from scratch including
<br />
<ul>
<li>the test scripts</li>
<li>the page objects</li>
<li>the test automation framework</li>
</ul>
<br />
You have the knowledge and the skills for the job.
<br />
<br />
You will not do all work by yourself but as part of a team that includes other people with similar knowledge, motivation and skills.
<br />
<br />
<br />
<br />
<br />
<h2>
</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcGSkIpDC3HsCu4IV2W-1e52EzdrBL_Bsx5pj7gjyRt9fLuA5Q3WxkFC-BWY56rpz3tj9esqvHvJy3MumtdS6FQf6FrQ34-79ErES1TsCxYPzak9GUfYm5WZ1P6MTg-ueI7bOIJGaqnxM/s1600/the+ugly.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcGSkIpDC3HsCu4IV2W-1e52EzdrBL_Bsx5pj7gjyRt9fLuA5Q3WxkFC-BWY56rpz3tj9esqvHvJy3MumtdS6FQf6FrQ34-79ErES1TsCxYPzak9GUfYm5WZ1P6MTg-ueI7bOIJGaqnxM/s640/the+ugly.png" width="640" /></a></div>
<h2>
The Ugly</h2>
You start a new job and get handed an automation project created a few years ago.
<br />
<br />
Multiple teams worked on it during this time and created a few thousands of tests.
<br />
<br />
The tests run with a 30% fail/error rate.
<br />
<br />
The code has
<br />
<ul>
<li>tons of duplication</li>
<li>classes with thousands of lines of code</li>
<li>lots of static delays and implicit waits</li>
<li>it supports multiple applications (mobile site, desktop site)</li>
</ul>
<br />
The page object model is applied incorrectly with each page class having separate methods for clicking, typing, getting the value of each element.
<br />
<br />
The test environment is shared with other manual test teams.<br />
<br />
The test data is very difficult to configure and recreate.<br />
<br />
It is your responsibility to clean the project up, to stabilize it by reducing the fail/error rate and to bring the project in shape.
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJE1o_01Ekm5x5QSSiAWgEeYOdudQMx4spRJVxyYbqS09uEVZglHS2IxqDD8xZYkf2JYMo336Mn967L9I3Fyn08MKxvVOYec6bx2HKVURTwshGHTwT3TWqu4_uoOzUTdVGLs_d7Vdjl7g/s1600/the+bad.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJE1o_01Ekm5x5QSSiAWgEeYOdudQMx4spRJVxyYbqS09uEVZglHS2IxqDD8xZYkf2JYMo336Mn967L9I3Fyn08MKxvVOYec6bx2HKVURTwshGHTwT3TWqu4_uoOzUTdVGLs_d7Vdjl7g/s640/the+bad.png" width="640" /></a></div>
<br />
<h2>
The Bad</h2>
This is when you get hired for a test automation job and you are not ready for it.
<br />
<br />
Your skills are incomplete and your experience limited.
<br />
<br />
There are high expectations from you and you cannot deliver.
<br />
<br />
Not without significant time dedicated to training.
<br />
<br />
<br />
<b>3 faces of the same experience.</b>
<br />
<br />
The good, the bad and the ugly of test automation.
Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com1tag:blogger.com,1999:blog-2481228809615388718.post-85774630720186726162017-01-28T21:43:00.001-08:002017-03-18T02:13:46.634-07:00Where can I find a full test automation project with Selenium WebDriver?You have been learning test automation with Selenium.
<br />
<br />
You went through lots of concepts and would like to see how they all work together.
<br />
<br />
Where can you find a project that uses everything you learned and more?
<br />
<br />
Here :)
<br />
<br />
What follows is a small project that I built a while ago for a job interview.
<br />
<br />
It uses many test automation concepts such as:
<br />
<ul>
<li>page factory</li>
<li>base classes</li>
<li>html classes</li>
<li>test listeners</li>
<li>test ng assertions and fixtures</li>
<li>annotations</li>
<li>custom locators (javascript and jquery)</li>
<li>screenshots</li>
<li>saving errors in text files</li>
</ul>
<br />
<br />
The exercise consisted in automating the following test case with Java and Selenium WebDriver:
<br />
<br />
<ul>
<li>Launch bestbuy url (www.bestbuy.ca)</li>
<li>Search a product and add it to cart</li>
<li>Go all the way through checkout process and place the order with invalid credit card</li>
<li>Capture the error message due to invalid credit card</li>
</ul>
<br />
<br />
Before downloading the project and checking the source code, a few details about the project.
<br />
<br />
<h2>
Project details</h2>
<dl>
<dt><b>Maven project</b></dt>
<dd>- all dependencies are managed through the pom.xml file </dd>
<br />
<dt><b>Test NG</b></dt>
<dd>- unit testing library</dd>
<br />
<dt><b>Java JDK 8</b></dt>
<dd>- used for lambda expressions and streams</dd>
<br />
<dt><b>Page Factory</b></dt>
<dd>- pattern for creating page object and page fragment classes</dd>
<dd>- the elements of page object/fragment classes have names and locators</dd>
<dd>- names and locators are implemented using annotations</dd>
<dd>- available locator types are id, xpath, css, name and javascript</dd>
<pre class="brush: java">
@Name("SEARCH_HEADER")
@FindBy(className = "main-navigation-container")
public class SearchHeader extends HtmlElement{
@Name("SEARCH_FIELD")
@FindBy(id = "ctl00_MasterHeader_ctl00_uchead_GlobalSearchUC_TxtSearchKeyword")
private TextInput searchKeywordTxt;
@Name("SEARCH_BUTTON")
@FindBy(id = "ctl00_MasterHeader_ctl00_uchead_GlobalSearchUC_BtnSubmitSearch")
private Button searchBtn;
public void search(String keyword) {
searchKeywordTxt.click();
searchKeywordTxt.clear();
searchKeywordTxt.sendKeys(keyword);
searchBtn.click();
}
}
</pre>
</dl>
<br />
<br />
The project has the automation framework classes in the main folder and all test items in the test folder.
<br />
<br />
<h2>
Main folder (framework classes)</h2>
<dl>
<dt><b>annotations classes</b></dt>
<dd>- FindBy</dd>
<dd>- FindByJQUERY</dd>
<dd>- FindByJS</dd>
<dd>- Name</dd>
<dd>- Timeout</dd>
<pre class="brush: java">
package com.bestbuy.demo.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
public @interface Name {
String value();
}
</pre>
<br />
<dt><b>html element classes</b></dt>
<pre class="brush: java">
package com.bestbuy.demo.element;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebElement;
public class CheckBox extends TypifiedElement {
public CheckBox(WebElement wrappedElement) {
super(wrappedElement);
}
public WebElement getLabel() {
try {
return getWrappedElement().findElement(By.xpath("following-sibling::label"));
} catch (NoSuchElementException e) {
return null;
}
}
public String getLabelText() {
WebElement label = getLabel();
return label == null ? null : label.getText();
}
public String getText() {
return getLabelText();
}
public void select() {
if (!isSelected())
getWrappedElement().click();
}
public void deselect() {
if (isSelected())
getWrappedElement().click();
}
public void set(boolean value) {
if (value)
select();
else
deselect();
}
}
</pre>
<dt><b>exceptions classes</b></dt>
<br />
<dt><b>decorator and proxy classes used by the page factory</b></dt>
<br />
<dt><b>page class</b></dt>
<dd>- used as base class for the page object classes</dd>
<br />
<dt><b>page factory classes</b></dt>
<br />
<dt><b>miscellaneous classes such as</b></dt>
<dd>- custom driver class, screenshot class</dd>
<dd>- enumerations (used to avoid hardcoding data in the page objects)</dd>
<dd>- simple logger class</dd>
<dd>- property class</dd>
<dd>- TextFile class</dd>
</dl>
<br />
<h2>
Test folder (test items)</h2>
<ul>
<li><b>base test class</b> (used as base by the test classes)</li>
<br />
<li><b>page objects classes</b> (all page object and page fragment classes)</li>
<br />
<li><b>test listeners</b> (class for taking a screenshot and logging exceptions in case of failures)</li>
<pre class="brush: java">
package com.bestbuy.demotests.testlisteners;
import java.lang.reflect.Field;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
import com.bestbuy.demo.exceptions.HtmlElementsException;
import com.bestbuy.demo.utils.Driver.BrowserDriver;
import com.bestbuy.demo.utils.Driver.Screenshot;
import org.openqa.selenium.WebDriver;
import static com.bestbuy.demotests.BaseTest.BaseTestClass.*;
public class TestListener implements ITestListener {
@Override
public void onTestFailure(ITestResult result) {
try {
Screenshot screenshot =
new Screenshot(getDriverFromBaseTest(result));
screenshot.capture(result.getName());
}
catch (Exception ex) {
throw new HtmlElementsException(ex.getMessage());
}
}
@SuppressWarnings("unchecked")
private WebDriver getDriverFromBaseTest(ITestResult result)
throws IllegalAccessException {
WebDriver driver = null;
try {
Class< ? extends ITestResult> testClass =
(Class< ? extends ITestResult>) result.getInstance().getClass();
Class< ?extends ITestResult> baseTestClass =
(Class< ? extends ITestResult>) testClass.getSuperclass();
Field driverField = baseTestClass.getDeclaredField("driver");
driver = (BrowserDriver)driverField.get(result.getInstance());
return driver;
}
catch (SecurityException | NoSuchFieldException | IllegalArgumentException ex) {
throw new HtmlElementsException("error getting the driver from base test");
}
}
@Override
public void onTestSuccess(ITestResult result)
{}
@Override
public void onTestSkipped(ITestResult result)
{}
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult result)
{}
@Override
public void onStart(ITestContext context)
{}
@Override
public void onFinish(ITestContext context)
{}
@Override
public void onTestStart(ITestResult arg0)
{}
}
</pre>
<li><b>test class</b></li>
</ul>
<br />
<br />
Most interactions with web elements are done through the page factory classes.
<br />
<br />
Occasionally, Javascript code is used when buttons cannot be clicked through the page factory.
<br />
<br />
Some of the pages have random popups that are closed if displayed.
<br />
<br />
The test script does the following:
<br />
<ol>
<li>Open the home page</li>
<li>Execute a keyword search</li>
<li>Select the Online Only filter</li>
<li>Select a product with online availability</li>
<li>Add the product to the cart</li>
<li>Continue checkout on the basket page</li>
<li>Select New Member</li>
<li>Fill in the Ship To info</li>
<li>Select credit card as payment method</li>
<li>Fill in the payment info</li>
<li>Submits transaction</li>
<li>Verify that there is at least an error message</li>
<li>Saves the error messages and the search keyword to a text file</li>
</ol>
<br />
<br />
The test script uses a keyword parameter which can take multiple values.
<br />
<br />
<br />
<span style="font-size: large;"><a href="https://www.dropbox.com/s/r5vsiqgbhgr353d/best%20buy%20project.zip?dl=0">Download source code</a></span><br />
<br />
<h1>
Interested in learning how to build a project like this one?</h1>
<a href="http://www.alexsiminiuc.com/selenium-test-automation-course-introduction.htm">Get started here</a>
<br />
<br />
<br />Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com10tag:blogger.com,1999:blog-2481228809615388718.post-13947970858444189832017-01-08T19:44:00.001-08:002017-01-08T19:44:50.909-08:00Test automation wants your manual testing job<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.theskepticsguide.org/wp-content/uploads/2016/02/robots-replace-humans-840x420-665x365.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="350" src="https://www.theskepticsguide.org/wp-content/uploads/2016/02/robots-replace-humans-840x420-665x365.jpg" width="640" /></a></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b><br /></b></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b><br /></b></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b><br /></b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Automation will leave many people without a job. </b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">I am not talking about test automation being a danger to many manual testing jobs. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">But about automation in a more general perspective. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>In Canada, in the next 10 - 15 years, up to 7.5 million jobs (out of 18) will be lost because of automation.</b> </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">This is what <a href="http://www.huffingtonpost.ca/2016/11/28/automation-canada-job-losses_n_13286168.html">Huffington Post says</a> and I agree with them. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">The key points of the article are below: </span><br />
<br />
<ul>
<li><span style="font-family: "arial" , "helvetica" , sans-serif;">Canada faces the loss of up to 7.5 million jobs to automation in the next 10 to 15 years </span></li>
</ul>
<ul>
<li><span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Even people in high-income jobs won’t be spared</b>, as automation will reduce the demand for doctors, lawyers and engineers, among others. </span></li>
</ul>
<ul>
<li><span style="font-family: "arial" , "helvetica" , sans-serif;">Autonomous vehicles are already on the road, robo-advisors are dispensing financial counsel and even lawyers and reporters are starting to see automation take over routine functions. </span></li>
</ul>
<ul>
<li><span style="font-family: "arial" , "helvetica" , sans-serif;">The study’s projections found a broad range in the number of jobs that could be lost — 1.5 million at the lower end, and 7.5 million at the high end. That amounts to between 8.3 per cent and 41 per cent of the 18 million jobs in existence in Canada today. </span></li>
</ul>
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">So <b>the demand for doctors, lawyers, engineers, reporters, etc will be reduced significantly.
</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Should we hope that this will not happen to testers?</span>Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com2tag:blogger.com,1999:blog-2481228809615388718.post-15923080762764975952017-01-05T19:44:00.002-08:002017-01-05T19:50:38.671-08:00Stop being a one-trick pony! Stop focusing only on manual testing!<span style="font-family: Arial, Helvetica, sans-serif;">Manual testing will not go away. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">But it will not be anymore what it used to be. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Like all things, testing changes and at a rapid pace. </b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Companies still need manual testers but less than before. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Normal testing is something that not only testers can do. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">A business analyst, business user or developer can do it as well. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>With so "many testers" available, companies hire outside testers if they are exceptional. </b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><b><br /></b></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Or multi-talented, with diverse skills. </b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: large;">So do you want to continue to have a career in testing? </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Stop being a "one-trick pony" and stop focusing only on manual testing.</b> </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Manual testing used to be sufficient for a successful career. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">You had a good "trick" and used it over and over. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">While you focused on your trick, everything around you changed and you did not notice. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">One day, you discover that the one-trick does not keep you employed. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">You rush then to learn more tricks and hope that you can do it fast.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Sadly it is too late because learning does not happen over night. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: large;">This is something that applies to many other domains. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Like sports. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Take mixed martial arts, for example. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">One of the MMA women divisions had a champion for 3 years in Ronda Rousey who beat soundly (and in many cases under 1 minute) all her opponents. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">She did this with great judo skills. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Ronda was a true "one-trick pony" since all her skills were only about judo. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">One day came when she fought a true boxer. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Even with a lot of boxing training, she lost in a dramatic fashion. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">After her first loss, she took a year off and trained more in boxing hoping for a revenge. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Next time she fought, she lost again but this time under 1 minute. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">What happened then?</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">While she was enjoying her "one pony trick", the world changed and she did not notice. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">When she realized that serious improvement was needed, it was a bit too late.
</span>Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com2tag:blogger.com,1999:blog-2481228809615388718.post-48521005140760345332016-12-28T18:31:00.001-08:002016-12-28T18:35:43.701-08:00Learn automation while you don't need it<blockquote>
<i>
I have been a software manual tester for 10 years.
<br /><br />
Due to the regression tests that I do every other week, it is imperative that I get this function automated to help me with the rest of my job.
<br /><br />
I regression test over 90 custom sites for my company and really need to get this done by February 2017.
<br /><br />
Please help.
</i>
</blockquote>
<br />
I received this message from a tester a few weeks ago.
<br />
<br />
He wanted to learn automation and programming and use these skills successfully in 2 months.
<br />
<br />
Which is very difficult to do.
<br />
<br />
I don't know why he did not start learning earlier.
<br />
<br />
He probably thought that will not need automation and his employer will hire a developer for the automation work.
<br />
<br />
<b>So he did what many people do in similar occasions: postpone.</b>
<br />
<br />
We don't like change and avoid it.
<br />
<br />
Our hope is that somehow things stay the same or we figure them out.
<br />
<br />
And a moment comes when we need change fast and results too.
<br />
<br />
This is when we realize the mistake of not starting ahead of time, when we don't need the new skills yet.
<br />
<br />
Fast change happens in stories and movies only.
<br />
<br />
<b>Real change takes time and is done in small steps.</b>
<br />
<br />
So, stop postponing learning programming and get started.
<br />
<br />
It does not matter if you need it in your job now or not.
<br />
<br />
You will need it sooner than you think.
<br />
<br />
Next December, you will be very happy that you started learning automation the year before.
Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com1tag:blogger.com,1999:blog-2481228809615388718.post-79455814959857077342016-12-21T14:05:00.001-08:002016-12-21T14:25:05.930-08:00What do you need for a Selenium test automation job?<span style="font-family: "arial" , "helvetica" , sans-serif;">First, the obvious.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnZY7rSrQV8enNJ2KEsiqUePpScB0RXG23OBkmgD9iRQx9uBCSmpdXBAv4lzJ-uInKAXk9eWV9ID1KF6vLyay_1qSTSQM_2ZBxgMZJ64sOaWqJt1Nbl9DGiFFR5Vymhaxbq1kcxbAIFsU/s1600/back-to-basics.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="270" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnZY7rSrQV8enNJ2KEsiqUePpScB0RXG23OBkmgD9iRQx9uBCSmpdXBAv4lzJ-uInKAXk9eWV9ID1KF6vLyay_1qSTSQM_2ZBxgMZJ64sOaWqJt1Nbl9DGiFFR5Vymhaxbq1kcxbAIFsU/s640/back-to-basics.jpg" width="640" /></a></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Since test automation is programming, <b>you need to know the basics (more if possible) of a <a href="http://test-able.blogspot.com/2016/11/learn-python-or-java.html">programming language such as Java</a></b>.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>And you need to know the basics of the Selenium WebDriver framework.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">But this is not sufficient for getting an automation job.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><span style="font-family: "arial" , "helvetica" , sans-serif;">In an interview, you have to convince other people that you know </span><b style="font-family: Arial, Helvetica, sans-serif;"><a href="http://test-able.blogspot.com/2016/01/webdriver-test-automation-like-taxi-driving.html">how different things work in Selenium and Java</a>.</b><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">For example, </span><br />
<ol>
<li><span style="font-family: "arial" , "helvetica" , sans-serif;">what is boxing in Java?</span></li>
<li><span style="font-family: "arial" , "helvetica" , sans-serif;">what is the difference between method overwriting and overriding?</span></li>
<li><span style="font-family: "arial" , "helvetica" , sans-serif;">what is the page object model?</span></li>
<li><span style="font-family: "arial" , "helvetica" , sans-serif;">what are the fastest locators?</span></li>
</ol>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>This requires practicing explaining how things work, what they are and how they should be used.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">You still need more for that new automation job.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIHQNlVWn1Wvsu0lmgajvmqn_FhdhKdNtd1G3eqhwTwp2Fm35CUUNHrJjju1oz3WLJyCVgV6rFARKsF1AAZ5jlrpXY_yJtAQQC56pEB_CJLateLkCqx0VyvMY6DJIP_ZsPKvQ-nCXQDPI/s1600/500-hours.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIHQNlVWn1Wvsu0lmgajvmqn_FhdhKdNtd1G3eqhwTwp2Fm35CUUNHrJjju1oz3WLJyCVgV6rFARKsF1AAZ5jlrpXY_yJtAQQC56pEB_CJLateLkCqx0VyvMY6DJIP_ZsPKvQ-nCXQDPI/s640/500-hours.jpg" width="640" /></a></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><b>You need 500 hours of practicing Selenium and Java.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">The number of hours is different from person to person.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Some people may need less, others more.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">But it is essential that you put the time in for the practice.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Why so many hours?</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Because <b>companies will put you to test</b>.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaYioxjUAdSYTeKQEt5bFh56uk6a-jTbES_aW6s69tYpsf6L3lEyuO8SZfSoiwZl_HaQotdCRFNPvvR-bajSCckTFc2HdA4DSCBBraPExHF92zJKVUbhDs0yAoKplkdzfHtgzH-jxfmmI/s1600/put+you+to+test.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="424" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaYioxjUAdSYTeKQEt5bFh56uk6a-jTbES_aW6s69tYpsf6L3lEyuO8SZfSoiwZl_HaQotdCRFNPvvR-bajSCckTFc2HdA4DSCBBraPExHF92zJKVUbhDs0yAoKplkdzfHtgzH-jxfmmI/s640/put+you+to+test.jpg" width="640" /></a></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><span style="font-family: "arial" , "helvetica" , sans-serif;">There are 2 types of tests that you may have to do:</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">1. <b>JAVA coding test</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">This test happens before the face-to-face interview and is a condition for it.</span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">It is usually done online on a site like <a href="http://codility.com/">codility.com</a> and it can last around 1 hour.</span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">You are given a problem and have to write code that solves it.</span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://test-able.blogspot.com/2016/09/do-you-know-java-prove-it.html">EXAMPLE</a></span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">2. <b>SELENIUM automation test</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">After the face-to-face interview, if the interview went well, you may be asked to do the automation exercise.</span>
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">This test is about automating a scenario for a site.</span>
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">You may get 1 day or more to do it.</span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://test-able.blogspot.com/2016/03/selenium-webdriver-interview-test.html">EXAMPLE</a></span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Going back to the 500 hours practice.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">It is very difficult to do well at these exercises if you are not already proficient with Java and Selenium.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Because the time for doing the exercises is limited.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">And your solutions have to be very good to get the job.</span><br />
<br />Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com1tag:blogger.com,1999:blog-2481228809615388718.post-46271043633019949732016-12-13T19:19:00.000-08:002016-12-13T19:19:11.453-08:00Best Resource for Improving Selenium Skills? Selenium code<span style="font-family: Arial, Helvetica, sans-serif;">You learned Selenium and Java test automation basics from a book, online course or youtube. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Page object model is understood, locators are clear, explicit waits and expected conditions are straightforward.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Java concepts such as classes, objects, inheritance, looping, arrays, lists are all covered.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">With the new skills, you can write test automation scripts for a variety of websites.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">You are wondering now about the next level of test automation.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>There is always a next level so what is it for you?</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">How do you go to it?</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>What resource should you use for guidance?</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Most available books and courses target the beginner and intermediate test automation levels.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">There are not many resources available on advanced test automation skills.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">There is one place however, often forgotten, that has everything you need in your quest to more knowledge.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">The Selenium source code.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>It is extremely helpful not only to learn how to use Selenium but also to read the source code.</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Doing this provides many benefits such as:</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">1. <b>it shows how Selenium classes and methods work</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">For example, how does Selenium find a web element using the findElement() method?</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">How does Selenium locate an element by css locator?</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">2. <b>you can learn how a framework is built</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Selenium is a framework.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">You can learn many things about building an automation framework from studying how the Selenium framework is built.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">3. <b>you can learn what good programming is</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Selenium was created by professional developers.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">What better source of learning than the code that they wrote?</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">4. <b>you find out what you dont know yet but should know</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">For example, by reading the Page Factory code, you will learn about annotations.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">And reflection.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">And design patterns.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">And proxy classes.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">And generics.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">And interfaces.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">You will need all these Java concepts (and more) to make the transition to the next test automation level.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">So attach the Selenium source code to the project in Eclipse and start reading.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>When do you need these new skills?</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Lets say that you want to have in your automation project the ability of taking screenshots automatically when an exception happens in a test script.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">You use TestNG as the unit testing framework.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">TestNG listeners can help but there is a problem.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">You need in the test listener the driver object created in the test class or the base test class.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>To get this driver object, you will use reflection and generics. </b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Another example of using the new skills is creating new locator types.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Selenium provides by default a variety of locator types such as id, class, name, xpath, css.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>How about using also Jquery and Javascript locators?</b></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">You will need annotations for this.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<br />Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com0tag:blogger.com,1999:blog-2481228809615388718.post-10075567841503451652016-11-13T19:36:00.000-08:002016-11-13T19:36:02.136-08:00How to interact with sliders in Selenium WebDriver<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEJhgD8L0gOG4Rpk5lWwepySLPWwWX-y-qHdSELzxTlqwHyLqWXgHNFcEWCLRhzU06sCoE-asQbJH411mlnWJt7riR0xfw1jS15vAQra0ZRtfUtmGhxVGnW6RqybXJCZu7c9ZK6R2tX8E/s1600/slider.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="132" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEJhgD8L0gOG4Rpk5lWwepySLPWwWX-y-qHdSELzxTlqwHyLqWXgHNFcEWCLRhzU06sCoE-asQbJH411mlnWJt7riR0xfw1jS15vAQra0ZRtfUtmGhxVGnW6RqybXJCZu7c9ZK6R2tX8E/s640/slider.png" width="640" /></a></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Sliders allow users to select a value by dragging and dropping a handle. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">This value can be a price, a quantity, a year. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">The web page could use a textbox for getting the same information from users. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">But with sliders, the page becomes much more interesting.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="https://seleniumjava.com/2016/11/04/how-to-interact-with-sliders-in-selenium-webdriver/">Read the full article</a> on seleniumjava.com.</span>Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com0tag:blogger.com,1999:blog-2481228809615388718.post-70576547519263464652016-11-01T17:36:00.002-07:002016-11-01T17:38:25.688-07:00Learn Python or Java as your first language?<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDGTFVXjCGH_ZzpOTRon6dkemhIjOIGkwnfcazdWvHkbNMwCqRGZcUQdXW9ZLt7PqBB98uc9WlQACA-Tm45bOMgRBiBatMJ9qa2Ol0nuvPvvSyMVH9yhs02fq1LJ7MmF0QWok67NIDsz8/s1600/Python+vs+Java.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDGTFVXjCGH_ZzpOTRon6dkemhIjOIGkwnfcazdWvHkbNMwCqRGZcUQdXW9ZLt7PqBB98uc9WlQACA-Tm45bOMgRBiBatMJ9qa2Ol0nuvPvvSyMVH9yhs02fq1LJ7MmF0QWok67NIDsz8/s640/Python+vs+Java.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">from http://www.thecrazyprogrammer.com/</td></tr>
</tbody></table>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">There are so many opinions all over the place on what is the best language to learn first.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Is it Python?</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Or maybe Java?</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">To understand better how they compare, I read multiple articles from Quora.com on this topic and selected some opinions.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">We start with opinions about Python.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">I added the Quora articles links as well in case you want to read more.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><b>Why is Python a good choice for the first language to learn?</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><b><br /></b></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">FROM <a href="https://www.quora.com/Is-Java-harder-to-learn-than-Python">https://www.quora.com/Is-Java-harder-to-learn-than-Python</a></span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Java is geared better towards applications, where as Python is geared better towards tasks.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Most programmers will eventually need C# or Java under their belt.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Python is generally a language for Sys Admins, mechanical engineers, and other adjacent career paths.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>As a first language, Python is arguably easier.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Variables don't need a type, indentation is obligatory so you don't make block mistakes, syntax is very English-like, iteration is very easy, the standard library does a lot of things in very few lines of code, and so on.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Python’s syntax is much more simple and readable than that of Java. </b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">I<b>t also does a much better job of minimizing the amount of code needed to complete a task</b>, which is incredibly convenient for people learning to code as they don't have enormous walls of code to deal with.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">FROM <a href="https://www.quora.com/Which-is-easier-to-learn-Java-or-Python">https://www.quora.com/Which-is-easier-to-learn-Java-or-Python</a></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-u-s-universities/fulltext">http://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-u-s-universities/fulltext</a></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Python has surpassed Java as the top language used to introduce U.S. students to programming and computer science, according to a recent survey posted by the Association for Computing Machinery (ACM).</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Eight of the top 10 computer science departments now use Python to teach coding, as well as 27 of the top 39 schools, indicating that it is the most popular language for teaching introductory computer science courses</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Python has been growing in popularity in the educational realm for at least the past few years, though this survey is the first to show it has eclipsed Java, which has been the dominant teaching language for the past decade.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">FROM <a href="https://www.quora.com/If-I-had-to-choose-between-learning-Java-and-Python-what-should-I-choose-to-learn-first">https://www.quora.com/If-I-had-to-choose-between-learning-Java-and-Python-what-should-I-choose-to-learn-first</a></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Go for Python if you already have a background in computer science and want to apply that knowledge on quickly building something real, that be a web application or software tool. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Python is very quick and easy to learn, with tons of modules that do any kind of job for you, is less verbose than Java with a great community.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><b>Why is Java a good choice for the first language to learn?</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;"><b><br /></b></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">FROM <a href="https://www.quora.com/Is-Java-harder-to-learn-than-Python">https://www.quora.com/Is-Java-harder-to-learn-than-Python</a></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">You can write VERY SIMPLE programs in Python faster than you can write programs of the same length in Java, so in that respect, you can learn Python faster.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>For any serious program (longer than a few dozen lines of code), Java is much better because of various safeguards, such as static typing.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Since you spend less time debugging stupid errors in Java, you can spend more time learning the art of programming and software engineering.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">FROM <a href="https://www.quora.com/Which-is-easier-to-learn-Java-or-Python">https://www.quora.com/Which-is-easier-to-learn-Java-or-Python</a></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">To learn, as a first language, I think it's probably Python. I think if you compare a 'hello world' in each language, Python is obviously shorter, and it obviously makes more sense to a complete beginner.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">When you get into beginner programs like 100, or 200 line programs, Python is probably still easier, because you're likely using built-in types, and it's obvious what the types and methods do.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>When you get into intermediate size of programs, a few thousand lines, or maybe tens of thousands of lines, I think the advantage skews very strongly in favour of Java.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Dynamic typing makes your first few hundred lines of coding very easy, and your next ten thousand lines a complete nightmare.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Learning slows down, and mystery builds. Each object type you add, further increases the mystery (more class types to remember), whereas in Java, it makes things clearer as there is a total rigidity in what everything is.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">For learning, I think <b>if you want your first week to be easy, learn Python, if you want your first 6 months to be easy, learn Java.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">I've used Python for longer than I've used Java, I've probably written more Python code than I've written Java code.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">I was using Python almost before Java was even released, but I strongly (very strongly) prefer Java. Java is just incredibly strict by comparison, and strict means simple, it means not vague, not flexible, not forgiving.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Unforgiving is good, it provides structure and predictability. A forgiving language means it's vague, fragile, and prone to run time errors, which would (and should) be caught at compile time.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b><br /></b></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b><br /></b></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">FROM <a href="https://www.quora.com/If-I-had-to-choose-between-learning-Java-and-Python-what-should-I-choose-to-learn-first">https://www.quora.com/If-I-had-to-choose-between-learning-Java-and-Python-what-should-I-choose-to-learn-first</a></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you've never programmed before, I'd generally recommend Java as a first language. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Python is a great language, but in its attempt to make things easier, I think it actually makes some things harder for a new programmer. <b>Python hides too much and that makes things confusing for a new programmer.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Python hides this stuff. It all looks like magic.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">In Java, it's more explicit what the types of variables are. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">There's much less "magic" that happens.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Unfortunately, if you're relatively new to programming, I'd have to say - Java. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">I say unfortunately because I really, really, really don't like Java. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Many people will disagree, but, again, some people like washing dishes, too.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>The freedom and dynamism that characterize Python are beautiful and powerful things, but they must be earned.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you start with Python, many a thing will be a mystery and you'll start thinking that all computers work that way. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Well, they don't. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">It's pretty much quite the opposite. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">So, if you already know how computers work, you'll understand what's going on and know how to appreciate it. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you don't, what will probably happen is that you'll lay out your foundations of your programming knowledge wrong and then you're screwed. You'll struggle to find sense in anything.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Go for Java If you are a total beginner and have never learned computer science before.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b></b>This may sounds like the opposite of what you've heard, but do it. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b><br /></b></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Java will always force you to go down to the understanding of how things really work , instead of Python which tend to hide some technical details in order to make things simpler.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">My recommendation would be to learn Java first for many of the reasons others have listed. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">I assume that you have no previous programming experience for the sake of my answer.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Learning Java will force you to learn to think a little more like a programmer as you learn it.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Python is a little oversimplified</b> and while that may seem like the ‘easy’ route, I think it will gain you some false self-confidence. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Your appreciation for the simplicity of Python can really only be achieved by learning a language like Java first.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Something else to consider is the amount of jobs available to Java developers. Java is pretty much an industry standard for A LOT of applications. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">I think the amount of opportunities out there will be far greater for you by learning Java first. Python will come much easier to you after you know Java and it will be a nice add-on to your resume.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>The final decision is yours.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b><br /></b></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b><br /></b></span><span style="color: red; font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Interested in a Java-vs-Python summary spreadsheet?</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<!-- Begin MailChimp Signup Form -->
<link href="//cdn-images.mailchimp.com/embedcode/slim-10_7.css" rel="stylesheet" type="text/css"></link>
<style type="text/css">
#mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; }
/* Add your own MailChimp form style overrides in your site stylesheet or in this style block.
We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */
</style>
<br />
<div id="mc_embed_signup">
<form action="//blogspot.us11.list-manage.com/subscribe/post?u=c0cbc3f8df9c607d898939a7d&id=86458a7115" class="validate" id="mc-embedded-subscribe-form" method="post" name="mc-embedded-subscribe-form" novalidate="" target="_blank">
<div id="mc_embed_signup_scroll">
<label for="mce-EMAIL">Subscribe and get your FREE resource</label>
<input class="email" id="mce-EMAIL" name="EMAIL" placeholder="email address" required="" type="email" value="" />
<!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
<br />
<div aria-hidden="true" style="left: -5000px; position: absolute;">
<input name="b_c0cbc3f8df9c607d898939a7d_86458a7115" tabindex="-1" type="text" value="" /></div>
<div class="clear">
<input class="button" id="mc-embedded-subscribe" name="subscribe" type="submit" value="Subscribe" /></div>
</div>
</form>
</div>
<!--End mc_embed_signup-->Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com3tag:blogger.com,1999:blog-2481228809615388718.post-23952222024220478712016-10-25T11:36:00.003-07:002016-10-25T11:41:15.490-07:00How do I explain Selenium WebDriver automation project in interview?<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMZ1_HCyvD1niqI7qvHGeGSo6M8HPKG3UU2FDfrg2ixhlyiGl-cTd5crr8M6PKGZkM3nhx9MoWj0X-SXbDQ2Q9Vqbz2BPMPkan6DJVDRd2GOy6n9E7PpwxE6dDtVPYLo027Sv3jQvJpAI/s1600/framework.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMZ1_HCyvD1niqI7qvHGeGSo6M8HPKG3UU2FDfrg2ixhlyiGl-cTd5crr8M6PKGZkM3nhx9MoWj0X-SXbDQ2Q9Vqbz2BPMPkan6DJVDRd2GOy6n9E7PpwxE6dDtVPYLo027Sv3jQvJpAI/s640/framework.jpg" width="404" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">test automation project structure</td></tr>
</tbody></table>
<span class="quora-content-embed" data-name="How-do-I-explain-Java-Selenium-automation-project-in-interview/answer/Alex-Siminiuc-2"><br /></span>
<span class="quora-content-embed" data-name="How-do-I-explain-Java-Selenium-automation-project-in-interview/answer/Alex-Siminiuc-2"><br /></span>
<span class="quora-content-embed" data-name="How-do-I-explain-Java-Selenium-automation-project-in-interview/answer/Alex-Siminiuc-2">This article was published first on Quora.com as an answer to the following question:</span><br />
<span class="quora-content-embed" data-name="How-do-I-explain-Java-Selenium-automation-project-in-interview/answer/Alex-Siminiuc-2"><br /></span>
<span class="quora-content-embed" data-name="How-do-I-explain-Java-Selenium-automation-project-in-interview/answer/Alex-Siminiuc-2"><b>How do I explain Selenium WebDriver test automation project in interview?</b></span><br />
<span class="quora-content-embed" data-name="How-do-I-explain-Java-Selenium-automation-project-in-interview/answer/Alex-Siminiuc-2"><br /></span>
<span class="quora-content-embed" data-name="How-do-I-explain-Java-Selenium-automation-project-in-interview/answer/Alex-Siminiuc-2"><br /></span>
<span class="quora-content-embed" data-name="How-do-I-explain-Java-Selenium-automation-project-in-interview/answer/Alex-Siminiuc-2"><br /></span>
<span class="quora-content-embed" data-name="How-do-I-explain-Java-Selenium-automation-project-in-interview/answer/Alex-Siminiuc-2">Read <a class="quora-content-link" data-embed="ompauyz" data-height="1000" data-id="29350485" data-key="c550d144b62b2cfc59443341ca41c263" data-type="answer" data-width="700" href="https://www.quora.com/How-do-I-explain-Java-Selenium-automation-project-in-interview/answer/Alex-Siminiuc-2" load-full-answer="True"></a><a href="https://www.quora.com/Alex-Siminiuc-2">Alex Siminiuc</a>'s <a href="https://www.blogger.com/How-do-I-explain-Java-Selenium-automation-project-in-interview#ans29350485">answer</a> to <a href="https://www.blogger.com/How-do-I-explain-Java-Selenium-automation-project-in-interview" ref="canonical"><span class="rendered_qtext">How do I explain Java-Selenium automation project in interview?</span></a> on <a href="https://www.__nousername__.main.quora.com/">Quora</a><script src="https://www.quora.com/widgets/content" type="text/javascript"></script></span>Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com1tag:blogger.com,1999:blog-2481228809615388718.post-31220465925317371202016-10-15T19:49:00.000-07:002016-10-15T19:51:28.990-07:00Which language seems to be the most predominant in Selenium script development?<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>60% of all Selenium downloads are for Java. </b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">This means that companies use mostly Java for Selenium test automation. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Java is not only the <a href="http://blog.testproject.io/2015/12/03/worlds-most-desirable-automation-skills/">most popular language for Selenium test automation</a>. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkZPakInwjUIhsCDH77s7oqLFMc9DJ-WeuhtFmcDmXbQlj4uFm2ziyW3lQnW-pzwkoYAu0BNq18MAXUU_glQ4OwbwqVD9aueUTK7zy__VNPpRSSrM8KFTnBGE41EkUr6GBVaU1QaErf7s/s1600/Most-popular-test-automation-programing-languages-in-the-world.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkZPakInwjUIhsCDH77s7oqLFMc9DJ-WeuhtFmcDmXbQlj4uFm2ziyW3lQnW-pzwkoYAu0BNq18MAXUU_glQ4OwbwqVD9aueUTK7zy__VNPpRSSrM8KFTnBGE41EkUr6GBVaU1QaErf7s/s640/Most-popular-test-automation-programing-languages-in-the-world.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Source: http://blog.testproject.io/2015/12/03/worlds-most-desirable-automation-skills/</td></tr>
</tbody></table>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">It is also more robust when used in enterprise projects. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">It has mature and powerful IDEs (Eclipse and IntelliJ) too. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">When selecting the language to learn for Selenium, keep this info in mind. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Don't select the language based only on which is the easiest to learn. </b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">You may end up learning an easier language that is not really needed on your job market.</span>Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com0tag:blogger.com,1999:blog-2481228809615388718.post-24296282106806552662016-10-11T20:55:00.002-07:002016-10-11T21:03:37.032-07:00How to convert test classes from JUNIT to TESTNG<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><span style="font-family: "verdana" , sans-serif;"><b>Everybody that I talk to says that they use TestNG. I am still using JUNIT.<br />
Am I the only person still doing it?</b></span>
</span><br />
<br />
I am using TestNG as well. <br />
I started with <a href="http://junit.org/junit4/">JUNIT </a>a while ago and switched to <a href="http://testng.org/doc/index.html">TestNG </a>for a number of reasons.
<br />
<br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><b>So you think that TestNG is better than JUNIT?</b></span>
<br />
<br />
<a href="http://test-able.blogspot.com/2016/03/9-easy-testng-features-you-can-learn.html">TestNG is better than JUNIT version 4</a>.
<br />
<br />
Let me tell you why.
<br />
<br />
It does not use static methods for setting up and cleaning the test environment.
<br />
<br />
I am referring to the methods that use the @BeforeClass and @AfterClass annotations.
<br />
<br />
<br />
<span style="font-family: "verdana" , sans-serif;"><b>Oh really? This is awesome. What else does TestNG do better?</b></span>
<br />
<br />
You can have dependent test scripts.<br />
Test scripts with priorities.<br />
It is easier to run test scripts based on categories and suites.<br />
It is possible to have multiple data providers with values for parameters.<br />
And test scripts can have parameters.
<br />
<br />
<br />
<b><span style="font-family: Verdana, sans-serif;">So many good things. Is it difficult to migrate from JUNIT to TestNG?</span></b>
<br />
<br />
It is not difficult.
<br />
<br />
I will show you how it is done.
<br />
<br />
We will start with simple JUNIT test class and discuss one by one the elements that need changes.
<br />
<br />
<b><span style="font-family: Verdana, sans-serif;"><br /></span></b>
<b><span style="font-family: Verdana, sans-serif;">Great, lets start.</span></b>
<br />
<br />
This is our sample test class:
<br />
<pre class="brush: java"> import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Collection;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
import org.junit.rules.Timeout;
import org.junit.runners.MethodSorters;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(value = Parameterized.class)
public class JUNITClass {
@Rule
public Timeout globalTimeout = new Timeout(1000);
@Rule
public CustomTestRule screenshotTestRule = new CustomTestRule();
private String keyword;
public JUNITClass(String keyword) {
this.keyword = keyword;
}
@BeforeClass
public static void setUp() {
}
@AfterClass
public static void tearDown() {
}
@Parameters
public static Collection< Object[] > data() {
Collection< Object[] > params = new ArrayList<>(100);
params.add(new Object[] { "java-author-10" });
params.add(new Object[] { "oracle-date-20" });
params.add(new Object[] { "microsoft-title-15" });
return params;
}
@Test
public void test1() {
}
@Test
public void test2() {
assertTrue(keyword.length() > 0);
assertEquals(keyword.contains("-"), true);
}
@Ignore
public void test3() {
}
@Test(timeout=1000)
public void test4() {
}
@Test(expected = IndexOutOfBoundsException.class)
public void test5() {
throw new IndexOutOfBoundsException();
}
}
</pre>
<br />
<br />
The test class uses many JUNIT elements such as
<br />
<br />
<ul>
<li>annotations (@Test, @Ignore, @BeforeClass, @AfterClass, @RunWith, @Rule, @Parameters)</li>
<li>annotation attributes (expected = , timeout = )</li>
<li>test fixtures (setUp() and tearDown() methods)</li>
<li>assertions</li>
</ul>
<br />
<br />
So we will change them one by one.
<br />
<br />
By the way, you can follow along on your computer while I make the changes.
<br />
<br />
<b><span style="font-family: Verdana, sans-serif;"><br /></span></b>
<b><span style="font-family: Verdana, sans-serif;">What's the first thing to do?</span></b>
<br />
<br />
First, we remove the JUNIT library from the project by
<br />
<ul>
<li>displaying the Navigator view in Eclipse</li>
<li>opening the project</li>
<li>right clicking the project name and selecting Properties</li>
<li>selecting the JAVA BUILD PATH option</li>
<li>selecting the Libraries tab</li>
<li>selecting JUNIT 4</li>
<li>clicking the REMOVE button</li>
</ul>
<br />
<br />
Next, remove all JUNIT packages from the beginning of the class:
<br />
<br />
<pre class="brush: java"> import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Collection;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
import org.junit.rules.Timeout;
import org.junit.runners.MethodSorters;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
</pre>
<br />
Now, we have lots of errors in the test class because of missing packages.
<br />
<br />
Second, we add the TestNG library to the project by
<br />
<ul>
<li>displaying the Navigator view in Eclipse</li>
<li>opening the project</li>
<li>right clicking the project name and selecting Properties</li>
<li>selecting the JAVA BUILD PATH option</li>
<li>selecting the Libraries tab</li>
<li>clicking the ADD LIBRARY button</li>
<li>selecting TestNG</li>
<li>clicking the FINISH button</li>
</ul>
<br />
We also need to install the TestNG plugin for Eclipse:
<br />
<ul>
<li>click Help in the Eclipse menu</li>
<li>click Eclipse MarketPlace</li>
<li>search for Test NG</li>
<li>install the TestNg for Eclipse plugin</li>
</ul>
<br />
<b><span style="font-family: Verdana, sans-serif;">Done. We still have those errors in the code. Which one should we fix first?</span></b>
<br />
<br />
Lets start with @Test.
<br />
<br />
Click on the error icon to the left of @Test and import the following package:<br />
import org.testng.annotations.Test;
<br />
<br />
Is the error still there?
<br />
<br />
<br />
<b><span style="font-family: Verdana, sans-serif;">No. It is gone.</span></b>
<br />
<br />
Excellent.
<br />
<br />
Now, about @Ignore.
<br />
<br />
In TestNG, you can ignore a test using the @Test annotation as well.
<br />
<br />
<br />
<b><span style="font-family: Verdana, sans-serif;">How do you do this?</span></b>
<br />
<br />
By using the enabled attribute.
<br />
<br />
So replace @Ignore with @Test(enabled=false).
<br />
<br />
This should get rid of the error for @Ignore.
<br />
<br />
<i><br /></i>
<b><span style="font-family: Verdana, sans-serif;">Done. </span></b>
<br />
<br />
Very good.
<br />
<br />
Now, lets make the changes for the setUp() and tearDown() methods.
<br />
<br />
Click on the error messages and import the following 2 packages:
<br />
<br />
<pre class="brush: java"> import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
</pre>
And then remove the static keyword from the setUp() and tearDown() signatures.
<br />
<br />
<i><br /></i>
<b><span style="font-family: Verdana, sans-serif;">So these methods will not be static any longer in TestNG?</span></b>
<br />
<br />
They won't.
<br />
<br />
How is your code looking so far?
<br />
<br />
<i><br /></i>
<b><span style="font-family: Verdana, sans-serif;">I did all changes. What's next?</span></b>
<br />
<br />
Lets continue a bit more with the @Test annotation.
<br />
<br />
In our JUNIT code, we have a test that tests for exceptions and one that uses a timeout.
<br />
<br />
For the test with timeout, replace @Test(timeout=1000) with @Test(timeOut=1000)
<br />
<br />
For the test with exception, replace @Test(expected = IndexOutOfBoundsException.class) with
@Test(expectedExceptions = IndexOutOfBoundsException.class).
<br />
<br />
Do these changes work for you?
<br />
<br />
<b><span style="font-family: Verdana, sans-serif;"><br />
They sure do. Everything is simple and smooth so far.</span></b>
<br />
<br />
Awesome.
<br />
<br />
We can work on the assertions now.
<br />
<br />
In the JUNIT code, we use 2 assertions: assertTrue and assertEquals.
<br />
<br />
Import the following package:
<br />
<br />
<pre class="brush: java"> import org.testng.AssertJUnit;
</pre>
<br />
And prefix both assertions with the name of the package:
<br />
<pre class="brush: java"> AssertJUnit.assertTrue(keyword.length() > 0);
AssertJUnit.assertEquals(keyword.contains("-"), true);
</pre>
<br />
The assertions should be good now as well.
<br />
<br />
<b><span style="font-family: Verdana, sans-serif;"><br />
The assertions have no more errors. We are making lots of progress.</span></b>
<br />
<br />
Yes.
<br />
<br />
Now, lets deal with the execution order for the test scripts.
<br />
<br />
In JUNIT, there is not a lot of support for it.
<br />
<br />
You can run the test scripts alphabetically by name with the @FixMethodOrder(MethodSorters.NAME_ASCENDING).
<br />
<br />
But if you need the test scripts run in other orders, I am not sure how you can do that.
<br />
<br />
In TestNG, this is done with the dependsOnMethods attribute of the @Test annotation.
<br />
<br />
For example,
<br />
<br />
<pre class="brush: java"> @Test(dependsOnMethods = { "test2" })
public void test1() {
}
@Test(dependsOnMethods = { "test4" })
public void test2(String keyword) {
}
</pre>
In this case, test1() depends on test2() so test2() executes before test1.
<br />
<br />
test2() depends on test4() so test4() executes before test2.
<br />
<br />
<b><span style="font-family: Verdana, sans-serif;"><br />
Wow. This is so much better than @FixMethodOrder().</span></b>
<br />
<br />
It is much simpler.
<br />
<br />
Make sure that you update your code before we move on.
<br />
<br />
<i><br /></i>
<b><span style="font-family: Verdana, sans-serif;">My code is changed.</span></b>
<br />
<br />
Good.
<br />
<br />
Now, lets change the code related to <a href="http://test-able.blogspot.com/2016/02/make-your-automation-scripts-dynamic-with-parameters.html">parameters</a>.
<br />
<br />
In TestNG, similar with JUNIT, you need a method that provides the data for the parameter.
<br />
<br />
This method is annotated with @DataProvider and has a name attribute for the data provider name:
<br />
<br />
<pre class="brush: java"> @DataProvider(name = "data")
public Object[][] createData1() {
return new Object[][] {
{"java-author-10"},
{"oracle-date-20"},
{"microsoft-title-15"}
};
}
</pre>
The package org.testng.annotations.DataProvider; needs to be added as well.
<br />
<br />
Then, we need to connect the data with the parameter.
<br />
<br />
We do not need any longer to pass the parameter to the class constructor.<br />
And we dont need a class field for the parameter, either.
<br />
<br />
The test script uses the parameter in the same way a method uses a parameter.
<br />
<br />
The test script also uses the dataProvider annotation to specify which dataProvider has the data for the parameter:
<br />
<br />
<pre class="brush: java"> @DataProvider(name = "data")
public Object[][] createData1() {
return new Object[][] {
{"java-author-10"},
{"oracle-date-20"},
{"microsoft-title-15"}
};
}
@Test(dataProvider="data")
public void test2(String keyword) {
}
</pre>
Still following?
<br />
<br />
<i><br /></i>
<b><span style="font-family: Verdana, sans-serif;">Yes.</span></b>
<br />
<br />
What else is there to change?
<br />
<br />
<br />
<b><span style="font-family: Verdana, sans-serif;"><a href="http://test-able.blogspot.com/2015/09/how-to-generate-selenium-webdriver-html-report.html">JUNIT Rules</a>.</span></b>
<br />
<br />
Right.
<br />
<br />
In TestNG, you use listeners instead of rules.
<br />
<br />
They work in a similar way.
<br />
<br />
Have a look at this sample listener:
<br />
<br />
<pre class="brush: java"> package TestNG;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.Reporter;
public class CustomTestListener implements ITestListener {
@Override
public void onTestStart(ITestResult result) {
}
@Override
public void onTestSuccess(ITestResult result) {
System.out.println("PASSED TEST");
}
@Override
public void onTestFailure(ITestResult testResult) {
System.out.println("FAILED TEST");
}
@Override
public void onTestSkipped(ITestResult result) {
}
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
}
@Override
public void onStart(ITestContext context) {
}
@Override
public void onFinish(ITestContext context) {
}
}
</pre>
The custom listener class implements the ITestListener interface and overrides all its methods.
<br />
<br />
The listener can then be attached to a test class using the @Listeners annotation:
<br />
<br />
<pre class="brush: java"> @Listeners(CustomTestListener.class)
public class TestNGClass {
...............
}
</pre>
<i><br /></i>
<b><span style="font-family: Verdana, sans-serif;">This is very clear and similar to the JUNIT rules. With the exception that we dont need to create a class field for the new listener object.</span></b>
<br />
<br />
Exactly.
<br />
<br />
Because the test class know what listener to use through the @Listeners annotation.
<br />
<br />
We missed something in the JUNIT code: categories.
<br />
<br />
In JUNIT, you can specify a category for a test script or for the whole test class.
<br />
<br />
This is done through the @Category annotation as follows:
<br />
<br />
<pre class="brush: java"> @Category({SlowTests.class})
public class JUNITClass2 {
...................
}
</pre>
In TestNG, groups are used instead of categories.
<br />
<br />
And they are just another attribute of the @Test annotation.
<br />
<br />
For example,
<br />
<br />
<pre class="brush: java"> @Test(groups="slowTests")
public void test1() {
}
@Test(groups="slowTests")
public void test2() {
}
</pre>
test1() and test2() methods belong to the slowTests group.
<br />
<br />
<b><span style="font-family: Verdana, sans-serif;"><br />
OK. So use groups instead of categories.</span></b>
<br />
<br />
Yes.
<br />
<br />
A good side effect is that in TestNg you do not need to create an empty class for each group.
<br />
<br />
Remember that in JUNIT, before using a category, you had to create an empty class for it.
<br />
<br />
<i><br /></i>
<b><span style="font-family: Verdana, sans-serif;">Yes, that's right. So we will have less classes now.</span></b>
<br />
<br />
Yes.
<br />
<br />
The last change that we will discuss is about JUNIT suites.
<br />
<br />
In JUNIT, you need test suites to run test scripts from multiple test classes based on categories.
<br />
<br />
For example:
<br />
<br />
<pre class="brush: java"> import org.junit.experimental.categories.Categories;
import org.junit.experimental.categories.Categories.IncludeCategory;
import org.junit.runner.RunWith;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Categories.class)
@IncludeCategory(SlowTests.class)
@SuiteClasses({
JUNITClass.class,
JUNITClass2.class
})
</pre>
This test suite runs all test scripts from the 2 classes that are part of the specified category.
<br />
<br />
<i><br /></i>
<b><span style="font-family: Verdana, sans-serif;">And how does TestNG solve this?</span></b>
<br />
<br />
TestNG uses an xml file called testng.xml for organizing test classes in test suites.
<br />
<br />
When running the tests, everything happens as per the structure of this file.
<br />
<br />
In our case, testng.xml could look like this:
<br />
<br />
<pre> < suite name="My suite" >
< listeners >
< listener class-name="TestNG.CustomTestListener" />
< / listeners >
< test name="test1" >
< groups >
< run >
< include name="slowTests" />
< / run >
< / groups >
< classes >
< class name="TestNG.TestNGClass" />
< class name="TestNG.TestNGClass2" />
< / classes >
< / test >
< / suite >
</pre>
One thing to notice in the xml file is that a suite is made of tests which are made of test classes.
<br />
<br />
In a test class, you can specify the groups to be used.
<br />
<br />
In the xml file, you can also mention the listener to be used for all test classes.
<br />
<br />
<b><span style="font-family: Verdana, sans-serif;"><br />
So no more suite classes?</span></b>
<br />
<br />
No more.
<br />
<br />
Everything is controlled by the testng.xml file.
<br />
<br />
Let have a look at the final code that uses TestNG:
<br />
<pre class="brush: java"> package TestNG;
import static org.testng.AssertJUnit.assertTrue;
import org.testng.annotations.Test;
import org.testng.AssertJUnit;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Listeners;
@Listeners(CustomTestListener.class)
public class TestNGClass {
@BeforeClass
public void setUp() {
}
@AfterClass
public void tearDown() {
}
@DataProvider(name = "data")
public Object[][] createData1() {
return new Object[][] {
{"java-author-10"},
{"oracle-date-20"},
{"microsoft-title-15"}
};
}
@Test(dependsOnMethods = { "test2" })
public void test1() {
assertTrue(false);
}
@Test(dataProvider="data",
dependsOnMethods = { "test4" })
public void test2(String keyword) {
AssertJUnit.assertTrue(keyword.length() > 0);
AssertJUnit.assertEquals(keyword.contains("-"), true);
}
@Test(enabled=false)
public void test3() {
}
@Test(timeOut=1000,
groups="slowTests")
public void test4() {
}
@Test(expectedExceptions = IndexOutOfBoundsException.class)
public void test5() {
throw new IndexOutOfBoundsException();
}
}
</pre>
We are almost at the end of the conversion process.
<br />
<br />
Lets run the TestNG tests.
<br />
<br />
They run correctly.
<br />
<br />
What do you think about converting a test class from JUNIT to TestNG?
<br />
<br />
Was it too complicated?
<br />
<br />
<b><span style="font-family: Verdana, sans-serif;"><br />
With all these details, I felt that it was very easy. I am looking forward to starting using TestNG in my test automation project.</span></b>
<br />
<br />
Good luck!
Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com5tag:blogger.com,1999:blog-2481228809615388718.post-3197459508515835332016-10-09T13:54:00.003-07:002016-10-12T09:42:54.771-07:00What is a Page Object?<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;">This is an attempt of explaining what a page object is without using any programming concepts and references.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgM0COIx0lkal9ifEqtYQZ_BRL5y68chrIibJBF1tmoeK2AiNVpDkPAbXS-DSInf0dC9ddBApmWBTF5qIEa_3pUxHovhs8MAk-Q9uugj2REQlG4XU5GaUVKLT_qf5WuWEMaVcPyblS7azo/s1600/Slide1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgM0COIx0lkal9ifEqtYQZ_BRL5y68chrIibJBF1tmoeK2AiNVpDkPAbXS-DSInf0dC9ddBApmWBTF5qIEa_3pUxHovhs8MAk-Q9uugj2REQlG4XU5GaUVKLT_qf5WuWEMaVcPyblS7azo/s640/Slide1.JPG" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiROki2P0y156VhpYA_Cko2qbBUUIyYkbNRDx1ac1I86L_IYjBPIZmqVJ3FfTXtqWTS7phDupb8-j0DcF4gjp8QVQMxcaPIFpZkjMiARxeuvhsnL9A6pEk5rwtkvdwagGJUtkUwuZpfMqw/s1600/Slide2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiROki2P0y156VhpYA_Cko2qbBUUIyYkbNRDx1ac1I86L_IYjBPIZmqVJ3FfTXtqWTS7phDupb8-j0DcF4gjp8QVQMxcaPIFpZkjMiARxeuvhsnL9A6pEk5rwtkvdwagGJUtkUwuZpfMqw/s640/Slide2.JPG" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNfkzUaE6qTik1XbQfcenSQZYyJ6hMR544JcJeuH2slyBhyphenhyphenVaQspryjEkdWwhO4HclPstNEMcbzi8FEw_CSDudenZpONhoMMTM6rXZEXy0LT3nyBPdjNygot_Nk35_pIpBa2GGh6S3dRA/s1600/Slide4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNfkzUaE6qTik1XbQfcenSQZYyJ6hMR544JcJeuH2slyBhyphenhyphenVaQspryjEkdWwhO4HclPstNEMcbzi8FEw_CSDudenZpONhoMMTM6rXZEXy0LT3nyBPdjNygot_Nk35_pIpBa2GGh6S3dRA/s640/Slide4.JPG" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJFo5ZTsdKMSF_8_HiIZAjGB97M9da0bWT0DPu_FwJV3Lo9yy30RYld-AnxDsO3LZrv7xMsSPxgjMN8SmfcgX4FfSCK40tzbU0guk2S44pkodoiq_QUUdUNVn81YdJJzTt0c318xXUr-0/s1600/Slide5.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJFo5ZTsdKMSF_8_HiIZAjGB97M9da0bWT0DPu_FwJV3Lo9yy30RYld-AnxDsO3LZrv7xMsSPxgjMN8SmfcgX4FfSCK40tzbU0guk2S44pkodoiq_QUUdUNVn81YdJJzTt0c318xXUr-0/s640/Slide5.JPG" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV7AQXZSstqihCEg7UGR48AukSbA7VAym8873rCyn0PalJJJ-eM4TAghKAmp7XWsIBgpMwPhf7cXJj37xceZ-WGNj1xwUeQiU3NuuCiwEMPlUh777BmCzCw4aTfzYSXBxvYoUULeSEZqY/s1600/Slide6.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV7AQXZSstqihCEg7UGR48AukSbA7VAym8873rCyn0PalJJJ-eM4TAghKAmp7XWsIBgpMwPhf7cXJj37xceZ-WGNj1xwUeQiU3NuuCiwEMPlUh777BmCzCw4aTfzYSXBxvYoUULeSEZqY/s640/Slide6.JPG" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxWiHXxQSWgdYfjxx07Pw9Xnyky7kkBAT0PmLqiAF-BdCtMW-63mhyphenhyphenrPmOtXJiXejP_OA82Q7bqckb9Pxa76G052BQ3zNapNeJujT0C1-EPQI-uAeYj761QNv4JLSmJygzpmKRqLgv9Rs/s1600/Slide7.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxWiHXxQSWgdYfjxx07Pw9Xnyky7kkBAT0PmLqiAF-BdCtMW-63mhyphenhyphenrPmOtXJiXejP_OA82Q7bqckb9Pxa76G052BQ3zNapNeJujT0C1-EPQI-uAeYj761QNv4JLSmJygzpmKRqLgv9Rs/s640/Slide7.JPG" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH5g7qxHgHdFbOaI0TpSv_usczt02PEt3gt8oV0bws_22oBeLIxYnCsmKEUdwypzo8OqSsdpjDtrbn6fCK_6dNOmN4F9h9ZmYMmQOhGv-fE_sRdbIM0szvlAAhQXCSxYv89LZh3h7DugM/s1600/Slide8.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH5g7qxHgHdFbOaI0TpSv_usczt02PEt3gt8oV0bws_22oBeLIxYnCsmKEUdwypzo8OqSsdpjDtrbn6fCK_6dNOmN4F9h9ZmYMmQOhGv-fE_sRdbIM0szvlAAhQXCSxYv89LZh3h7DugM/s640/Slide8.JPG" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIsWlGcj04cobBbfJiA3UsjCDxsJd7cpMjv-g-I11DwjGNjJqJNIrsSWxXBUJ57QLSnOGzqD7lbO99LhRYUb-xYD2Bd8TNZ7ffdP0s78Ev3PVwuqgUX8T7NF73b3U9JMNqmra1kSuFayY/s1600/Slide9.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIsWlGcj04cobBbfJiA3UsjCDxsJd7cpMjv-g-I11DwjGNjJqJNIrsSWxXBUJ57QLSnOGzqD7lbO99LhRYUb-xYD2Bd8TNZ7ffdP0s78Ev3PVwuqgUX8T7NF73b3U9JMNqmra1kSuFayY/s640/Slide9.JPG" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiV6lFc5zo0Hjs92rUXWf3wK7r8xvdqWWRwDWxonnZgdcEZVpNcHny1Go27fXSkkoI6hAAeAnVMR0aEILK9SfQByO2rSLyluGJh-FLNaX7zO5NJLhPLIkouLz28jZeIpn-y3uVK2emCWEY/s1600/Slide10.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiV6lFc5zo0Hjs92rUXWf3wK7r8xvdqWWRwDWxonnZgdcEZVpNcHny1Go27fXSkkoI6hAAeAnVMR0aEILK9SfQByO2rSLyluGJh-FLNaX7zO5NJLhPLIkouLz28jZeIpn-y3uVK2emCWEY/s640/Slide10.JPG" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimdUg_tgSz4h6cnDpzbkjuVuduRWDI7gh9daa6ydXoEZyriXfzyOORXi6mcYRdvvXrIBbDbMg8fwK_8mrhF5LOLO-aXvy5fmqk8C0so209Llo5aVU6tE_tEI1fNdGsMl15QxkOnSu714Y/s1600/Slide11.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimdUg_tgSz4h6cnDpzbkjuVuduRWDI7gh9daa6ydXoEZyriXfzyOORXi6mcYRdvvXrIBbDbMg8fwK_8mrhF5LOLO-aXvy5fmqk8C0so209Llo5aVU6tE_tEI1fNdGsMl15QxkOnSu714Y/s640/Slide11.JPG" width="640" /></a></div>
<br />
<br />Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com1tag:blogger.com,1999:blog-2481228809615388718.post-9594027874799489642016-10-08T15:34:00.000-07:002016-10-08T16:07:05.979-07:00The most vital skill for a software tester to have is ?<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjZ3eio9c-Rgr_-5cetL-U-xDVwqQapuXBDDhPH1i9bcpF33T_y9lFIiqoGoLLD8V9YMisicUrxyVyBUxlmZ6IO8FGCP2y-GUDIe0lrQtlx32Iq4d1Kalr1chJ9cgwhmZkahMFYplUEEU/s1600/Courage3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="271" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjZ3eio9c-Rgr_-5cetL-U-xDVwqQapuXBDDhPH1i9bcpF33T_y9lFIiqoGoLLD8V9YMisicUrxyVyBUxlmZ6IO8FGCP2y-GUDIe0lrQtlx32Iq4d1Kalr1chJ9cgwhmZkahMFYplUEEU/s640/Courage3.jpg" width="640" /></a></div>
<br />
<br />
<blockquote class="tr_bq">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>uTest</b>: The most vital skill for a software tester to have is ?</span></blockquote>
<blockquote class="tr_bq">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Gerald Weinberg</b>: Courage. </span><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><span style="font-family: "arial" , "helvetica" , sans-serif;"></span></blockquote>
<blockquote class="tr_bq">
<span style="font-family: "arial" , "helvetica" , sans-serif;">As Kipling put it, </span><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><span style="font-family: "arial" , "helvetica" , sans-serif;">"If you can keep your head when all about you are losing theirs and blaming it on you."</span></blockquote>
<blockquote class="tr_bq">
<span style="font-family: "arial" , "helvetica" , sans-serif;">That's what testers need. </span><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><span style="font-family: "arial" , "helvetica" , sans-serif;"></span></blockquote>
<blockquote class="tr_bq">
<span style="font-family: "arial" , "helvetica" , sans-serif;">from <a href="https://www.utest.com/articles/testing-the-limits-with-gerald-weinberg">Testing the limits with Gerald Weinberg</a> </span></blockquote>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Courage is very important. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Courage to reopen that difficult-to-reproduce bug that the developer closed. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Courage to escalate a bug to the development manager when the developer refuses to fix it.
</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Courage of having open discussions about how testing and development can be improved.
</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Courage of saying what things are not done well. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Courage to stop the build deployment to production because there are more serious issues left. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Courage to start learning new skills when your existing skills are old. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Courage to leave a job that keeps you doing the same not-interesting, not-challenging work for years. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Courage of becoming a consultant when you skills are mature so that you can test them out there. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Courage.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">
If</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> BY RUDYARD KIPLING</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you can keep your head when all about you </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> Are losing theirs and blaming it on you, </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you can trust yourself when all men doubt you, </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> But make allowance for their doubting too; </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you can wait and not be tired by waiting, </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> Or being lied about, don’t deal in lies, </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Or being hated, don’t give way to hating, </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> And yet don’t look too good, nor talk too wise: </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you can dream—and not make dreams your master; </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> If you can think—and not make thoughts your aim; </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you can meet with Triumph and Disaster</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> And treat those two impostors just the same; </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you can bear to hear the truth you’ve spoken</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> Twisted by knaves to make a trap for fools, </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Or watch the things you gave your life to, broken,</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> And stoop and build ’em up with worn-out tools: </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you can make one heap of all your winnings</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> And risk it on one turn of pitch-and-toss, </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">And lose, and start again at your beginnings</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> And never breathe a word about your loss; </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you can force your heart and nerve and sinew</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> To serve your turn long after they are gone, </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">And so hold on when there is nothing in you</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> Except the Will which says to them: ‘Hold on!’ </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you can talk with crowds and keep your virtue,</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> Or walk with Kings—nor lose the common touch, </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">If neither foes nor loving friends can hurt you,</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> If all men count with you, but none too much; </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">If you can fill the unforgiving minute</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> With sixty seconds’ worth of distance run, </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Yours is the Earth and everything that’s in it,</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> And—which is more—you’ll be a Man, my son!</span>Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com0tag:blogger.com,1999:blog-2481228809615388718.post-53660083797369687742016-10-04T21:30:00.002-07:002016-10-04T21:43:04.261-07:00You can win at a job interview even if no job offer is made<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHVCOPX43SoOA5YwZVrQaP_EdCOrhIGVMzU1Imh8DpzYitc31qzpoS8aNdD2BtP-sGwE246UdWfUe7AgS1L5f7cs1gXLHxkkmd4TFqGPeqVDOt3M7xrR3motvX9jVFZDYbnFYrmJL4ujA/s1600/winlose.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="264" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHVCOPX43SoOA5YwZVrQaP_EdCOrhIGVMzU1Imh8DpzYitc31qzpoS8aNdD2BtP-sGwE246UdWfUe7AgS1L5f7cs1gXLHxkkmd4TFqGPeqVDOt3M7xrR3motvX9jVFZDYbnFYrmJL4ujA/s640/winlose.png" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;">Any time there is a business transaction between 2 sides, the following outcomes are possible:</span><br />
<ul>
<li><span style="font-family: "verdana" , sans-serif;"><b>Win - Win</b> (both sides win from the transaction) </span></li>
<li><span style="font-family: "verdana" , sans-serif;"><b>Win - Lose</b> (one side wins, the other loses) </span></li>
<li><span style="font-family: "verdana" , sans-serif;"><b>Lose - Lose</b> (both sides loose) </span></li>
</ul>
<span style="font-family: "verdana" , sans-serif;">An interview is a business transaction.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">An individual comes to the interview for getting a new job.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">The company organizes the interview to fill a job opening.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">For the job interview, a <b>Win - Win</b> outcome means that the individual gets the job and the company fills the open position.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">What then is the equivalent of <b>Lose - Lose</b>? </span><br />
<span style="font-family: "verdana" , sans-serif;">The individual does not get the job and the company wasted time and resources for the interview.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">And <b>Win - Lose</b>? </span><br />
<span style="font-family: "verdana" , sans-serif;">Usually, if a job interview is successful, both sides won.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">It is unlikely that the individual is successful in the interview and the company loses something in the transaction.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">It is also improbable that the individual does not get the job and the company wins at this.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Still, <b>Win - Lose</b> is possible.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Let's say that you go to an interview and do not do well.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">You dont get the job and this sucks.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">But during the interview, you <b>learned different ways of approaching problems relevant to your job</b>.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Or you <b>identify gaps in your knowledge</b>.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Or <b>skills that you should have but sadly dont have yet</b>.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">This is the <b>Win - Lose</b> outcome.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">You <u>gained awareness about what you do and, more important, dont do well</u>.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">You see how other people approach problems that you struggled with.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">This is a big win.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">The company still did not get the position filled.
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">But maybe next time, you will do better.
</span>Alex Siminiuchttp://www.blogger.com/profile/13122336993155432445noreply@blogger.com1