Better Memory Dumps on Android
This is a follow-up on the previous article about Deobfuscating HPROF memory dumps. Reading that article isn’t a requirement, some knowledge of the HPROF file format is useful.While implementing the...
View ArticleTesting Android notifications in Calabash
It’s generally understood that Calabash can only operate controls that are part of the application it’s testing, but this limitation is particularly annoying with status bar notifications.We would like...
View ArticleLet's build: Freehand Drawing in iOS - Part 1
This post will be the first of a series in which we follow the development of a specific feature. We want to add to the great quantity of existing tutorials on the internet by sharing practical...
View ArticleLet's build: Freehand Drawing in iOS - Part 2
This the second in a series of tutorials in which we build Freehand Drawing for iOS. In this part we’ll add undo functionality and the ability to draw dots.In the previous post we built a simple UIView...
View ArticleCross Platform Mobile Test Automation and Continuous Delivery
Badoo develops multiple products with native applications on all major mobile platforms - Android, iOS, Mobile Web (HTML5) and Windows. Our most popular product, called Badoo, has 250M+ registered...
View ArticleJaCoCo coverage in Cucumber on Android
In an ideal world, all requirements would be specified clearly, comprehensive tests would be derived from those requirements, and the whole of the application would be tested. In practice, we’re only...
View ArticleFirst Badoo Summer Internship Program
For the first time ever, Badoo has taken on an intern over the summer. We see it as an act of giving back, supporting young students in gaining relevant work experience and skills, while enjoying the...
View ArticleLet's build: Freehand Drawing in iOS - Part 3
This the third and final tutorial in which we build Freehand Drawing for iOS. In this part we’ll improve how the stroke looks and feels.You can check the previous posts here:Part 1: Basic...
View ArticleClick to git rebase
When we talk about automating the development and testing process, it might sound like it’s a very ambitious affair, and indeed it is. But if you break it into pieces, then individual fragments of the...
View Articleclang-format as a guard for Objective-C code style
This article is about the experience of Badoo’s iOS team in making sure Objective-C code is compliant with the code style used.Importance of the code styleThe primary goal of all coding conventions is...
View ArticleBatch updates for UITableView and UICollectionView
Apple did a tremendous job in giving developers such powerful building blocks as UITableView and UICollectionView. It’s even possible to claim that iOS wouldn’t have been such a success without these...
View ArticleParallel Calabash Testing on iOS
We want our users to have the same experience of Badoo on mobile regardless of which platform they run, so we have a battery of 450 Cucumber tests and growing that we run against all platforms:...
View ArticleBadoo Coding Challenge
Welcome to our first edition of the Badoo Coding Challenge! Below, you will find all the relevant information about the challenge. We hope participants will enjoy solving the problems as much as we...
View ArticleHow we made Chatto
Our chat was old, having evolved over the years into a massive view controller with weird fixes that nobody could understand. It was difficult to add new types of messages and new bugs were easily...
View ArticleBadoo Coding Challenge - Finalists and Winners
Thank you to everyone who took part in the Badoo Coding Challenge. We are very happy to announce the names of our finalists and winners below. We will be in contact with all finalists and winners via...
View ArticleMobile App Testing - Tips and Tricks
Our new article is in fact a list of tips and tricks. These tips will help beginners to progress faster while more experienced users will be able to streamline what they know. The article will also be...
View ArticleWinium.Desktop - Selenium for Windows-based Desktop Applications
We’re delighted to announce that we are publishing guest writer, Gleb Golovin’s first article on our blog. Gleb has been kind enough to share his work with us.Hi there. My name is Gleb, and I do test...
View ArticleCreate a plugin for Google Protocol Buffer
Google’s Protocol Buffer is a library to encode and decode messages in a binary format optimised to be compact and portable between different platforms.At the moment the core library can generate code...
View ArticleWinium - Now for Windows Phone
We’re delighted to announce that we are publishing guest writer, Nick Abalov’s first article on our blog. Nick has been kind enough to share his work with us.There are no convenient open source...
View ArticleHow Badoo saved one million dollars switching to PHP7
IntroductionWe did it! Hundreds of our application servers are now running on PHP7 and doing just fine. By all accounts, ours is only the second project of this scale (after Etsy) to switch to PHP7....
View ArticleiOS Architecture Patterns
FYI: Slides from my presentation at NSLondon are available here.Feeling weird while doing MVC in iOS? Have doubts about switching to MVVM? Heard about VIPER, but not sure if it worth it?Keep reading to...
View ArticleOur Bounty Program at Badoo
Many IT companies now have their own bounty programs (i.e. programs that root out vulnerabilities), and Badoo is no exception.In this article, we’ll discuss how we launched and support our bounty...
View ArticlePardon My French - Introducing Chateau
Being a social networking platform, providing a great chat experience is at the core of what we do at Badoo. However, the meaning of “a great chat experience” is constantly evolving, and the major chat...
View ArticleCrazy Agile API
There are lots of articles and books on how to properly design APIs, but only few of them cover the case of a constantly changing API. In fast moving companies, releasing many features per week/day and...
View ArticleCollection and Analysis of Daemon Logs at Badoo
We have a few dozen homebrew daemons at Badoo. Most of them are written in C, one in C++ and five or six in Go. They run on about a hundred servers in four data centres.At Badoo the monitoring division...
View ArticleShake Detector for Android with RxJava
It all began when I had the task of undoing a user action in the app when the device was shaken. The main problem was how to know that a shake had occurred. After a couple of minutes of searching, it...
View ArticleSegregating Android Phone Models between Docker Containers
We wanted to move our Android device tests to a Linux host: it’s cheaper hardware, and we find that our Mac Mini build machines tend to fumble Android USB connections, making phones mysteriously vanish...
View ArticleWindows Phone - an experimental platform
In the last three years our team has tripled in numbers, and is now newly focused on becoming the company’s experimental platform. In this article I will tell you the story of our team: how our Windows...
View ArticleTop 3 Badoo Android AMA
Our Android team just had their first Ask Me Anything (AMA), it was great! So we’re sharing our top 3 Android questions and answers from Dima, Erik, Guillermo, Rich and Yaroslav.For those of you who...
View ArticleMasking Bitmaps
The problem of image masking often comes up in Android development. Rounded image corners or rounded images are required most of all. Yet sometimes even more complex image masks are used.In this...
View ArticleEmoji?! No, never heard of it
Emoji have been part of our life for some time now. We use them on social media, especially in all kinds of messenger apps, where we can express our feelings in just one icon.But sending and displaying...
View ArticleLearning from mistakes in the organisation of quality control
Hello all! My name is Ilya Kudinov and I work as a QA engineer at Badoo. Three years ago, I started attending various IT conferences and giving talks about the processes and techniques we use for...
View ArticleHow to Dockerise Calabash-Android on Mac OS
At Badoo, we use Calabash for automated Android application testing. One of our goal is to make it super easy for developers to run these tests in one command without going through the pain of setting...
View ArticleHow we test interaction with Facebook
Hello, everybody! For ages now, I have been wanting to write an article about how automated testing is set up at Badoo. I wanted to write something which would be both interesting and useful. I wanted...
View ArticleBreaking the limitation of Calabash-Android!
Two of the most popular drivers for Android app automation are Appium and Calabash. While both have their pros and cons, their major limitations are:Calabash: Can only drive UI which is part of the...
View ArticleWhat do a mobile QA and an octopus have in common?
Hi! My name is Katya and I am a tester for one of the most popular dating apps: Badoo.Picture this: it’s early morning, you are the mobile QA. You get ready for your day, and make yourself a strong...
View ArticleHow to teach a web app to speak 100 languages - the specifics of localisation
A key characteristic of online services these days is that they are accessed by users from all over the world speaking a multitude of languages. If you are developing this kind of service and want...
View ArticleHow to become an iOS Developer
Life stories of Badoo developers and how they became iOS guysI’ve been a developer for a while now and I frequently look back to my origins to assess how much did I have progressed. Becoming iOS...
View ArticleWebRTC - Making a peer-to-peer game using JavaScript
I recently had the chance to work on a prototype for a video chat service. It was an excellent opportunity to become more closely acquainted with WebRTC concepts and to try them out in practice. As a...
View ArticleEverything you wanted to know about Git but weren't nerdy enough to ask
If you are unfamiliar with Git, some background may help introduce the relevant terminology before reading one of the many Git tutorials online.Git is one of several source control systems - others...
View ArticleLeads, go home – and take your reports with you!
Hello! I am Rafael, and I am workaholic. I have been recovering for some time now, and I want to share my findings with you today. I’ve been a programmer for as long as I remember. It all started in my...
View ArticleA small but extremely useful patch for Selenium
Within our small, yet dynamically developing company we test hundreds of tasks every day. They are all checked in test environments as well as in environments which are closer to real situations. The...
View ArticleWrite an Android component for React Native
(Updated 13/04/2017: Bumped to React Native 0.42.3 and updated code)One of the cool things I like from working at Badoo, is that we are free to propose, test and promote new or different techniques,...
View ArticleThe painless way to collect statistics from a web-site
We know that analytics allows you to assess how effectively any web-site operates, to improve how it operates, and therefore to raise the level of sales and to improve user interaction with the site....
View ArticleReactive selfies with Camera2 API on Android - Part 1
As you probably know, RxJava is good for solving two problems: processing event streams and working with asynchronous methods. In a previous article (Shake Detector for Android with RxJava), I showed...
View ArticleTesters are from Mars and Developers are from Venus!
Anyone who has ever been a part of any software company in any domain (internet, telecom, enterprise, etc…) would easily attest to the title of this article. :-) Although the title of this article is...
View ArticleDo MVC like it's 1979
How to build a good iOS architecture by learning from the old onePort house AntwerpA bit of historyIn 1979 Trygve Reenskaug came up with MVC — a general solution to the problem of giving users control...
View ArticleIntegrating React Native in an existing application
Updated 11/04/2017: Added some of the API changes and updated the React Native version used in the articleAs I promised at the end of my previous article, “Writing an Android component for React...
View ArticleBehind the scenes with importing Adobe After Effects animation into Badoo iOS...
Re - think, Re - design, Re - fresh.Although I’m not the biggest fan of TV in general, there are shows that amuse me. “Let’s make a deal” will always be number one. But here I want to point out the...
View ArticleAdvanced WWDC 2017 Guide
Hello everyone! There are more than 120 sessions from WWDC, do you knw which one to watch? Get instruction on how to watch and check out some short reviews about the talks. Stick with me and I would...
View Article