|
Тестирование php страниц достаточно подробно в принципе описано в разделе по тест php .
Здесь делается попытка предоставить небольшой и понятный но в то же время демонстрирующий практически все аспекты тест для php-страницы. Из-за таких противоречивых целей (обозримый размер и покрытие всех аспектов) пример выглядит несколько искусственным, но зато полезным.
Итак будем тестировать начальную страницу "регистрации" некоего воображаемого портала.
Информация о зарегестрированных пользователях пусть лежит в mysql-табличке. Скрипт который инициализирует пустую базу данных назовём create_account.sql и он будет содержать следующий текст:
create database if not exists php_tests; use php_tests; create table Account( Account_id int NOT NULL primary key auto_increment, login char(50) NOT NULL, password char(50) NOT NULL, name char(50) NULL, account_type enum('user','admin','programmer'), unique index (login), index Login_password (login,password) ) TYPE=MyISAM; |
Для полноценного тестирования подготовим скрипт с тестовыми данными (test_account.sql):
use php_tests; insert into Account (login, password, name, account_type) values ("tlogin0", "tpassword0", null, "user"), ("tlogin1", "tpassword1", "tname1", "user"), ("tlogin2", "tpassword2", "tname2", "admin"), ("tlogin3", "tpassword3", "tname3", "programmer"); |
Для проверки состояния нашей СУБД заведём также специальный скрипт (check_account.sql):
use php_tests; select * from Account order by Account_id desc\G |
Кроме того, чтобы было легко восстанавливать исходное состояние СУБД, договоримчя в процессе тестов регистрировать только логины с префиксом "test_". Соответственно очищать СУБД после тестов можно простым скриптом (clear_test_account.sql):
use php_tests; delete from Account where login like "test_%"; repair table php_tests.Account use_frm; |
В качестве регистрационных данных будем принимать логин, пароль, имя и кроме того "тип" аккуонта (user, admin,account).
Подумаем какие случаи для нашей формы должны быть протестированы:
Для тестирования странички будем использовать тест php , а для работы с базой данных тестовую команду mysql . Для одного и того же теста но с разными типами пользователя будем использовать тест iterate , а в одно целое все тесты объединим тестом package .
Итак, тесты будут выглядеть следующим образом:
<package> <spec> <sname>sample_registrate</sname> <fname>tests for sample_registrate php form</fname> <descr> This is the test to illustrate testing of php-pages using izh_test. </descr> </spec> <safe_params> <par><name>php</name> <value>C:\php\cli\php.exe </value></par> <par><name>mysql</name> <value>C:\mysql\bin\mysql.exe </value></par> </safe_params> <tests> <php> <spec><sname>empty_login</sname></spec> <script>..\php\registrate.php</script> <out>r\empty_login.html</out> <post> <par><name>login</name><value/></par> <par><name>image_path</name><value>../../</value></par> </post> </php> <php> <spec><sname>wrong_password</sname></spec> <script>..\php\registrate.php</script> <out>r\wrong_password.html</out> <post> <par><name>login</name><value>login</value></par> <par><name>pass1</name><value>pass1</value></par> <par><name>pass2</name><value>pass2</value></par> <par><name>image_path</name><value>../../</value></par> </post> </php> <php> <spec><sname>empty_password</sname></spec> <script>..\php\registrate.php</script> <out>r\empty_password.html</out> <post> <par><name>login</name><value>login</value></par> <par><name>pass1</name><value/></par> <par><name>pass2</name><value/></par> <par><name>image_path</name><value>../../</value></par> </post> </php> <php> <spec><sname>existed_login</sname></spec> <script>..\php\registrate.php</script> <out>r\existed_login.html</out> <post> <par><name>login</name><value>tlogin1</value></par> <par><name>pass1</name><value>pass</value></par> <par><name>pass2</name><value>pass</value></par> <par><name>type</name> <value>programmer</value></par> <par><name>image_path</name><value>../../</value></par> </post> <before><mysql><script>..\db\clear_test_account.sql</script></mysql></before> <after> <mysql> <script>..\db\check_account.sql</script> <etalon>r\test_data.accounts.txt</etalon> </mysql> </after> </php> <php> <spec><sname>empty_name</sname></spec> <script>..\php\registrate.php</script> <out>r\empty_name.html</out> <check_session>true</check_session> <post> <par><name>login</name><value>test_login</value></par> <par><name>pass1</name><value>pass</value></par> <par><name>pass2</name><value>pass</value></par> <par><name>name</name> <value/></par> <par><name>type</name> <value>user</value></par> <par><name>image_path</name><value>../../</value></par> </post> <before><mysql><script>..\db\clear_test_account.sql</script></mysql></before> <after> <mysql> <script>..\db\check_account.sql</script> <etalon>r\empty_name.accounts.txt</etalon> </mysql> <mysql><script>..\db\clear_test_account.sql</script></mysql> </after> </php> <iterate> <spec><sname>types_of_account</sname></spec> <names><name>type</name></names> <tuples> <tuple><value>user</value></tuple> <tuple><value>admin</value></tuple> <tuple><value>programmer</value></tuple> <tuple><value>unknown_type</value></tuple> </tuples> <template> <php> <spec><sname>%type%</sname></spec> <script>..\php\registrate.php</script> <out>r\type\%type%.html</out> <check_session>true</check_session> <post> <par><name>login</name><value>test_login</value></par> <par><name>pass1</name><value>pass</value></par> <par><name>pass2</name><value>pass</value></par> <par><name>name</name> <value>test_name</value></par> <par><name>type</name> <value>%type%</value></par> <par><name>image_path</name><value>../../../</value></par> </post> <before><mysql><script>..\db\clear_test_account.sql</script></mysql></before> <after> <mysql> <script>..\db\check_account.sql</script> <etalon>r\type\%type%.accounts.txt</etalon> </mysql> <mysql><script>..\db\clear_test_account.sql</script></mysql> </after> </php> </template> </iterate> </tests> </package> |
Готовый пример можно выкачать здесь : http://www.izhsoft.com/downloads.html или здесь : http://www.sourceforge.org/projects/izh-test/
Для его использования необходимо:
itr tests\php_sample.itd.xml |
itr tests\php_sample.itd.xml --gui |
|