Next at HeadSpin University

In a recent HeadSpin University Town Hall meeting, I shared a preview of the courses and updates coming to HeadSpin University in the coming months, discussed Appium 2.0, and answered questions about HSU and Appium. Read on for a recap of our meeting, or watch the recording of the meeting here.


Our Mission: To help develop test automation experts with deep understanding and solid skills

Our mission is to help all of you become test automation experts. Some of you might be beginners in the field, have been beginners in the field, or know beginners in the field, and we want to help you to become experts. We know that there are a lot of teams out there that have a similar mission.

Just briefly looking around at the industry training options that I saw or that I was familiar with, I noticed there were a lot of really good options, but a lot of them were fairly small and bite-sized or a lot of them were really good but not super hands-on and not super back and forth.

Our product: High-quality, in-depth instruction for the software automation industry and a learning platform that coincides with that

We have ideas on how to create a learning platform that will help you gain not just an intellectual understanding of test automation, but also give you the opportunity to exercise some skills in more of a real-world type environment. The basic idea is to get a deep understanding of the concepts in test automation and testing in general, as well as some hands-on skills to go with that. To do this, we want to build high quality, in-depth instruction delivered on a platform that has features that are geared towards helping you learn best. We want to deliver more than just a set of courses, but a learning platform that gives you everything you need to succeed in your learning efforts as well.

We have a couple things out on the Headspin University platform today. There are two courses that have been released. One of them is an introduction to Appium based on some in-person workshops that I have been doing in the past, and so it’s not scripted out per se, but more informal with me talking with some slides and hands-on examples.

It’s a great place to get started with Appium. We also have a set of webinars and articles that we’ve combined into something called “The Appium Collection,” which is sort of grab bag of more intermediate to advanced topics that you might appreciate if you already have experience with Appium. 

With these two courses, we wanted to demonstrate the platform and get students excited about all the possibilities with HeadSpin University. We have some more substantial courses coming soon, which we will get to below.

We also have our feed that contains random bits of news and other events you may be interested in if you’re in the test automation industry, including my weekly Automation Happy Hours.

I just take an app that randomly occurs to me or that some folks have asked me to automate and try and automate it as if I were a SDET or QAE working for that company and try to put together a reasonable end-to-end flow on one of these apps. One of the great things about Appium is that you can automate apps that you don’t own, so I’ve been able to automate YouTube, Twitter, the iOS weather application, YouMail, Craigslist, and a bunch of other things as well.

Coming in 2020

New Course: Appium and Selenium Fundamentals 2020

We have a brand new course that we’re calling “Appium and Selenium Fundamentals 2020.” This is going to be a very extensive course that provides an end-to-end learning experience for these two most significant UI automation tools covering the web and mobile ecosystems. It’s expected to have about 20 hours of video walking you through a host of topics, which I will detail below. This course is supposed to resemble an actual college semester course where you have several hours of instruction a week and have various kinds of evaluations. 

We’re calling it “Appium and Selenium Fundamentals 2020,” because we’re aware that the industry changes quite quickly and this course will need to be updated as new developments happen. One of the biggest new developments in the Appium world is Appium 2.0, but I’ve already been building this course based on Appium 2.0, because I want folks that are coming in and learning Appium from scratch to start with the future of Appium.

This is an overview of the different modules that will be a part of this course. There’s going to be conversations on an introduction to automated testing, what is testing, what is automated testing, and why automated testing versus manual testing. 

There’s a whole module on learning Python for testing. I opted to write this course around Python, because I think it’s a much better language for learners and for beginners. I think it’s actually one of the nicest languages for test automation in general, because it’s very flexible, very easy to read, very easy to abstract, and you get a lot of the object-oriented benefits of the language like Java without some of the more tough aspects of that language.

You’ll be able to take this course even if you don’t want to ultimately use Python, and I think that especially the Python, Selenium, and Appium client libraries are so transparent that’s it’s very easy to take any of the skills and concepts we learn with Python and apply them to other languages. I do believe that it’s really the best language for teaching new folks how to do test automation. 

We’ll have an overview of what web and mobile testing are and what tools and frameworks are available for them, including Selenium and Appium. We’ll talk about the architecture that powers Selenium and Appium and how to install and set them up on your own machines, because obviously that’s something that you want to be able to do even though for the code challenge we’ll have you run tests on the HeadSpin platform, we also want you to be able to set up and use Selenium and Appium in whatever environment you’re in.

We’ll talk about how to use Selenium and Appium in all of their basic features, so basic web and mobile app automation, and then we’ll talk about additional modes and feature specifically for Appium, because there’s quite a bit more to Appium than there is to Selenium in terms of hybrid testing and all of the various device automation features that come with Appium. We’ll talk about testsuite design. We’ll talk about how to build out a test suite from scratch using page objects. We’ll talk about how to scale up your testing how to go from single-threaded to parallel execution and what considerations you might need to think about there.

