Skip to main content

Tarayıcı Uyumluluk Testi ve Bir Uygulaması


1. Uyumluluk Testi Nedir?

ISQTB’ye göre uyumluluk (compatibility); birbirleri ile bağlantısı olmayan bilgisayar sistemlerinin aynı ortamda (aynı donanımda) birbirlerinin davranışlarını etkilemeden (kaynakları çakışmadan), beklenildiği gibi çalışmasına denmektedir. Test açısından bakıldığında uyuyumluk testi, test ortamında yapılan güncellemeler sonrasında uygulamanın halen sorunsuz çalıştığının ve tüm fonksiyonlarını yerine getirdiğinin kanıtır. Bu boyuttan bakıldığında uyumluk testi hedef kullanıcı kitlesinin kendi ortamlarını göz önüne alarak kullanıcının yaşayabileceği görsel, fonksiyonel ve performans açısından oluşabilecek sıkıntıların keşfi olarak nitelendirilebilir.

Uyumluluk testinin amaçlarını şöyle özetleyebiliriz:
  • Test ortamıyla aynı ortamlarda uygulamanın herhangi bir fonksiyonunda çıkabilecek olası istenmeyen durumların tespit edilmesi
  • İşletim sistemi yaması ve/veya güncellenmesi neticesinde ortaya çıkan uygulamaların üzerine etkilerinin tespit edilmesi

Normal durumlarda uyumluluk testi sistem kabul testi ve kullanıcı kabul testinin başarılı bir şekilde tamamlanmasından sonra gerçeleştirilir.

2. Örnek E-Ticaret Sitesi Kullanıcı Ortamlarının Belirlenmesi


Test açısından risk oluşturan durumları test edebilmek ve müşteriye daha kaliteli hizmet verebilmek adına mevcut müşterilerin ortamlarını şu iki boyutta bakabiliriz; işletim sistemleri ve kullanılan tarayıcılarGoogle Analytic’ten elde edilen bilgiler kullanıcıların tarayıcı ve işletim sistemleri hakında gerekli bilgileri sunmaktadır. Buradan elde edilecek bilgiler belirli bir zaman aralığında alınacağınacaktır. Bu yüzden bu bilgiler ile kullanıcı eğilimleri elde edilerek kurulacak uyumluluk test ortamı değişen eğilimlere göre güncellenebilir. 

Bu çalışmadaki istatistiki bilgiler örnek bir siteye ait google analytic verileri manupule edilerek kullanılmıştır. Bu bilgiler gerçek veriler olmayıp, sadece teoriyi pratiğe dökmek adına yararlanılmıştır. Örnek sitenin müşterileri tarafından kullanılan işletim sistemi ve tarayıcı tiplerine bakıldıgında; 23 farklı işletim sistemi ve 40’dan fazla işletim sistemi sürümü, 51 çeşit tarayıcı ve 120’den fazla tarayıcı sürümü kullanmaktadır. Bu tabloda tüm ortamları gerçekleştirmek istenildiğinde yüzbinlerce test ortamı çıkabilir (23 x 51 x 120 = 140760). Bu durumda dahi tüm olasılıkları teste dahil etmemiş oluruz. ISQTB’ye göre ise %100 test imkansızdır! Risk analizi yapılarak bu durumu çözülebiliriz. Söz gelimi müşterilerin %95’nin kullanıcı ortamlarında uyuyumluluk testi yaparak %5’lik risk almak kullanılabilir ve yönetilebilir test hedefleri demektir.

İşletim sistemi ve tarayıcı bilgilerini bir kısmını aşağıda bulabilirsiniz.

Müşteri İşletim Sistem Oranı
 İşletim sistemi tablosuna bakıldığında sadece Windows işletim sisteminin tüm sürümlerini test etmek yeterli gibi görünmektedir (%95 güvenlik alanı düşünüldüğünde) fakat az da olsa Mac ve iPad makinelerinde ve Linux işletim sistemininde uyumluluğu test etmek firma imajı için önemlidir. Ayrıca büyüyen Android işletim sistemli mobil cihazların da gözden kaçmaması gerekli.

