Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between behat, mink and selenium in php

I am new to testing. All i knew was we PHPunit for testing various functions within class and then i know selenium for browser testing.

I know we can write php to link with selenium web driver to do headless testing of browser.

I am not able to get how does behat and mink come in there. Are these seperate from selenium and they are the alternatives of selenium.

Can i do aweb application tetsing without beaht, mink and only with selenium and php

like image 708
user24 Avatar asked Dec 09 '22 11:12

user24


1 Answers

PHPUnit and Behat are similar, both being testing frameworks. They allow you to test your code, by using different approaches:

  • PHPUnit tests are based on code you write to check how your classes behave under the required circunstances. A lot of people use this type of framework to practice TDD, but you can of course write tests after the code, or for code written a long time ago.

  • Behat tests are written in a human readable way, and they are supposed to allow everyone involved in the project to read them. This type of testing is called BDD. You can write tests that explain in (nearly) plain english how your system is supposed to behave.

IMO PHPUnit is more general and is the preferred way of writing most tests. I use Behat for testing my systems general behavior, and PHPUnit for unit testing every class and method independently of others.

On the other side, Mink is a library that allows you to browse programatically, using PHP, and access the contents. It can be used to control in a unified way a lot of browsing systems like Selenium, Zombie, etc. each of them based on different technologies.

You can use Mink outside Behat, but they are usually used together because this way you can write tests that show how a website behaves: Given I enter my credentials in the login form, And press the submit button, I should see my profile page...

And yes, you can use PHPUnit and Selenium together as explained in the docs...

like image 110
gontrollez Avatar answered Dec 11 '22 01:12

gontrollez