This course will be somewhere around 20 hours of scripted and high-quality produced video and will be a paid course. 

New Course: iOS Testing with XCUITest

We are also releasing a course on using XCUITest for iOS testing around the same time as the Appium and Selenium course. If you’re coming into the industry from a QA background, learning Appium and Selenium is the best option for you, but for some people and teams, learning XCUITest might be the best option for automating their app. 

XCUITest is the testing technology that has been provided by Apple for iOS test automation. You use it from within Xcode. Typically, XCUITest code lives alongside your app code. You have to write it in objective-c or Swift. There’s a whole section in my course on Appium vis-à-vis these other test automation tools and frameworks like XCUITest. 

We’ve got an amazing team of instructors that’s putting this together which we’ll be excited to unveil here pretty soon as well. Ike the Appium and Selenium course, this course will be a paid course. We will announce the pricing model at some point in the future, but we will always have some free courses available: the ones that are currently free as well as well as more free courses in the future.


Platform Updates

We’re preparing for the following additions and updates to the HeadSpin University platform within the next few months:

  • Saved course progress 
  • Saved video progress
  • Hands-on coding challenges and other ways to evaluate your skills using the HeadSpin Platform
  • Knowledge-based quizzes
  • Public user profile that will allow you to display the courses you’ve completed, special challenges you’ve completed, and any certifications that you’ve been awarded
  • Links to certifications awarded — Paid courses will have an optional certification attached to them that will require you to go through all of the evaluations and pass them at a certain level. 
  • Group learning and management features — Learning is sometimes a much better experience with other folks, so we’re working on some group learning features especially designed around enterprise teams that want to skill up together. Enterprise team managers can sign up a whole team for courses and have members be able to interact with one another on the platform.
  • HSU Slack groups — HeadSpin University users will have the opportunity to engage with peers in a general HSU Slack channel, as well as join channels dedicated to the courses they are taking at the moment with instructions and other students that have taken the course. If you’re going through a course and have any questions or having trouble getting started, these real-time chat groups will be a great resource that can later develop into a community of users discussing best practices and how to solve different automation challenges.

Planned Course Updates

Beyond our current self-paced video and transcript type of courses, we’re looking to provide different course modalities in the future:

  • Online real-time courses and workshops — Instead of just working on their own, students and instructors can engage in real-time and have back and forth on course topics. 
  • In-person, real-time courses and workshops — These courses won’t roll out until it is safe and responsible for people to gather in the same place again. 
  • Higher level certification options — We want to not only offer basic evaluation of your code challenges, but also have instructions look at your code and make personal evaluative remarks on your progress. If you do sufficiently well in those types of evaluation, then you could be eligible for a higher level of certification. 

Appium 2.0

I’m taking every opportunity I can to talk about Appium 2.0 to get folks excited about it and get folks starting to get their own wheel turning in their mind about ways that they might be creative with Appium 2.0. One of the big components of Appium 2.0 is that Appium is no longer going to be just this one thing that the Appium team develops and everyone else in the world uses. Instead, Appium 2.0 really opens the door for a whole ecosystem of Appium developers to be making stuff that works with Appium that can benefit themselves and can benefit other people.

We have this vision for Appium 2.0 where you can use any driver that you want with Appium 2.0, any driver that anybody has written and not just drivers that the Appium team has written. A driver is just something that connects up Appium with the ability to automate some particular platform or something like that.

I could think of hundreds of drivers right now. The obvious ones are for software platforms like iOS or Android or Windows or Mac or Tizen or things like that. I’ve written a driver for Raspberry Pi and for a Unix File System. There’s really no limit to the kinds of things you can write Appium drivers for, and if you write an Appium driver and make it available to other people, then they have the ability to automate those things also with Appium.

I’m also really excited about plugins and actually probably more excited about plugins, because plugins are little bits of code that you can write and you can share with other people that modify the behavior of the Appium server or allow you to modify the commands that drivers run and things like that and pretty much any way it’s an extremely powerful and flexible system.

Watch the video below to see a demo of Appium 2.0 and to watch me geek out a little bit on specifically the plugins (I talk about drivers too.)

Q&A on HSU and Appium 2.0

How will teams be able to take the Appium and Selenium Fundamentals class together?

We’re working on some team learning features that will basically give you visibility into how each of your colleagues are progressing with the course. You’ll have things like your own slack channel where you can discuss the course which may not be necessary if you already have communication among your team, but if you’re talking with people that you don’t know but you want to chat about things, there’ll be opportunities for real-time chat.

