среда, 4 августа 2010 г.

В чем разница между верификацией и валидацией?

Верификация представляет собой инспекцию или ревизию без запуска программного кода продукта, тогда как валидация выполняется с фактическим запуском программного кода.


Например, рецензия кода и проверка синтаксиса являются верификацией, в то время как валидация включает в себя запуск программного кода и проверку результатов.

Как правило валидация следует после того, как выполнен процесс верификации.

пятница, 2 октября 2009 г.

11 интереснейших бесплатных онлайн-семинаров по юзабилити и UX от международных специалистов


Сейчас открыта бесплатая регистрация на второй юзабилити-марафон.

Для проведения вебинаров используется приложение GoToWebinar.


Вебинары проводят лучшие специалисты по юзабилити из США, Китая, Австралии, Германии.

Регистрация здесь.

понедельник, 10 августа 2009 г.

Дополнения для Firefox в помощь тестировщику - часть 1

1. Firebug

С помощью этого дополнения все необходимые инструменты будут у вас под рукой во время использования браузера. Вы можете редактировать, отлаживать и исследовать CSS, HTML, JavaScript на любой веб-странице.


2. Web Developer Toolbar

Набор утилит, который в сочетании с Firebug составляет незаменимый инструментарий как для веб-разработчика, так и для тестировщика.

3. XSS me

Межсайтовый скриптинг (XSS) - это одна из самых распостраненных уязвимостей веб-приложений на сегодняшний день. Обнаружение XSS уязвимостей на ранних стадиях разработки позволит защитить веб-приложение от опасных атак.

4. SQL Inject Me

Встраивание вредоносного кода в запросы к базе данных может причинить большой ущерб веб-приложеням. Злоумышленник может просмотреть и удалить записи, удалить таблицы или получить доступ к вашему серверу. Это дополнение заменяет поля в формах строками, содержащими вредоносные запросы.

5. Firesizer

Содержит меню и строку состояния для изменения размера окна до определенного значения. Это дополнение является чрезвычайно полезным, если вы хотите протестировать, как ваше приложение будет выглядеть при разных размерах окна.

среда, 5 августа 2009 г.

Тест знаний Тестирование ПО - Основы

Случайно нашла очень интересный сервис онлайн тестирования - Quizful.

В нем есть тест знаний по основам тестирования ПО. Правда он пока что не сертификационный, но дает возможность проверить свои теоретические знания и поучаствовать в рейтинге тестировщиков :-)

Я на некоторые вопросы даже ответила неправильно - стыд и позор. Надо подтянуть пробелы в знаниях. В этом тесте очень не хватает практических вопросов. Я думаю, что практика намного важнее в работе тестировщика.

"Суха теория, мой друг, а древо жизни вечно зеленеет". Но такая информация дает хорошие результаты в дальнейшей работе.

Скриншот моих скромных результатов ниже. Советую пройти этот тест.

вторник, 28 июля 2009 г.

Рассылка результатов тестирования при использовании Selenium+TestNG

Если вы для запуска автоматизированных тестов используете связку Selenium+TestNG, то результаты запуска тестов легко рассылать всем заинтересованным лицам автоматически.

Это очень удобно с точки зрения информирования участников проекта о текущем состоянии основного функционала. Так же можно сделать небольшой пакет автоматизированных тестов для продакт версии вашего проекта и запускать его несколько раз в сутки. В таком случае вы узнаете о возникших проблемах одними из первых, а не получите гневное письмо от заказчика.

Достаточно будет просто просматривать отчеты в вашем почтовом клиенте. Запуск автоматизированных тестов можно настроить с помощью шедулера. Об этом я расскажу позже.

Результаты прогона автоматизированных тестов хранятся в файле /test-output/emailable-report.html. Этот отчет предназначен специально для рассылки по электронной почте всем участникам процесса.

Так же в рассылаемый отчет можно включать скриншоты всех зафейленых тестов. По моему мнению визуальное представление результата позволяет быстрее понять, в чем причина свала теста. Открыв скриншот, можно сразу понять действительно ли это баг, или все-таки ошибка скрипта или тестовых данных.

Скриншоты в рассматриваемом примере во время прогона автоматизированных тестов помещаются в папку /test-output/screenshots и имеют довольно-таки информативное название.

Например, DailyPack.Administrator_otdelov.Admin_Otdel_5_Clients_
Sorting.testDeleteClients_07_01_2009_17_58.png


DailyPack.Administrator_otdelov – название пакета

Admin_Otdel_5_Clients_Sorting – название класса

testDeleteClients – название метода

07_01_2009_17_58 – время, когда скриншот был получен

Для рассылки результатов я использую JavaMail 1.4.2. Это набор классов для работы с почтовой системой.

Вот так выглядит полученный отчет в The Bat!:



Собственно, код класса для рассылки ниже:



import java.text.SimpleDateFormat;
import java.util.*;
import java.io.*;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Calendar;