Müşteri Tarayıcı Kullanım Oranı
 Yine tarayıcı tablosuna bakıldığından listedeki ilk üç tarayıcı toplamda mevcut kullanıcı tarayıcılarınını yaklaşık %98’lik kısmını kapsamaktadır. Fakat burada ise Safari özellikle Macintosh işletim sisteminde tercih edildiğinden dolayı uyumluk testine tabi tutmak mantıklı olabilir. Geride kalan 50’den fazla tarayıcının büyük bir bölümü mobil cihazların kendi tarayıcılarıdır. Buralarda problemlerle karşılaşıldığında sorunlarının çözülmesi ve raporlanması gerekmektedir. Mobil kullanıcıların Opera Mini gibi mobil cihazların desteklediği tarayıcıların kullanılmasına yönlendirmek tarayıcı problemini çözebilir.

Tarayıcı/İşletim Sistemi Oranı
Tarayıcı ve işletim sistemini ortak gösteren tabloda ise Windows işletim sisteminde İnternet Explorer, Chrome ve Firefox kullanıcıların toplamı tüm kullanıcıların yaklaşık olarak %97’sini oluşturmaktadır. Fakat üstteki nedenlerden dolayı Linux, iPhone, Mac’de de uyuyumluluk testlerinin yapılması yarar saylacakyacaktır.

Bu bilgiler ışığında uyumluluk testinin gerçekleşmemiz gereken ortamlar bir matris üzerinde aşağıdaki gibi gösterebiliriz.

Test Ortamları


3. Uyumluluk Testi Ortamlarının Belirlenmesi

Uyumluluk testleri ancak olgunlaşmış test senaryoları üzerinde yapılabilir. Bu yüzden öncelikle test senaryolarını çıkarılmalı ve risk derecelendirmesi yapılmalıdır. Regresyon test caseler hazırlanıp koşturulmalıdır. Yukarıdaki tablodan da görülüceği üzere yaklaşık olarak 15 adet farklı test ortamının (Oracle Virtual Box veya Virtual Machine üzerinden 15 ayrı sanal makine oluşturularak yapılabilir) kurulması gerekmekte. Herbir test ortamında uyumluluk testlerinin yapılması gerekmektedir. Bu işin yapılması ciddi anlamda zaman ve emek isteyen bir süreç olup zaman zaman da güncellenmesi gerekmektedir. İş yükünün azaltılması  amacıyla bu testler otomatik olarak bazı test araçları üzerinden gerçekleştirilebilir.  Bu durumda aşağıdaki gereksinimler ortaya çıkmaktadır.
  1. Güçlü bir bilgisayar:  test makinesi - ubuntu 64 bit kurulu
  2. Kurmak istediğimiz ortamlar için işletim sistemi imajları
  3. Test otomasyon araçları
  4. Android simulatörü veya mobil android cihaz
  5. iPhone, iPad, Mac bilgisayar 

4. Uyumluk Test Seviyeleri

Projenin daha önceden hazırlanmış master test senaryolarını ve müşterinin kullanım ortamlarınını göz önüne aldığımızda üç farklı test seviyesinde: Partial Coverage, Full Coverage ve Sanity Test adı altında uyumluluk testlerini yapmak  gerekir. Genel olarak bu testler, kapsadığı ortamların miktarı (%) ve kapsadığı test caselerin öncelik seviyesiyle (Priority: Critical, High, Medium, Low) değerlendirilmelidir. Bu test seviyeleri aşağıdaki gibi yapılmalıdır. 

4.1. Partial Coverage 

Test ortamların %95’inde en az ana test caselerin koşturulması. (Regresyon test caselerin içerisinde önem sıra en üstte olanları, Priority = Critical)

Partial Coverage Test Ortamları

4.2. Full Coverage
  
Test ortamların %90’nında tüm master test senaryolarının koşturulması yani alttaki listeye Partial Coverage’da koşturulan Priority=Critical olanlarda dahildir.

Full Coverage Test Ortamları

4.3. Sanity Test
 
Sanity test uygulama üzerinde temel fonksiyonlara bakılarak hızla yapılan ve sonucu göre test durdurmaya ya da devam ettirmeye karar verilecek test seviyesidir. Ana test caseleri bir ortamda test etmek yeterlidir.

4.4. Unsupported Region (Destek Verilmeyen)
  
