Notes From UKSTAR 2017 Conference

We have left behind very first UKSTAR 2017 which organized by EuroSTAR at London.

There were many QA Specialists, Test Automation Specialists, QA Team Leaders and Developers from different industries.

We had taken a lot of takeaways from workshops, keynotes, conversation tracks and even also coffee breaks.

The purpose of writing this blogpost is to remember my takeaways and share my observations with other people.

I wrote my observations track-by-track. Unfortunately, there were parallel sections on the conference, hence i could only write which tracks that i attended. You know, maybe i needed Hermione’s time turner :) .

via GIPHY

 

DAY 1

Test Automation Patterns: Management -Dorothy Graham, Seretta Gamba

Test Automation Patterns : Management

In this workshop , we learned how to diagnose the test automation issues. Test automations issues and patterns were separated in 4 main branch; execution, design, process, management . After the diagnostic, we learned to solve issues with test automation patterns.

We learned to overcome issues with psychological techniques besides technical solutions. Seretta and Dorothy were performed excellent and enjoyable play for show us psychological technics :)

You can get more information from testautomationpatterns.org .

Mob Testing – Maaret Pyhäjärvi & Llewellyn Falco

I had read a few things about Mob Testing from Maaret’s blogposts. It was pleasure for me to listen Maaret and Llewellyn. They performed nice presentation to us.

They talked about application of Mob Testing sessions and how make affective mob testing sessions. We took lessons from their stories from their mob testing experiences.

 

These are my notes from presentation:

  • Apply mob testing like test with your friends
  • Interesting bugs and UX issues may came to light because of driver and navigator different people.
  • To changing of navigator and driver may find out different bugs and sights.

I didn’t write about details of Mob Testing. But you can find all details at Mob Programming Guidebook by Maaret Pyhäjärvi and Llewellyn Falco.

Gatling – Tales from a Journey – Siegfried Goeschl

Siegfried spoke about open-source Performance Testing Tool : Gatling. He mentioned their story to introduce Gatling. And also, we learned many technical details about the set up, configuration and integration at Gatling.

As a performance testing tool Gatling written in Scala, and their scripts should write in Scala. You can find documents in gatling.io. I am going to give a try to Gatling after that presentation :).

Sigfried had release a project named as Gatling Blueprint Project , i recommend to you have a look it.

Picture

Picture

 

Monitoring System Performance – Mirjana Kolarov

20170227_160247_HDR

 

In this section Mirjana told us that how they monitor their system performance and their good and bad experiences. Also we learned how a tester approaches to graphics at monitoring tools in different cases.

Forecast: Cloudy with Testable Security – Paco Hope, Amazon Web Services, UK

Thing have changed after systems move to cloud. Though most of the security issues are resolved, there are still problems at the application layer. Paco told us how can we handle security problems at applications layer.Blank

Assure that your software doesn’t have well-known vulnerabilities

Featured tools on keynote:

 

DAY 2

Fearless Development Kristian Karl, Spotify, Sweden

20170228_103220_HDR

“Fearless Development” was thing which i had just heard. Fearless development needs fearless teams.

Fearless teams :

  • do not know release dates are (assertive !)
  • have plenty of automated test and thrust them.
  • agile,
  • low technical debt,
  • dare to innovate and fail

Kristian told us how we get that speed and reliability for fearless teams and fearless development by implication.

So we need these to get fearless:

  • TDD – Drives good design, and generates lost and lots of unit tests,
  • Lots of integration test,
  • Failing tests automatically breaks build,
  • guard the team from themselves and other teams
  • create traceability

Ways of working depends on consensus and agreement in your team.

 

 

“In learning you will teach, and in teaching you will learn” – Experiences from  the Software Testing Clinic – Dan Ashby & Hannah Mason

20170228_121218_HDR (1)

Dan and Hannah told us about software test clinic , how testers can improve themselves. We got that communities play important role in career of the testers.

Also we listened interesting story from Hannah which her transformation nurse to tester. That was a great story.

Agile Testing – Adding Value to Agile Teams – Amela Teftedarija & Adisa Sinanovic

20170228_125533_HDR

It was pretty enjoyable presentation. That presentation pushed us to think our team dynamics.

They mentioned about challenges : Continuous testing, communication, time limitation, manual testing, automation and distributed teams.

We got tips that how we act against to these challenges from Adisa and Amela. These are a few of  them:

  • be creative,
  • get new skills
  • focus big pictıre : focus on costumer,
  • stop saying “i wish” say “i  will”

