Hello, everyone! For a long time now, i have already been attempting to compose a write-up about how precisely testing that is automated put up at Badoo. I needed to create a thing that could be both useful and interesting. I desired to fairly share experiences that might be very easy to placed into practice in just about any system. And today the right time has come…
As much of you realize, Badoo is just a social networking which centers around finding brand new buddies and acquaintances. Perhaps one of the most essential tasks it has to take proper care of is user verification.
We now have different ways of confirming users. Several of those are pretty standard, such as for example verification utilizing an unknown number. There is an even more unusual method: verification by picture. However the simplest and fastest means is verification via utilizing internet sites.
This implies of verifying a profile can be acquired right from the minute a profile is created/registered using a network that is social. To start with, it really is fast: one simply simply click with no requirement for any steps that are additional a phone or internet cam. Next, it really is convenient, since, about yourself instead of entering them manually if you want, you can import photographs and information.
I would like to tell you about how registration and verification via Facebook is set up on Badoo and how we taught Selenium some tests to check them today.
So, the step by step list is prepared, you’ve got launched the make sure it passes. All things are wonderful. Time and energy to be since pleased as this kitten!
We commit the test rule to the branch, deliver the job for review and mind down to get a coffee. But it to the kitchen there is a message — the task has not passed the review because the test doesn’t work before we make. Something went wrong…
Directly after we have actually restarted the test, it becomes clear that the thing is the following: the FB account under consideration currently features a Badoo profile. In place of registering a new profile, the test instantly authorises the existing one. There’s nothing else you need to delete the profile once the test is finished for it. Fortunately, we’ve the amazing QaApi!
In the past, we told the tale of exactly just how QaApi is incorporated with your auto-tests. The piece was entitled, “Selenium tests. From RC and another individual to WebDriver, Page Object and a pool of users.”
In brief, this will be an interior api to which you are able to deliver a request and perform various actions regarding the app side from in the test. It really is really simple to trigger:
It goes without stating that QaApi is just in a position to make use of test users and it is just available via an intranet.
As soon as the test had learnt to delete a person it starting working consistently and well after itself. Yet not for very long.
Phases of Badoo testing
Very nearly at each meeting we tell individuals exactly what stages that are testing have actually inside our business. I want to briefly list people who are of great interest from the viewpoint of Selenium tests:
To begin with, we ran devel staging and environment tests. Nonetheless, as time passes, we stumbled on the final outcome we must be in a position to run shot tests too. This is because fairly simple: devel doesn’t constantly copy manufacturing ideally, which is perhaps not really a thing that is good get a bug in the staging phase and eliminate the big event through the launch. Which means the duty won’t allow it to be into this launch and certainly will make it down later on than prepared.
Let’s return to our test. That is amazing you might be that self-same QA engineer whom happens to be tasked with teaching the enrollment test to focus in parallel on a few shots as well as on staging.
I want to remind you that shots work with a manufacturing environment, in macon ga escort other words, they will have the user base that is same. It really is quite apparent that within the current set-up it really is extremely hard to operate tests in synchronous. Then the second test tries to create a profile on Badoo when the first has already created one, and it will inevitably fail if you activate two of these tests a couple of seconds apart on different shots:
How do we re re re solve this dilemma of ours? How do we ensure that the test constantly features a fresh FB individual?
To start with I tried to resolve this dilemma the way that is simplest. We created a table that is mysql that I imported a few manually-created FB users and marked their status as ‘available’. The test took a person from this table, and changed their status to ‘busy’. The test crashed, giving the relevant notification if there was no available user.
This technique had a few drawbacks that are evident. First of all, if too test that is many were triggered as well, there have been insufficient reports available and there is nowhere getting them from. Additionally, for a few explanation, the test might neglect to surrender the consumer by the end (as an example if it had been stopped by pressing ‘Ctrl+C’). None for this had been valued on mornings whenever there clearly was not as much as a full hour to go prior to the launch due date.
We soon got fed up with unstable crashes and statuses that are out-of-control FB records and started initially to search for a significantly better solution…
Facebook includes a API that is great lets you produce test users and also to run them — developers.facebook.com/docs/graph-api. It really is organised pretty just: you formulate the demand you will need then deliver it into the FB host, and after that the clear answer comes home in json structure.
You will get a software id and key when you enroll the application on FB (to get more details see here — developers.facebook.com/docs/facebook-login/overview).
A pool that is real of users. Do it: let’s create users! 🙂
Having very carefully examined graph-api and its own distinctive features, we come up with the list that is following of problems: