SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Modell alapú tesztgenerálás
iOS platformra
Szabó Csaba - B.Sc. szakdolgozat
Informatikai technológiák szakirány
Rendszermodellezés ágazat
Konzulensek:
Dr. Ráth István (BME MIT)
Ujhelyi Zoltán (BME MIT)
Motiváció
• Komplex mobil alkalmazások
• Igény a tesztelésre
• Sok multiplatform keretrendszer
• Kevés modell alapú
• Tesztek hiánya
Szcenárió alapú teszt
• Szcenárió teszt ≠ egység teszt (unit test)
• Automatizálható, használati eset alapú
• Nagyrészt felhasználói felület teszt
• Eszközök:
• iOS platform
• KIF (Keep it functional) keretrendszer
• Habits példa alkalmazás
KIF (Keep It Functional)
működése
• Objective-C tesztek
• Xcode fejlesztőkörnyezetbe integrálató
• A felhasználói felületet az elemek
AccessibilityLabel-ein keretszül éri el
• Elvárt eredmény ellenőrzés
KIF problémák
• Nincs AccessibilityLabel validálás
• Egy teszt metódus = csak egy futtatható teszt
• Egy szcenáriót könnyebb leírni grafikusan
Megoldás
• Grafikus szerkesztő
• Kódgenerálás
• Modell validáció
• Egy modell - több teszt
Xcode&alkalmazás&projekt&
KIF&tesztek&
Eclipse&plug9in&
EMF&
modell&
BPMN2&
modell&
KiegészíteB&
BPMN2&
modell&
Grafikus&
szerkesztő&
KiegészíteB&
grafikus&
szerkesztő&
Xtend&
kódgenerátor&
KIF&keretrendszer&
ocunit/xcunit&teszt&
keretrendszer&&
Xcode&teszt&keretrendszer&
Eclipse plug-in
• Kiegészíthető
• Modellezés - EMF
• Grafikus szerkesztő - BPMN2
• Kódgenerátor - Xtend
• Eclipse ITG projekt

(ITG = iOS Test Generator)
BPMN2 alapú teszt
szerkesztő
• SOA modellezésre tervezték
• Új elemek hozzáadása
• EMF modell kiegészítése
• EMF modell feldolgozás
• Elágazás
• Több teszt generálása
Kódgenerálás
• Xtend sablon alapú kódgenerálás
• Modell mentés után automatikusan
• Elágazások számával megegyező teszt
generálódik le
• Modell validálási hiba esetés jelzem a
felhasználónak a hibát
Kódgenerálás
• Xtend sablon alapú kódgenerálás
• Modell mentés után automatikusan
• Elágazások számával megegyező teszt
generálódik le
• Modell validálási hiba esetés jelzem a
felhasználónak a hibát
teszt lépés
elvárt eredmény
ellenőrzés
Validaciós módszerek
• A keretrendszer több validációt is tartalmaz:
• BPMN2 grafikus modell validálása
• KIF lépés validálás
• AccessibilityLabel validálás
Teszt validálás
Folyamat
Teszt&
elkészítése&
Mentés&
Modell&
feldolgozás&
Tesztek&
generálása&
Kódgenerálás&
Teszt&fájlok&
másolása&
BPMN2
EMF
XtendEclipse-ből az
Xcode projektbe
Továbbfejlesztési
lehetőségek
• Önálló alkalmazás
• AccessibilityLabel-ek automatikus beolvasása
az Xcode projektből
• Grafikus szerkesztő továbbfejlesztése
• Xcode projekthez való egyszerű csatlakozás
Összefoglalás
• Módosított grafikus szerkesztő
• Több teszt generálása
• Kódgenerátor Objective-C nyelvre
• Modell validáció
• Ezeket integráló Eclipse fejlesztőkörnyezet
• Példaalkalmazás
Bírálói kérdések
• Mennyire volt jó választás a BPMN2 nyelv a teszt
történetek leírására? Milyen alternatívákat
vizsgálna meg még?
• EMF modell alapok, kiegészíthetőség és bő
kezdeti eszközkészlete miatt jó választásnak
bizonyolt.