Book Recommendation : Agile Testing by Lisa Crispin and Janet Gregory

 Conversation : Automation and People –  Isabel Evans & Alan Richardson

20170228_135743_HDR

Isabel and Alan handled the trending conversation. So their session was so crowded. Here is a few view from conversation :

  • A Developer : Tester should more technical otherwise we can lie much to you.
  • Tester  should reach the logs
  • It depends on what tester are testing.
  • Instead of go into the detail and disappear in the details, tester should think customer and business.
  • My opinion : It depends on tester type. I believe that tester has types. Some tester has strong business cognition, some tester has sensitive vision on UX or UI, other one catches technical details.

Moving into Software Management Gave Me a Different View of Testing – Stephen Janaway

It was cheerful presentation. Stephen has started Arnold Schwarzenegger’s career path example to tell his career path :)

He talked about how should we act to improve ourselves and understand quality.

Testing is changing, be the one who adapts.

Everyone is responsible from the quality.

The Future of Tech – James Whittaker, Microsoft

C5w9L-AXMAAA_de

I think it was the most enthusiastic presentation. We got a lot of take aways about testing. James expanded our horizons at the end of the conferences.

He gave inspiration about the future. So that thinking push us to think , how is going to be testing in future.  Part of the technology eras  influenced us in terms of changing. It is look like new era is going to be IoT,  Big Data and VR eras.

If you won’t to predict , you will may be victim of the technology.


It was outstanding conference. We listened great speakers, met great people. Thanks for everyone especially UKSTAR 2017 Team.

 

5 Simple Xpath Tips

XPath selector language which like swiss army knife. It helps me when i am in tough situation. Using some little helper tips sometimes save your times.

