вторник, 23 февраля 2016 г.

Mac OS X several JDKs management

http://www.jenv.be/
~/.java_version - file with current jdk version
~/.jenv/ - место обитания утилиты

Agile Testing Training

https://www.browserstack.com/

1)  Gantt Chart

2) Appium?

3) Feature flag for apple on BE to provide to an user some new feature.

4) Spike(from XP Methodology) - технологическое исследование.

Project Manager  - time scheduling
Product Manager - Backlog management

P1 - Minimum Version of Product
QAssurance =/= Tester(QAssistent)

Sprint0 - tools configuration; preparation; infrustrure work

chef - [шеф])))

Sprint1- if you gonna to calculate velocity then this is the place for it.

gone chart

story point - relational point for estimation. В них оцениваются юзер стори(это и BE+FE+testing)


Velocity of team

Story points
^
|     x
|            x
|                  x    x
|                               x
|___1__2__3__4__5__x6________> Time (days)

Если тестирование влияет на количество стори поинтов, то это означает что разработчики не считают тестировщиков частью комманды.



Task |    Todo   |   In Progress   |  Review (Code review of "ready" task) | Verify(Testing)  | Done
1       |    1d       |    2d                 |                              0.5d                          |    0.5day              |  .....

"Как мы будем это тестировать?" - задавать на этапе планирования по каждой задаче и не переходить дальше пока ответ не будет дан.


jUnit sources - good example of good code:)


End to end tests (UI) - only "Happy flow"(registration, payment) should be covered.
Integration tests
Componental tests (Mocked BE so we check only UI(FE) layer; concentrated testing of concrete layer).
Unit tests


Build should be no more than 30 minutes.

Книга: Эляху Голдрейд "Цель", "Цель 2"


Ice-cream antipattern - перевернутая пирамида тестов.

Еще нужно понимать, что тесты всегда несут в нагрузку время на поддержку, потому что требования изменяются.

Автоматизация.

Рекордеры подходят для оптимизирования маннуальных тестов(тестить больше), но не для автоматических тестов.

Robotium(testdroid)

Qtp
https://saucelabs.com/


PixelPerfect - AppLitools - для соответсвия визуалкам.

http://www.sikuli.org/testing.html - план Б, если нет локатора, чтобы достать это силениумом.

https://www.getpostman.com/


Sniffers can be used for gathering data for mocks for Components testing.



xPath works in Chrome Devtools in search box



Test Strategy

Tests criterias should be the first...

Эвристика - менатльный иснтрумент Джеймса Баха? абстрактный подход, который помогает находить правильную тестовую стратегию. Цель создания - ответ навопрос "как начинать дискусию?" -> собираем контекст.

Structure
Function
Data
Platform
Operations(user stories)


преимущество эвристики по сравнению с шаблонами - гибкость.

Эвристическая модель тестовой стратегии.


Quality criteria:                                        
 like: testibility of system;                            
 time to fix some defect should be  X days  


требования для производительности было бы не плохо залаживать в самом начале разработки архитектуры системы.

https://www.pagerduty.com/ - система для мониторинга продакшина

http://www.satisfice.com/tools/htsm.pdf


Project Environment


Product Elements


Исследовательское тестирова vs скриптовая тестировка

xMind

http://goo.gl/omLwqS - good site for train testing skills (there are enough bugs)

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

http://www.getzephyr.com/



graphwalker.org(state transition diagram) Model Based Testing - alternative to Gerkin for large and long application.

Gerkin - short, medium project
MBT - long large project.


Баг можно не заводить если он будет пофикшен в течении 30 минут.


bug triage meaning - расстановка приоритетов накопившимся багам.
http://tim-richardson.net/joomla15/tech-articles-list-techmenu-71/76-definition-of-a-bug-triage.html

http://scrumguides.com.ua/articles/uhod-za-beklogom-gruming-ili-kak-sdel/

https://www.owasp.org/index.php/Main_Page

http://www.thucydides.info/

http://software-testing.ru/forum/index.php?/topic/12806-printcipialnaia-raznitca-mezhdu-severity-priority/


https://developers.google.com/protocol-buffers/
https://github.com/google/protobuf



"triton shoes"


Эвристики:
Past
Results
Obstacles
Outlook
Feelings (smiles)




Watcher in jira for new commer


Defect Prevention Strategy
Этап планирования
1) critical questions.
2) focusing the team on the testability
3) test types.
4) engineering tools
5) prototypes, mocks
6) acceptance criteria
7) test environment, data

Этап реализации
1) Тестировать как можно раньше
2) Разработка всей командой вместе на старте(один кодит все советуют - команда должна быть приблизительно одного уровня)
3) Автоматизация тестирования.
4) Углубляться в детали(разумно).