Kipróbálnám még a JPA diagram szerkesztőt is,
illetve saját grafikus szerkesztő készítése is
hasznos lehetne GEF (Graphical Editing
Framework) vagy Graphiti használatával.
Bírálói kérdések
• A grafikus diagramok szerkesztésénél nagy problémát jelent,
ha sok repetitív feladatot kell elvégezni, amelyeket a kódban
makrókkal vagy find-replace művelekkel lényegesen kevesebb
lépésből meg lehetne tenni. Mennyire lenne vajon bonyolult a
generált kód változásait visszavetíteni a BPMN diagramokra?
• Az általam generált kódsorok módosítása egyszerű, új
tesztlépések hozzáadása az egy modell-több teszt miatt
bonyolultabb, viszont ha ezen kívül bármilyen más kódot
kellene feldolgozni, akkor az még nehezebb, hiszen a
következő generáláskor azt elveszítenénk, vagy ha
bennehagyjuk a kódban, akkor lehet hogy szintaktikai hibát fog
okozni.
Bírálói kérdések
• Véleménye szerint a KIF rendszer szélesebb körű
használata a fogyatékkal élők telefonhasználati
lehetőségeit mennyiben befolyásolná?
• Mivel az felhasználói felület elemeket az
AccessibilityLabel értéken keresztül éri el, ami a
látáskárosultak számára felhasznált, felolvasható
tartalmat jelenti, így szélsesebb körű eljerjedése
azt jelentené, hogy sokkal több alkalmazás lenne
használható látáskárosultak számra is.

Mais conteúdo relacionado

Mais procurados

Amazon DynamoDB 기반 글로벌 서비스 개발 방법 및 사례::김준형::AWS Summit Seoul 2018
Amazon DynamoDB 기반 글로벌 서비스 개발 방법 및 사례::김준형::AWS Summit Seoul 2018Amazon DynamoDB 기반 글로벌 서비스 개발 방법 및 사례::김준형::AWS Summit Seoul 2018
Amazon DynamoDB 기반 글로벌 서비스 개발 방법 및 사례::김준형::AWS Summit Seoul 2018
Amazon Web Services Korea
 
Disaster Recovery with the AWS Cloud
Disaster Recovery with the AWS CloudDisaster Recovery with the AWS Cloud
Disaster Recovery with the AWS Cloud
Amazon Web Services
 
AWS S3 | Tutorial For Beginners | AWS S3 Bucket Tutorial | AWS Tutorial For B...
AWS S3 | Tutorial For Beginners | AWS S3 Bucket Tutorial | AWS Tutorial For B...AWS S3 | Tutorial For Beginners | AWS S3 Bucket Tutorial | AWS Tutorial For B...
AWS S3 | Tutorial For Beginners | AWS S3 Bucket Tutorial | AWS Tutorial For B...
Simplilearn
 

Mais procurados (20)

ECS & ECR Deep Dive - 김기완 솔루션즈 아키텍트 :: AWS Container Day
ECS & ECR Deep Dive - 김기완 솔루션즈 아키텍트 :: AWS Container DayECS & ECR Deep Dive - 김기완 솔루션즈 아키텍트 :: AWS Container Day
ECS & ECR Deep Dive - 김기완 솔루션즈 아키텍트 :: AWS Container Day
 
Chaos Engineering with Kubernetes
Chaos Engineering with KubernetesChaos Engineering with Kubernetes
Chaos Engineering with Kubernetes
 
Serverless computing - Build and run applications without thinking about servers
Serverless computing - Build and run applications without thinking about serversServerless computing - Build and run applications without thinking about servers
Serverless computing - Build and run applications without thinking about servers
 
Amazon DynamoDB 기반 글로벌 서비스 개발 방법 및 사례::김준형::AWS Summit Seoul 2018
Amazon DynamoDB 기반 글로벌 서비스 개발 방법 및 사례::김준형::AWS Summit Seoul 2018Amazon DynamoDB 기반 글로벌 서비스 개발 방법 및 사례::김준형::AWS Summit Seoul 2018
Amazon DynamoDB 기반 글로벌 서비스 개발 방법 및 사례::김준형::AWS Summit Seoul 2018
 
Azure Backup Simplifies
Azure Backup SimplifiesAzure Backup Simplifies
Azure Backup Simplifies
 
Google Cloud Vision API
Google Cloud Vision APIGoogle Cloud Vision API
Google Cloud Vision API
 
Deep dive ECS & Fargate Deep Dive
Deep dive ECS & Fargate Deep DiveDeep dive ECS & Fargate Deep Dive
Deep dive ECS & Fargate Deep Dive
 
Getting Started with Amazon Inspector
Getting Started with Amazon InspectorGetting Started with Amazon Inspector
Getting Started with Amazon Inspector
 
Data Migration Using AWS Snowball, Snowball Edge & Snowmobile
Data Migration Using AWS Snowball, Snowball Edge & SnowmobileData Migration Using AWS Snowball, Snowball Edge & Snowmobile
Data Migration Using AWS Snowball, Snowball Edge & Snowmobile
 
Cloud Computing with AWS & Other Cloud Platforms
Cloud Computing with AWS & Other Cloud PlatformsCloud Computing with AWS & Other Cloud Platforms
Cloud Computing with AWS & Other Cloud Platforms
 
Chaos engineering
Chaos engineering Chaos engineering
Chaos engineering
 
AWS Security Best Practices
AWS Security Best PracticesAWS Security Best Practices
AWS Security Best Practices
 
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
 
Disaster Recovery with the AWS Cloud
Disaster Recovery with the AWS CloudDisaster Recovery with the AWS Cloud
Disaster Recovery with the AWS Cloud
 
Building a well-engaged and secure AWS account access management - FND207-R ...
 Building a well-engaged and secure AWS account access management - FND207-R ... Building a well-engaged and secure AWS account access management - FND207-R ...
Building a well-engaged and secure AWS account access management - FND207-R ...
 
Security on AWS
Security on AWSSecurity on AWS
Security on AWS
 
Introduction to Block and File storage on AWS
Introduction to Block and File storage on AWSIntroduction to Block and File storage on AWS
Introduction to Block and File storage on AWS
 
AWS Webinar 201: Designing scalable, available & resilient cloud applications
AWS Webinar 201: Designing scalable, available & resilient cloud applicationsAWS Webinar 201: Designing scalable, available & resilient cloud applications
AWS Webinar 201: Designing scalable, available & resilient cloud applications
 
An Overview of Machine Learning on AWS
An Overview of Machine Learning on AWSAn Overview of Machine Learning on AWS
An Overview of Machine Learning on AWS
 
AWS S3 | Tutorial For Beginners | AWS S3 Bucket Tutorial | AWS Tutorial For B...
AWS S3 | Tutorial For Beginners | AWS S3 Bucket Tutorial | AWS Tutorial For B...AWS S3 | Tutorial For Beginners | AWS S3 Bucket Tutorial | AWS Tutorial For B...
AWS S3 | Tutorial For Beginners | AWS S3 Bucket Tutorial | AWS Tutorial For B...
 

Destaque (6)

Szalmabála házak - szakdolgozat védés, BME
Szalmabála házak - szakdolgozat védés, BMESzalmabála házak - szakdolgozat védés, BME
Szalmabála házak - szakdolgozat védés, BME
 
Arculati kézikönyves szakdolgozat
Arculati kézikönyves szakdolgozatArculati kézikönyves szakdolgozat
Arculati kézikönyves szakdolgozat
 
Bor Erika: Tanulmányút Finnországba_ppt
Bor Erika: Tanulmányút Finnországba_pptBor Erika: Tanulmányút Finnországba_ppt
Bor Erika: Tanulmányút Finnországba_ppt
 
Szakdolgozat védés
Szakdolgozat védésSzakdolgozat védés
Szakdolgozat védés
 