public final class DemoMailer {
public static void main( String... aArguments ) throws IOException{
Emailer emailer = new Emailer();

// Получаем текущую дату

Calendar c = Calendar.getInstance();

SimpleDateFormat sdf = new SimpleDateFormat("MM.dd.yyyy kk:mm");

// от кого будет письмо

String from = "tester@qa-testlab.com";

// получатель 1

String to1 = "tester2@qa-testlab.com";

// получатель 2

String to2 = "developer@qa-testlab.com";

// получатель 3

String to3 = "pm@qa-testlab.com";

// результаты прогона тестов для какого проекта

String project = "Book Shop";

// путь к отчету emailable-report.html

String path1 = "C:\\B2B_Pack\\test-output\\emailable-report.html";

// путь к скриншотам

String path2 = "C:\\B2B_Pack\\test-output\\screenshots";

emailer.sendEmail(

from, to1, to2, to3,

"Test Results for " + project + " " + sdf.format(c.getTime()), path1, path2);

}

public void sendEmail(

String aFromEmailAddr, String aToEmailAddr, String aToEmailAddr2, String aToEmailAddr3,

String aSubject, String attach, String screenpath

) throws IOException{

Session session = Session.getDefaultInstance( fMailServerConfig, null );

MimeMessage message = new MimeMessage( session );

try {

// добавляем получателя 1

message.addRecipient(

Message.RecipientType.TO, new InternetAddress(aToEmailAddr)

);

// добавляем получателя 2

message.addRecipient(

Message.RecipientType.TO, new InternetAddress(aToEmailAddr2)

);

// добавляем получателя 3

message.addRecipient(

Message.RecipientType.TO, new InternetAddress(aToEmailAddr3)

);

// тема письма
message.setSubject( aSubject );

// от кого письмо
message.setFrom(new InternetAddress(aFromEmailAddr));
MimeBodyPart attachFilePart = new MimeBodyPart();
FileDataSource fds = new FileDataSource(attach);
attachFilePart.setDataHandler(new DataHandler(fds));
attachFilePart.setFileName(fds.getName());
MimeBodyPart textPart = new MimeBodyPart();
textPart.setContent(attachFilePart, "text/html");
Multipart mp = new MimeMultipart();
mp.addBodyPart(attachFilePart);
// аттачим все скриншоты
File dir = new File(screenpath);
String[] children = dir.list();
if (children == null) {
System.out.println("dir does not exist");
} else {
for (int i=0; i

String filename = children[i];
System.out.println("Adding: " + filename);
attachFilePart = new MimeBodyPart();
fds = new FileDataSource(screenpath+"\\"+filename);
attachFilePart.setDataHandler(new DataHandler(fds));
attachFilePart.setFileName(fds.getName());
mp.addBodyPart(attachFilePart);
}
}
message.setContent(mp);
Transport.send( message );

System.out.println("Mail was sent to " + aToEmailAddr + ", " + aToEmailAddr2 + ", " + aToEmailAddr3);
}
catch (MessagingException ex){
System.err.println("Cannot send email. " + ex);
}
}

public static void refreshConfig() {
fMailServerConfig.clear();
fetchConfig();
}

// PRIVATE //
private static Properties fMailServerConfig = new Properties();
static {
fetchConfig();
}

private static void fetchConfig() {
InputStream input = null;
try {
// конфигурационный файл
input = new FileInputStream("C:\\B2B_Pack\\mail.txt" );
fMailServerConfig.load( input );
}

catch ( IOException ex ){
System.err.println("Cannot open and load mail server properties file.");
}

finally {
try {
if ( input != null ) input.close();
}
catch ( IOException ex ){
System.err.println( "Cannot close mail server properties file." );
}
}
}
}





Конфигурационный файл для javax.mail (пример)




# Configuration file for javax.mail

# If a value for an item is not provided, then
# system defaults will be used. These items can
# also be set in code.
# Host whose mail services will be used
# (Default value : localhost)
mail.host=zoo. qa-testlab.com
# Return address to appear on emails
# (Default value : username@host)
#mail.from=tester@ qa-testlab.com
# Other possible items include:
#mail.user=irinach@ qa-testlab.com
# mail.store.protocol=
#mail.transport.protocol=POP3
mail.smtp.host=zoo.web100.com.ua
# mail.smtp.user=
# mail.debug=

вторник, 26 мая 2009 г.

Проверка соответствия реализованного UI макетам

Часто возникает задача по проверке соответствия реализованного UI макетам, сделанных дизайнером.

Здесь проверяется абсолютно все - цвета, шрифты, выравнивание, размеры элементов.

Хочу предложить несколько полезных вещей, которые облегчат эту задачу.

1) Электронная линейка - с ее помощью можно получить точную информацию о размере фрагмента любого приложения Windows, работающего в оконном режиме.



2) Пипетка -
просто продвинутая пипетка, ни больше, ни меньше. С её помощью можно узнать всю подноготную пикселя, на который в данный момент указывает курсор. Основное отличие от похожих программ в том, что этот инструмент работает со всем, что в данный момент находится на рабочем столе.

3) Сервис для определения шрифта - определяет возможный шрифт после загрузки примера изображения. Конечно, определяет не всегда правильно.

среда, 18 февраля 2009 г.

А сколько тестировщиков в странах СНГ?

По данным службы занятости США 349 140 людей тестировали программное обеспечение в штатах в 2007 году.

Эти люди тестируют операционные системы, компиляторы, софт для медицины, производства, ПО для военных и ученых, ПО для полетов в атмосфере и космосе.......... и много чего еще.

Интересно, сколько у людей заняты у нас этим занятием.

Я даже не могу представить :-)