1. Descendant-or-self (//)

You can use that syntax when you want select descendant nodes. For example:

<article>
   <div>
     <h1>Hello <b>Tester</b></h1>
   </div>
</article>

We can find ‘h1’ element a few different ways.

//article/div/h1

or

//article//b

2. Parent of Element (..)

One of useful expressions is ‘..’ (parent of element). It helps to find parent element of a node.

<table>
   <tr>
     <td id="sample">STATUS</td>
     <td>active</td>
   </tr>
   <tr>
     <td id="sample2">amount</td>
     <td>₺100</td>
</table>

For example first column of table static and second column dynamic, you should refer the first column.

You can use this expression like this:

//table/tr[1]/td[2]

But this probably will be more useful:

//td[@id='sample']/../td[2]

3. Logical Operators (not, or ,and)

Logical operators, many time make your job easy.

3.1 Not Operator

Example:

<ul>
   <li class="company">Emirates</li>
   <li class="company">Aeroflot </li>
   <li>(Promoted) Turkish Airlines</li>
   <li class="company">KLM</li>
</ul>

Xpath selector:

//ul/li[not(@class="company")]

3.2 AND Operator

Example

<ul>
   <li class="company">Emirates</li>
   <li class="company">Aeroflot </li>
   <li class="company" id="promoted">(Promoted) Turkish Airlines</li>
   <li class="company">KLM</li>
</ul>

Xpath selector:

//li[(@class='company') and (@id='promoted')]

3.3 OR Operator

Example

<ul>
   <li from="dubai" to="ankara">Emirates</li>
   <li from="moskow" to="istanbul">Aeroflot </li>
   <li from="istanbul" to="london">(Promoted) Turkish Airlines</li>
   <li from="amsterdam to="dortmund">KLM</li>
</ul>

We need to select Istanbul flights. Below XPath gets two items.

//li[(@from='istanbul') or (@to='istanbul')]

4. String Functions

Sometimes attributes, id and class names may not be found on the document.  So you would be have to get the element with XPath string functions .

4.1 contains(haystack, needle)

Xpath expression at below will return that all li elements contains ‘Airline’.

Example:

<ul>
 <li>1. Airline: Turkish Airlines</li>
 <li>2. Airline: KLM Airlines</li>
 <li>3. Airline: Lufthansa</li>
</ul>

XPath Expression:

//li[contains(text(),'Airline')]

4.2 starts-with(haystack,needle) / ends-with(haystack,needle)

It is possibly easy to predict that expressions what to do. It will return 2 result (first and second li element as we expect).

Example:

<ul>
 <li>Airline: Turkish Airlines</li>
 <li>Airline: KLM Airlines</li>
 <li>Airline: Lufthansa</li>
</ul>

XPath Expression:

//li[ends-with(text(),'Airlines')]

4.3 matches(haystack,expression)

‘matches’ function provide to us to use regex. But that function supported by Xpath 2.0. If you search a playground for Xpath 2.0, that XPath 2.0 tester is going to help to you.

Example:

<ul>
 <li>2017</li>
 <li>2016</li>
 <li>2015</li>
 <li>1800</li>
 <li>1700</li>
</ul>

Expression at below gets only between 2010..2019 years

//li[matches(text(),'201[0-9]')]

5. Extras

Probably most of times you will not use these functions but good to know. Keep them mind just in case.

5.1 Ceiling , Floor and Round

Below example will return li element that text with ‘3’.

Example:

 <ul>
    <li>1<li>
    <li>2<li>
    <li>3<li>
    <li>4<li>
    <li>5<li>
    <li>6<li>
  </ul>

You can see casting function like string() at below expression.

XPath Expression:

//li[text()=string(ceiling(2.6))]

5.2 Greather and Smaller

For example:

  <ul>
    <li>1<li>
    <li>2<li>
    <li>3<li>
    <li>4<li>
    <li>5<li>
    <li>6<li>
  </ul>

Expression

//li[number(text()) > 3.8]

5.3 Position

You can get an element by index simply with two ways.

For example:

  <ul>
    <li>1<li>
    <li>2<li>
    <li>3<li>
    <li>4<li>
    <li>5<li>
    <li>6<li>
  </ul>

XPath expression:

//li[4]
//li[position()=4]

 

Sources:

Appium 1.6.0 | Xcode 8 Migration

First off all check your Node.js  version(v6.9.1) and install lastest verison of Node.js from here.

You can check your node version with :  node -v

You should upgrade npm versiyon after upgrade. For npm upgrade execute npm upgrade command.

Appium Xcuitest  (Github Link)

 

In addition to the git submodules mentioned below (see Development), this package currently depends on libimobiledevice to do certain things. Install it with Homebrew,

brew install ideviceinstaller

There is also a dependency, made necessary by Facebook’s WebDriverAgent, for the Carthage dependency manager. If you do not have Carthage on your system, it can also be installed with Homebrew

brew install carthage

ideviceinstaller doesn’t work with iOS 10 yet. So we need to install ios-deploy

npm install -g ios-deploy

On some systems the default logger, idevicesyslog, does not work. You can install deviceconsole and specify its path with the realDeviceLogger capability (note: This path should be the path to the executable installed by the below command. It will be the directory created by the below command, followed by /deviceconsole).

npm install -g deviceconsole

For real devices we can use xcpretty to make Xcode output more reasonable. This can be installed by

gem install xcpretty

 

Manual Configuration

Enter WebDriver agent directory with:

cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent

sudo mkdir -p Resources/WebDriverAgent.bundle

sudo mkdir Modules

sudo chmod -R 777  Scripts

sudo chmod -R 777  Modules

 

Java Code Configuration

Add DesiredCapabilies to that code.

capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME,"XCUITest");

Simulator Command

appium --address 127.0.0.1 --port 4723 --session-override --isolate-sim-device

 

!!!  I tested that operations only simulator device. So if you encounter a problem please inform me  or update the document.  !!! 

Jira Test Tool Comparison : Zephyr For Jira vs X-Ray

Hi everyone,

I have been researching proper test tool for Jira for a while. After the deep observation, two tools came to my attention. I got a trial Jira Cloud account and setup these two plugin.

I am going to mention about 3 different dimensions, these are;

  • Applicability for JIRA
  • API
  • Test Cases/ Executions

 

1 . Applicabililty  for JIRA

B4A2B8D2-9BF0-4691-8469-1AF78EFC7C2F

If you want to create a test, you should select Issue Type as Test.

Zephyr test tasks works on software project. That circumstance is confusing in my opinion. For Example: If id of a feature is 4 so id of test issue will be  5.

X-Ray for Jira, inform us  more, at this point. You have a few way to apply your tests to your project. X-Ray for Jira provides us more flexibility on the domain.

Issue Type Group in Requirements Project

EDE23BFB-9176-4C68-A9C3-C465E99C2B98

As A Test Project and Requirements

B6CA9436-2928-4C39-B29D-73214F75C9CB

Separated as Requirements Project, Test project, Test Execution Project

449BD632-2C3F-42C6-A0B7-12A3835608DC

 