3 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 20173 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 2017
 
Prezentációk technikai háttere - Szakdolgozat védés (BGF, 2012)
Prezentációk technikai háttere - Szakdolgozat védés (BGF, 2012)Prezentációk technikai háttere - Szakdolgozat védés (BGF, 2012)
Prezentációk technikai háttere - Szakdolgozat védés (BGF, 2012)
 

Semelhante a BME - Szakdolgozat (2014)

BlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésBlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztés
Open Academy
 
Egy .NET fejlesztő élete a Node.js világában
Egy .NET fejlesztő élete a Node.js világábanEgy .NET fejlesztő élete a Node.js világában
Egy .NET fejlesztő élete a Node.js világában
György Balássy
 
XXI. századi szoftverfejlesztés
XXI. századi szoftverfejlesztésXXI. századi szoftverfejlesztés
XXI. századi szoftverfejlesztés
György Balássy
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (
Attila Balogh-Biró
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (
Attila Balogh-Biró
 

Semelhante a BME - Szakdolgozat (2014) (20)

Szoftver tesztelés
Szoftver tesztelésSzoftver tesztelés
Szoftver tesztelés
 
Alumni Release Process
Alumni Release ProcessAlumni Release Process
Alumni Release Process
 
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenSzerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
 
Transzformációk integrált alkalmazása a modellvezérelt szoftverfejlesztésben
Transzformációk integrált alkalmazása a modellvezérelt szoftverfejlesztésbenTranszformációk integrált alkalmazása a modellvezérelt szoftverfejlesztésben
Transzformációk integrált alkalmazása a modellvezérelt szoftverfejlesztésben
 
Dr. Ekler Péter: A mobilszoftver két értéke – legjobb gyakorlatok és újdonság...
Dr. Ekler Péter: A mobilszoftver két értéke – legjobb gyakorlatok és újdonság...Dr. Ekler Péter: A mobilszoftver két értéke – legjobb gyakorlatok és újdonság...
Dr. Ekler Péter: A mobilszoftver két értéke – legjobb gyakorlatok és újdonság...
 
Ci
CiCi
Ci
 
Swift -Helyzetjelentés az iOS programozás új nyelvéről
Swift -Helyzetjelentés az iOS programozás új nyelvérőlSwift -Helyzetjelentés az iOS programozás új nyelvéről
Swift -Helyzetjelentés az iOS programozás új nyelvéről
 
BlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésBlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztés
 
A termékfejlesztés rögös útja (avagy barangolás a módszertanok és eszközök er...
A termékfejlesztés rögös útja (avagy barangolás a módszertanok és eszközök er...A termékfejlesztés rögös útja (avagy barangolás a módszertanok és eszközök er...
A termékfejlesztés rögös útja (avagy barangolás a módszertanok és eszközök er...
 
Fejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorbanFejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorban
 
A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...
A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...
A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...
 
Egy .NET fejlesztő élete a Node.js világában
Egy .NET fejlesztő élete a Node.js világábanEgy .NET fejlesztő élete a Node.js világában
Egy .NET fejlesztő élete a Node.js világában
 
Webkonf 2013
Webkonf 2013Webkonf 2013
Webkonf 2013
 
Mobile weekend 2015
Mobile weekend 2015Mobile weekend 2015
Mobile weekend 2015
 
XXI. századi szoftverfejlesztés
XXI. századi szoftverfejlesztésXXI. századi szoftverfejlesztés
XXI. századi szoftverfejlesztés
 
Fejlesztés (BUILD) modul
Fejlesztés (BUILD) modulFejlesztés (BUILD) modul
Fejlesztés (BUILD) modul
 
Life and Death of Apache Maven (HU)
Life and Death of Apache Maven (HU)Life and Death of Apache Maven (HU)
Life and Death of Apache Maven (HU)
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (
 
Android fejlesztés
Android fejlesztésAndroid fejlesztés
Android fejlesztés
 

BME - Szakdolgozat (2014)