There’ll probably also be some features for managers to check-in on progress of what’s going on with teams as well. So, that’s kind of some of the stuff that we’re dreaming up right now that will hopefully be some other ideas that we’ll be implementing over the course of the next months as well.

How can an engineer or a beginner practice testing on iOS devices? 

Well, I think this course that I’ve been talking about will be a great option for that, because all of the iOS examples and code challenges in the course will be run on pretty much real devices that are hosted in the HeadSpin Cloud. So, you get a first-hand experience with working with iOS devices, and you’ll also be able to take the knowledge from the course and apply that to running tests locally on your own devices if that’s something you want to do.

If we need to execute automation scripts in other cloud providers, will we get the training for them as well?

The idea behind my Appium and Selenium course is to teach you kind of generic Appium and Selenium. It’s not really a course about how to use the HeadSpin platform or how to use any other platform. It’s just we want people to be able to do the code challenges in a sort of common environment that makes it possible to evaluate and makes it less likely that you’re going to run into system setup issues and things like that.

I’m not really going to be talking about cloud services specifically in terms of how you use this service and how you use that service, other than of course we’ll have to say a few words about how to use HeadSpin, because that’s how we’re going to do the evaluations. To answer the question, any Appium script that you write to run locally or on HeadSpin should be portable to another cloud service that supports Appium, as long as they’re supporting the official Appium.

So, I know that SauceLabs supports the official open-source version of Appium. I know that Perfecto mobile doesn’t or at least they didn’t the last time I checked, so I’m not sure if you could take a script that works on HeadSpin and have it work on Perfecto. That’s a question really for those services. 

But again, this course isn’t really designed to teach you about these paid products in the space. It’s really designed to teach you the kind of generic understanding of open-source Appium, which you can then apply to any cloud service. 

Do you prefer Python or Java in terms of execution performance?

Execution performance of Appium scripts is totally irrelevant to running Appium tests, because the time that the automation behaviors take is so much greater than the time spent in the client side of the code. All of the time, or 99.99% of the time, that’s being spent in your test is being spent either with data going over the network to the Appium server or by and large spent waiting on the automation technology to do the thing that you’ve asked it for.

We could obviously benchmark this, but I would say that unless you’re doing something very, very odd with your use of Python or Java that there is going to be no discernible difference in terms of execution performance based on which client library you choose to use. I think you should choose to use a client library based only on things like which languages does your team know and which languages have the abstraction features that allow you to build an elegant test framework that’s readable and concise and extensible.

Those are the types of things you should think about when deciding on a language. So, I think that Python for me ticks the most boxes of all those. I think Java is a great language for a lot of things and for test automation, but I think that Java is just significantly more complex, and there’s significantly more ways to do weird things with Java, and it can be significantly more difficult when you’re trying to do some kind of object-oriented stuff due to all the typing restrictions.

On the other hand, basically if you write a framework in Java, you get a whole bunch of amazing  IDE features for free that make it really easy to develop your scripts. What I’ve been doing in Automation Happy Hour is actually using typed Python. So, I basically have a python IDE that gives me access to all of the methods and all of the client libraries in my own framework just like you would get in Java, but I get some of the flexibility of Python. 

This type of question can’t be settled with any kind of absolute answer. At the end of the day, it’s going to be a set of trade-offs, and you just have to ask the question based on the context and situation of your team. 

Are you including any kind of AI techniques in Appium going forward to reduce maintenance? 

No, because the point of Appium is to be an automation library, but we can use Appium as the input to any kind of AI process that you could imagine. So, that’s one of the other things I’m excited about with Appium 2.0 is that you can create drivers and plugins that could add AI Behavior into Appium.

One example of a plug-in that I built last year was the test-ai-classifier plug-in where you could tell Appium to find a cart element, and it would find it on any app just based on the visual characteristics of the cart shopping cart icon or something like that.

So, I’m going to convert that into an Appium 2.0 plug-in, and then it will just be easily usable and shareable by everybody. That’s the kind of vision that we have not for Appium itself to become some kind of AI tool, but for Appium to be a really awesome automation tool with a whole plug-in architecture so that an ecosystem of other tools can develop around it, including connections with any kind of AI or machine learning stuff that you might have in mind.

You invented Appium. Why this name? 

I feel I didn’t invent Appium. I was sort of the main developer on Appium. I started the sort of code aspect of the project, but a guy named Dan Cuellar came up with the original idea behind Appium and kind of did a proof of concept that kick started this whole thing. He’s sort of a creator of Appium and then another guy Jason Huggins had the idea of taking what Dan had done and putting it into a sort of Selenium type interface. He is the guy that coined the name Appium, because it’s sort of like Selenium but for apps. That’s the idea behind it. So, it’s kind of a more generalized idea of Selenium.

