New to automated testing and need some advice!
I work as a Software Tester and want to make the jump from manual testing to partially automated testing. I have played around with Selenium before but am not sure if this is the right tool for me. I need to test a website that consists of a few pages, each with various forms and fields. My aim is to run automated regression tests to ensure that the site doesn't fall over, thus freeing me up to put my manual testing focus on new updates.
I am looking for a tool that will easily enable me to do the following:
- Specify specific values on each page (so predetermine which button is clicked, what is entered into each form etc.)
- Run through the entire website journey to the last page
- Record any failures to a log file, including screenshots and URL
I don't have any programming language experience, so something with an easy to understand interface would be preferable. Does anyone know of a tool that could be suitable for me?
If you're going the selenium route, you can probably get a few quick wins with record and playback with Selenium Builder.
Then learn some basic programming. As you learn programming, you can see how the code works and convert things into higher level constructs like Page Objects and so forth. This will help bring sanity to your tests and make them more maintainable.
Eventually, you'll want to just get a Computer Science or Engineering degree. Some of the theories and concepts needed to get into high scalability tests will require a higher level knowledge of system architecture programming patterns, and design theory. You probably won't get that without the study necessary for a degree. Questions like, how do you design a system as a whole so all your tests can run in parallel with multiple tests running per machine, distributed across many machines, and getting them to run fast is something that very few seasoned engineers can probably answer.
+1. The industry is definitely moving to the "software developer in test" role that covers automation rather than just taking a manual tester and teaching him how to script. I would recommend taking some intro to programming type classes first if you don't have that background and going after a degree isn't an option right now.
Hi, thank you both for the quick replies. I don't currently have any programming knowledge - this is something that I would like to get into but have so far found quite difficult to know where to begin. A degree is not really possible at this point. What do you think of the idea of teaching myself the fundamentals via online learning, could this be an effective introduction?
Yeah, there are all sorts of options out there if you're a good self-learner. Ranging from tutorial pages like w3schools/youtube/blogs/etc to relatively low cost paid structured courses/books. There are also "moocs" these days. Can take Computer Science classes at MIT and other institutions for free. http://ocw.mit.edu/rss/new/mit-newcourses-6.xml
Last edited by NoUse4aName; 01-29-2015 at 11:39 AM.
Originally Posted by sad_muso
Next, learn the same programming language your developers are using. You don't have to write your tests in the same programming language, but you're going to need to integrate your tests into the dev environment if you want you tests to be run by devs prior to checkin. So you might as well use the same language. Don't worry, it's not as intimidating as it sounds, most people can learn a programming language in about 2 days, and maybe a week more to learn some of the best practices around that language.
As you learn more about programming, you can find ways of re-factoring your test code into more modular pieces and gain some wins on maintainability and portability. For example learning a few abstract patterns like using interfaces to allow substitution of browsers and page objects to promote code reuse and readability.
If you choose to go SET or SDET route form there. I would highly recommend a degree. Besides opening up your understanding on how to build large scale systems, you'll also have the extra Clout of having extra letters behind your name. Engineers are all very smart, and for a test engineer to muck around their build systems and source code, it's hard to not get on a few nerves. For example, you may have to make the product it more testable by adding hooks, etc..., or even completely rewriting large parts of a program another developer has written, which is pretty common. You really need to have some clout that'll keep developers as ease as they see large parts of their code being refactored or having someone advising them on how they should design their code.
Brilliant, thanks guys - really helpful info. What are the differences between Selenium IDE/Webdriver/Builder, and is one considered the 'best' version?
For Selenium, I'd probably recommend Python or Ruby. But it's best to use the same language as you devs, event at a cost of using a harder to learn language.
Originally Posted by sad_muso
VB is not very good with it's exception handling constructs. You'll find it a struggle to do error handling. It's probably the main weakness of that language.
Reason why I say Ruby and Python, is both are scripting languages that work well in a REPL. It makes debugging and trying out statements easier to do vs. a compiled language that can't be run in a REPL as easily. For example, importing a new library during runtime, that's something you can't do from a compiled language's interpreter during runtime.
Last edited by dlai; 01-30-2015 at 02:48 PM.
I would not advertise knowing Selenium without solid programming skills.
The modern day role of automation QA is someone who can create infrastructure (including frameworks) that developers use. So you want to write your tests in the language used by majority of developers so you will get the highest adoption. If it's a java shop, write it in Java and so forth. If I have to pick one language, it would be Java. Most shops use Java in one form or another on regular basis. Python can get extremely ugly because components require system level integration (PIP and easy-install) and trying to maintain package in Python with multiple installs are very painful. Ruby is just dog slow. And slow tests are bad tests. I spend a lot of time stabilizing and making tests faster.
Last edited by igglue; 02-03-2015 at 11:40 PM.
Maybe at your current position, you could ask to assist with automation tasks.
Patience is like bread I say.... I ran out of that yesterday.