Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unit Testing a Website

I'm curious to see how other developers go about testing their web sites. PHP specifically in my case, but this probably spans multiple languages. I've been working on a site for over a year now, and I'd really like to automate a lot of the regression testing I do between versions.

This specific site is in CodeIgniter, so I have some tests for my models. I'd like to move beyond just testing those though. However, this is an issue even non-MVC developers have had to tackle I'm sure.

Edit: I think the functionality that would satisfy a lot of my test desires is the ability to assert that paramters have a specific value at the end of the script processing. In my case a lot of logic is in the controller, and that's the main area I'd like to test.

like image 803
Parrots Avatar asked Feb 13 '09 19:02

Parrots


People also ask

What is unit testing in web development?

Unit testing is a software development process in which the smallest testable parts of an application, called units, are individually and independently scrutinized for proper operation. This testing methodology is done during the development process by the software developers and sometimes QA staff.

What is unit testing with example?

Unit testing is testing the smallest testable unit of an application. It is done during the coding phase by the developers. To perform unit testing, a developer writes a piece of code (unit tests) to verify the code to be tested (unit) is correct.

What should be tested in unit testing?

The purpose of a unit test in software engineering is to verify the behavior of a relatively small piece of software, independently from other parts. Unit tests are narrow in scope, and allow us to cover all cases, ensuring that every single part works correctly.


4 Answers

For actual unit testing without testing the UI, you should just test the functions in the model. Most of your functionality should be in there anyways.

You might want to have a look at Selenium for testing the UI of your site. It can record your actions and play them back, or you can edit the scripting directly. alt text
(source: seleniumhq.org)

like image 200
ryeguy Avatar answered Oct 07 '22 15:10

ryeguy


Have you tried Fitnesse ?

It helps on creating Acceptance tests. They are specially useful for websites, which doing this kind of tests are a pain.

There are a couple of videos from unclebob inside the webpage too. The good thing is that Fitnesse is not restricted for website testing, so your knowledge about using it can be used with other apps too.

The project I'm working on is a Desktop APP written in c++ that uses Fitnesse tests.

But if you meant unit testing the models (which I think you didn't), they can be create using the phpunit lib. I think the ZEND framework has a similar lib for that.

like image 25
Edison Gustavo Muenz Avatar answered Oct 07 '22 16:10

Edison Gustavo Muenz


You might want to check out PHPUnit http://www.phpunit.de/manual/current/en/

I have started using it on my PHP projects and it's very easy to work with and very powerful. In particular, learn and use mocks: http://www.phpunit.de/manual/3.0/en/mock-objects.html

Mocking is especially important when unit testing applications that do database operations.

like image 2
Allie the Icon Avatar answered Oct 07 '22 15:10

Allie the Icon


Take a look at TOAST. It's build specially for CodeIgniter. It uses CI infrastructure, so you can run all test tests via a browser and results are displayed back as a web page (HTML). It's very simple to use.

I suggest you test your Controllers as well. Testing model is ok, but model is just the DB storage. Controllers contain all the "business logic" and are the place where most things go wrong.

like image 1
Milan Babuškov Avatar answered Oct 07 '22 16:10

Milan Babuškov