Will Appium 2.0 have a store with plugin reviews and ratings?

That’s a great idea. I think that something like that should absolutely exist. I don’t know if that should be owned by the open-source team or maybe Appium Pro would be a great place to host a list of plugins and allow people to rate and review and things like that.

You mentioned the word store. I think that people could absolutely buy and sell drivers and plug-ins. There’s no reason that if you develop something that’s extremely valuable and you think that it’s worth some money, wrap it up as a plug-in and find some way to keep people from pirating it and sharing it illegally, but sell it the way that people share the same kinds of software. Great idea.

Will we have an Appium 2.0 official release? 

Yes, at some point. Probably not for some time, because there’s such a big set of new features we want to give folks a lot of time to experiment with the new drivers and plugins and build stuff to make sure that we have the driver and plug-in API solid before kind of locking that in. We don’t want to make any more big breaking changes until Appium 3.0

I believe Appium 1.19 is pending too?

Yeah. Well, I think we just released 1.18. So I’m not sure when 1.19 will come out, but probably in a month or so.

Are you giving any features to test IoT devices and apps?

No, but I am developing this whole plug-in architecture and driver architecture so that folks that know about IoT automation can make useful drivers and plugins and share them with the world, like I did with the Appium Raspberry Pi plug-in and like Jason Huggins did with the Appium Arduino driver. 

So yeah, there are some options out there. If you google “Appium Pro IoT, you’ll see a couple articles that I’ve written on how you can use Appium conceptually to work with some IoT devices.

Will the course content be updated regularly with Appium 2.0 in the roadmap?

Yes. I’m actually developing the course based on Appium 2.0. So, hopefully it won’t need to be updated unless huge changes happen. But yeah the idea is that we will update these courses every year and then also provide certifications that can be updated every year.

If you get the certification in 2020 and when 2022 rolls around or whatever we come up with, that certification will be stale because obviously the industry will have moved on. So, that’s just one of the facts about this industry, which is very different from other kinds of learning is that things change so frequently that we always have to constantly be learning new tools and new processes and how to harness new developments if we want to stay relevant so in our careers.

Will Appium’s features remain open source?

Yes! Appium is always going to be open-source. Everything that we develop is open-source. Like I said, if somebody wants to develop a closed source plug-in and a closed source driver and provide it for free or for a fee they’ll be able to do that. But that’s never going to be included in our list of officially recognized drivers and plugins. 

Appium has always been open-source and will always be open-source. The idea is that we want to build this ecosystem that’s totally industry standard that everyone uses and then different people want to build closed source stuff or paid stuff on top of that and it’s valuable enough that people use it, then great. That’s what companies like HeadSpin have been doing — they have a device performance capture and automation cloud that’s built on top of Appium. So it’s leveraging Appium for service that’s really valuable that people pay for while still using Appium, and we want to teach people Appium, because we think it’s the one of the most leverageable skills that you’ll be able to have. You can go from company to company and keep using Appium, and that’s not going to go away immediately.

Are you planning for any approach like scriptless automation to reduce development effort and the learning curve?

We do have Appium desktop, which we’ll probably release a kind of recorder feature for record and playback. We do think that that’s a good idea and important, but we only have so much bandwidth and we have to kind of keep up our work on the core automation library.

There are companies out there that have built script-less automation tools on top of Appium. HeadSpin has a beta of a record and playback tool, there’s TestProject, there’s Appium Studio. So other people definitely see this as a real area that’s valuable to tackle, and so there are things out there you can try for script-less automation with Appium.

Can you list the advanced topics that will be covered in the Appium and Selenium course? 

The sort of advanced topics would be these last three here: the Additional Appium Modes and Features (which goes into more advanced features for Appium), Test Suite Design (which goes into how you would build your own framework, which a lot of people never do. A lot of people just come into a framework and they don’t necessarily understand why it is the way it is, so this is kind of more conceptually advanced in terms of building that out), and then Appium and Selenium at Scale talks about some more advanced best practices that you need to think about for creating reliable, robust, fast test suites that can run on a cloud provider or on a Selenium grid or something like that at high scale.

Those are the advanced topics we have planned. I myself call this course kind of like a beginner to advanced course, so obviously there is no way we can cover every advanced topic in this course. That’s not the idea, because it is designed to take you from zero to being a real solid Appium tester or at least one that will be solid once you then apply all this and get lots of experience. There will certainly be room for some more advanced modules, which we”lll start thinking about and developing once this is out and once we see what the community really needs in terms of more advanced stuff.