Test Heuristics Cheat Sheet
http://testobsessed.com/wp-content/uploads/2011/04/testheuristicscheatsheetv1.pdf

https://chrome.google.com/webstore/detail/bug-magnet/efhedldbjahpgjcneebmbolkalbhckfi

Tree roles:
Tester
Reporter
Observer


Check Lists vs Test Cases

Yandex QA tools http://qatools.ru/
https://github.com/yandex-qatools

performance test - common visiting
load test - high visiting
stress test - to know critical values(when we know maximum than we can stop accepting new requests after hitting some limit)

AWS чеще всего используется для разработки, а для продакшина используются собственные сервера в датацентрах.

https://archive.org/web/











среда, 17 февраля 2016 г.

Jersey test util features

Jersey предлагает неплохие тулзы для тестирования.
Единственное что они подымают реальный контейнер для запуска сервлеты сервера
org.glassfish.jersey.test.grizzly.GrizzlyTestContainerFactory$GrizzlyTestContainer
что занимает определенное время... Но это можно пережить.

Необходимы классы вот:
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.Form;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.spring.SpringLifecycleListener;
import org.glassfish.jersey.test.JerseyTest;

Первая група это просто классы для работы с JAX-RS по спецификации.
А вот вторая уже стыковка со спрингом(если он у нас для поддержания контекста зависимостей) и уже JerseyTest класс, который мы расширяем для магии
public class MyRestResourceTest extends JerseyTest {

    @Override
    protected Application configure() {
   ResourceConfig appConfig = new ResourceConfig(MyRestResource.class);
   appConfig.register(SpringLifecycleListener.class);
   appConfig.property("contextConfigLocation", "file:src/main/webapp/WEB-INF/spring/root-context.xml");
   return appConfig;
    }
    
    @Test
    ........
}
Расширение этого класса позврояет нам пользоваться методом, который дарует возможность запросов на сервер:
public class MyRestResourceTest extends JerseyTest {
    ........
    
    @Test
    public void testSomeGet() throws Exception {
        final Response resp = target().path("/somepath")
    .request(javax.ws.rs.core.MediaType.APPLICATION_JSON)
                                .get();
        assertThat(resp.getStatus(), is(200));
        String someJsonForParsing = response.readEntity(String.class);
        ...        
    }
    ........
}
Ну и чего-нибудь отправим:
public class MyRestResourceTest extends JerseyTest {
    ........
    
    @Test
    public void testSomePost() throws Exception {
        Form form = new Form() ;
        form.param("param1", "value");
        final Response resp = target("path/for/post").request(javax.ws.rs.core.MediaType.APPLICATION_JSON)
          .post(Entity.entity(form, "application/x-www-form-urlencoded"));
        assertThat(resp.getStatus(), is(200));
        String someJsonForParsing = response.readEntity(String.class);
        ...        
    }
    ........
}

вторник, 16 февраля 2016 г.

jUnit Theories for generating test inputs

https://dzone.com/articles/building-custom-datapoints

понедельник, 15 февраля 2016 г.

Миф мультизадачности

http://blog.codinghorror.com/the-multi-tasking-myth/

понедельник, 8 февраля 2016 г.

RESTful levels

REST Maturity Model

Richardson created the REST Maturity model which specifies whether an API is “fully RESTful”. Most are not, and don’t necessarily have to be. But here is a rundown:

Level 0 - XML-RPC / SOAP

  • One URI
  • One HTTP Method
Level 0 is a very basic model where you simply sent an RPI (Remote Procedure Invocation) at a web site and it returns some data. It can be in XML, JSON, or any format with key-value pairs.

Level 1 - Add URIs

  • Many URIs / Resources
  • One HTTP Method
Level 1 is similar except now there are multiple resources in use:
http://www.yoursite.com/api/products/1234
http://www.yoursite.com/api/customers/0037

Level 2 - Add HTTP

  • Many URIs/Resources
  • Use of HTTP Verbs
In level 2 we add HTTP verbs: GET,POST,PUT,DELETE. There are others, but these four I will describe later.

Level 3 - Add HATEOAS

  • Many URIs/Resources
  • Use of HTTP verbs
  • Hypermedia
In this level we add HATEOAS: Hypertext As The Engine Of Application State. This is how we send objects, but also some instructions in the reply describing what we can do next. For example, it may return something like this:
xml version="1.0"?>
<account>
   <account_number>12345</account_number>
   <balance currency="usd">100.00</balance>
   <link rel="deposit" href="/account/12345/deposit" />
   <link rel="withdraw" href="/account/12345/withdraw" /> 
   <link rel="transfer" href="/account/12345/transfer" />
   <link rel="close" href="/account/12345/close" />
 </account>
(from Wikipedia)
These hypermedia controls mean the REST client does not need to know how to use the service and instead can be guided by the responses. This is what is considered a “fully RESTful” service.