Full coverage testininde kapsamadığı ortamlardaki test caseleri test edilemeyeceği için bu bölgeye destek verilememektedir. Bu bölge risk analizine göre belirlediğimiz ve risk almakta çok fazla problem görmediğimiz kombinasyonları kapsamaktadır.


Popular posts for software testing and automation

Selenium Error "Element is not currently interactable and may not be manipulated"

Selenium webdriver can drive different browsers like as Firefox, Chrome or Internet Explorer. These browsers actually cover the majority of internet users, so testing these browsers possibly covers the 90% of the internet users. However, there is no guaranty that the same automation scripts can work without a failure on these three browsers. For this reason, automation code should be error-prone for the browsers you want to cover. The following error is caught when the test script run for Chrome and Internet Explorer, but surprisingly there is no error for the Firefox. Selenium gives an error like below: Traceback (most recent call last):   File "D:\workspace\sample_project\sample_run.py", line 10, in <module>     m.login()   File "D:\workspace\ sample_project \test_case_imps.py", line 335, in login     driver.find_element_by_id("id_username").clear()   File "C:\Python27\lib\site-packages\selenium-2.35.0-py2.7.egg\selenium\webdriver\r

Change Default Timeout and Wait Time of Capybara

One of the biggest challenge for automation is handling timeout problem. Most of the time, timeout is 60 seconds but it may sometimes not enough if you have badly designed asynchronous calls or the third party ajax calls. This makes handling timeout more complex. set large enough to tolerate network related problems. For Selenium based automation frameworks, like Capybara, default Webdriver timeout is set to Net::ReadTimeout (Net::ReadTimeout) Changing ReadTimeout If you have timeout problem for Capybara, it gives an error like above. This means that the page is not fully loaded in given timeout period. Even you can see that page is loaded correctly but webdriver wait until the Ajax calls finish. class BufferedIO #:nodoc: internal use only def initialize (io) @io = io @read_timeout = 60 @continue_timeout = nil @debug_output = nil @rbuf = '' end . . . . . def rbuf_fill beg

Create an Alias for Interactive Console Work: Selenium and Capybara

If you are working on shell most of the time Aliases are very helpfull and time saving. For testing purposes you can use Alias for getting ready your test suites. In this post, I want to explain both running Selenium and Capybara on console and creating aliases for each.  This post is for Windows machines, if you are using Unix-like see   this post . Creating Scripts for Selenium and Capybara First of all, it is assumed that you have installed Selenium and Capybara correctly and they work on your machines. If you haven't installed, you can see my previous posts. I am using the Selenium with Python and the Capybara with Ruby. You can use several different language for Selenium but Capybara works only with Ruby.  Create scripts in a directory called scripts (in your home folder, like as  ~/scripts ) for your automation tool as following, save them as capybara.rb, sel.py :  Creating Aliases Depends on your favourite shell, you need to add the alias to .bashrc bash

Page-Object Pattern for Selenium Test Automation with Python

Page-object model is a pattern that you can apply it to develop efficient automation framework. With the page-model, it is possible to minimize maintenance cost. Basically page-object means that your every page is inherited from a base class which includes basic functionalities for every page. If you have some new functionalities that every page should have, you can simple add it to the base class. Base class is like the following: In this part we are creating pages which are inherited from base page. Every page has its own functionalities written as python functions. Some functions return to a new page, it means that these functions leave the current page and produce a new page. You should write as much as functions you need in the assertion part because this is the only part you can use the webdriver functions to interact with web pages . This part can be evaluate as providing data to assertion part.   The last part is related to asserting your test cases against to the

Performance Testing on CI: Locust is running on Jenkins

For a successful Continuous Integration pipeline, there should be jobs for testing the performance of the application. It is necessary if the application is still performing well. Generally performance testing is thought as kinds of activities performed one step before going to live. In general approach it is true but don't forget to test your application's performance as soon as there is an testable software, such as an api end point, functions, and etc. For CI it is a good approach to testing performance after functional testing and just before the deployment of next stage. In this post, I want to share some info about Jenkins and Locust. In my previous post you can find some information about Locust and Jenkins. Jenkins operates the CI environment and Locust is a tool for performance testing. To run the Locust on Jenkins you need command line arguments which control the number of clients ,   hatch rate,  running locust without web interface and there should be so