2. API

API can be usable for Automated tests . If you make the integration between Jira and CI, that will be suitable for your test&release process.

Zephyr has a great API and ApiDoc as i review. You can reach the Zephyr API from this link.

X Ray has a nice API so. Cucumber , import and export supports are  significant features. They present  api doc in confluence. Zephyr API looks like more understandable than X-Ray API about the ApiDoc.

 

3. Test Cases / Executions

Xray for JIRA features:

  • Create,Edit and View Test
  • Support For Automated and Manuel Test
  • Specify steps of manual tests with step detail, data, expected result and input attachments.
  • Associate preconditions with automated or manual tests.
  • Group tests into test sets.
  • View and filter all list of test runs for a specific test.
  • Clone tests and test sets.
  • Tracking metrics

Create Issue

create issue

Test Set

create test execution

Test Steps

test steps

 

Zephyr For JIRA Features:

  • Writing testcases
  • Test Scheduling
  • Test Execution and defect
  • Specify steps of manual tests with step detail, data, expected result and input attachments.
  • Tracking Metrics
  • Automated test support can be provide via API
  • wiki markup
  • test case clone

Create Test

zephyr test create 

Specify Test Steps

zephyr specify test steps

Test Cycles

zephyr test cycyles

Publish WordPress with Heroku app

1. Download WordPress

Download wordpress to local.

curl -sS https://wordpress.org/latest.zip > wordpress.zip // if cannot
unzip wordpress.zip
cd wordpress
touch Procfile
touch composer.json
touch ngnix.conf
mv wp-config-sample.php wp-config.php

2. Configuration

Add below line to Procfile contains config parameter.

web: vendor/bin/heroku-hhvm-nginx -C nginx.conf

Add to composer.json that

{
    "name": "can/heroku-wp",
    "description": "A template for installing and running WordPress on Heroku",
    "license": "MIT",
    "repositories":{
      "packagist":{
            "type":"composer",
            "url":"http://wpackagist.org"
        }
    },
    "require": {
        "hhvm": "~3.2"
    },
    "extra": {
        "heroku": {
            "php-config": [
                "post_max_size=200M"
            ],
            "nginx-includes": ["nginx.conf"]
        }
    }
}

And ngnix.conf

location / {
 index index.php index.html index.htm;
 try_files $uri $uri/ /index.php?q=$uri&$args;
}

And finally wp-config.php

// ** MySQL settings - You can get this info from your web host ** //
$url = parse_url(getenv('DATABASE_URL') ? getenv('DATABASE_URL') : getenv('CLEARDB_DATABASE_URL'));

/** The name of the database for WordPress */
define('DB_NAME', trim($url['path'], '/'));

/** MySQL database username */
define('DB_USER', $url['user']);

/** MySQL database password */
define('DB_PASSWORD', $url['pass']);

/** MySQL hostname */
define('DB_HOST', $url['host']);

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

 

define('AUTH_KEY',         getenv('AUTH_KEY'));
define('SECURE_AUTH_KEY',  getenv('SECURE_AUTH_KEY'));
define('LOGGED_IN_KEY',    getenv('LOGGED_IN_KEY'));
define('NONCE_KEY',        getenv('NONCE_KEY'));
define('AUTH_SALT',        getenv('AUTH_SALT'));
define('SECURE_AUTH_SALT', getenv('SECURE_AUTH_SALT'));
define('LOGGED_IN_SALT',   getenv('LOGGED_IN_SALT'));
define('NONCE_SALT',       getenv('NONCE_SALT'));

3. Push & Deploy

Git init & attach addon

composer update --ignore-platform-reqs #generated composer.lock file

git init
git add . 
git commit -m "initial commit"
heroku create # do not forget login with "heroku login" command
heroku addons:create cleardb
heroku addons:create sendgrid

Add env variables

heroku config:set AUTH_KEY=''
heroku config:set SECURE_AUTH_KEY=''
heroku config:set LOGGED_IN_KEY=''
heroku config:set NONCE_KEY=''
heroku config:set AUTH_SALT=''
heroku config:set SECURE_AUTH_SALT=''
heroku config:set LOGGED_IN_SALT=''
heroku config:set NONCE_SALT=''

Push & open your page

git push heroku master # it will check & deploy your code 
heroku open # it will open page on browser

?? And your wordpress is ready !!!

 

I imporved and addded some tips K.Sylvestre’s blog post and create this post.