The document describes an experimental technique for automated testing of mobile applications using simulators. It discusses setting up a BlackBerry simulator, writing reusable test cases, and creating a mobile test automation framework. The technique defines a device-agnostic application interface and implements it using a Python mobile library to write tests that are device independent and reusable across multiple mobile platforms.
The document outlines a session on mobile end-to-end testing using simulators. It discusses simulator basics for BlackBerry and Android, how to start and control simulators through commands and libraries. It then describes the Moet framework for defining a device-agnostic application interface and implementing it for different platforms using simulator libraries. Tests can then be written independently of devices and run by binding to the appropriate implementation at runtime. Logging and image comparison are available for test verification.
The document introduces the Mobello mobile web app framework. It provides an overview of Mobello, describing it as a JavaScript framework for building richly interactive mobile web apps. It outlines key Mobello concepts like scene controllers, navigators, components for UI elements, theming capabilities, and the Mobello Studio IDE. The document also compares declarative vs programmatic approaches and shows code examples for key framework aspects like scenes, navigation, animation, and component creation.
famo.us is a JavaScript framework for building user interfaces using a reactive programming model. It provides building blocks like surfaces, contexts and engines to construct animatable UI elements in a render tree. Key concepts include moveable surfaces that can be transformed, laid out and animated. Custom layouts and views can be created by extending base classes and composing surfaces together in a render tree managed by the engine.
The document discusses the evolution of the YUI JavaScript framework architecture. Some key changes include a modular design that allows discrete modules to be loaded independently, a common component foundation using attributes and events, and a Node API that provides a normalized way to interact with DOM elements.
Swing is a graphical user interface (GUI) toolkit for Java that is platform independent. It derives functionality from the Abstract Window Toolkit (AWT). The document provides an example of creating a basic Swing application using a JFrame class to contain the GUI components and handling button click events.
This document discusses how to incorporate a menu into a window program. It defines menu items and structures for a sample menu called "FirstMenu". The code shows how to load and attach the menu, handle menu item selections by checking the message parameter, and display messages based on the selected menu option. Menus present the user with a list of program services and allow interaction without reading a manual by exploring the menu options.
The document outlines a session on mobile end-to-end testing using simulators. It discusses simulator basics for BlackBerry and Android, how to start and control simulators through commands and libraries. It then describes the Moet framework for defining a device-agnostic application interface and implementing it for different platforms using simulator libraries. Tests can then be written independently of devices and run by binding to the appropriate implementation at runtime. Logging and image comparison are available for test verification.
The document introduces the Mobello mobile web app framework. It provides an overview of Mobello, describing it as a JavaScript framework for building richly interactive mobile web apps. It outlines key Mobello concepts like scene controllers, navigators, components for UI elements, theming capabilities, and the Mobello Studio IDE. The document also compares declarative vs programmatic approaches and shows code examples for key framework aspects like scenes, navigation, animation, and component creation.
famo.us is a JavaScript framework for building user interfaces using a reactive programming model. It provides building blocks like surfaces, contexts and engines to construct animatable UI elements in a render tree. Key concepts include moveable surfaces that can be transformed, laid out and animated. Custom layouts and views can be created by extending base classes and composing surfaces together in a render tree managed by the engine.
The document discusses the evolution of the YUI JavaScript framework architecture. Some key changes include a modular design that allows discrete modules to be loaded independently, a common component foundation using attributes and events, and a Node API that provides a normalized way to interact with DOM elements.
Swing is a graphical user interface (GUI) toolkit for Java that is platform independent. It derives functionality from the Abstract Window Toolkit (AWT). The document provides an example of creating a basic Swing application using a JFrame class to contain the GUI components and handling button click events.
This document discusses how to incorporate a menu into a window program. It defines menu items and structures for a sample menu called "FirstMenu". The code shows how to load and attach the menu, handle menu item selections by checking the message parameter, and display messages based on the selected menu option. Menus present the user with a list of program services and allow interaction without reading a manual by exploring the menu options.
Introduction on animations for Angular applications + heads ups for some tricky bits.
Don't forget to visit the included links:
- https://medium.com/ux-in-motion/creating-usability-with-motion-the-ux-in-motion-manifesto-a87a4584ddc
- https://medium.com/frontend-coach/angular-in-motion-4-approaches-to-animation-1aa7426aae5a
- https://medium.com/frontend-coach/angular-router-animations-what-they-dont-tell-you-3d2737a7f20b
... and follow me on twitter https://twitter.com/sulco for more on Angular, TypeScript and frontend in general.
The document discusses the history of software testing and introduces unit testing in Django. It covers loading test data through fixtures and factories to set up test data without affecting the database. It also introduces mockers to mock external dependencies like API calls during tests.
This document compares global properties, functions, classes and other elements between ActionScript 2 (AS2) and ActionScript 3 (AS3). Key differences include:
- AS2 global properties like _root and _parent are removed in AS3.
- Many AS2 global functions like call(), chr() and eval() are removed or changed in AS3.
- AS2 classes like Array and BitmapData have been updated in AS3 with new properties and methods.
- AS2 compiler directives and some operators are removed in AS3.
- AS2 statements like delete and intrinsic are removed or changed in AS3.
The document provides an overview of the qooxdoo framework and toolkit. It demonstrates how to download and explore the qooxdoo SDK which contains over 15,000 files. Code examples are provided to illustrate defining a class with properties, mixins, inheritance and interfaces. Additional features highlighted include extensive documentation, GUI components, easy key/command binding, layouts for positioning elements, and REST call capabilities.
The document discusses the Leap Motion Controller and Myo gesture control devices. It provides an overview of their technical specifications including tracking accuracy, supported languages, data models, and examples of applications. It also shares some of the author's insights on designing gesture-based applications.
The document discusses using openFrameworks (OF) to create iPhone/iPad applications with C++. It provides examples of how to load and display an image, change images on touch, and create animations using arrays of images. The key steps shown are initializing OF, loading images into OFImage variables or arrays, and drawing the images in the draw function while incrementing an index to loop through the array. Methods for touch input handling are also demonstrated.
QA Fest 2019. Алексей Альтер-Песоцкий. Snapshot testing with native mobile fr...QAFest
Я расскажу про мобильное тестирование, посредством поскриншотового сравнения, с использованием нативных фреймворков (Espresso & XCTest) и сторонних библиотек. Открою секрет, что поскриншотовое сравнение доступно как в Unit, так и в UI тестах, рассмотрю, какие элементы и в каком виде доступны для верификации и поделюсь радостями и болью жизни со снэпшотами.
The document discusses using Electron.js to build desktop applications. It covers setting up an Electron project, building the main and renderer processes, communicating between them using IPC, and implementing features like menus, tray icons, notifications and native dialogs. Later sections discuss integrating context menus, using remote modules in the renderer, and packaging the application. The document provides a tutorial on building a sample "Animal Advisor" app with Electron.js.
The Ring programming language version 1.7 book - Part 85 of 196Mahmoud Samir Fayed
The document discusses embedding Ring programs within other Ring programs using the ringvm library. It describes functions for running Ring code in isolated states to prevent conflicts, executing programs serially, passing variables between states, and running Ring programs from other programs while controlling memory management. The goal is to provide safe integration of Ring programs and applications.
This document discusses Appium troubleshooting, including:
1) Supporting versions and stability challenges with Appium and dependencies like Node.js and npm
2) Setting up the Appium server environment and launching the server manually and programmatically
3) Handling logs, enabling parallel testing on multiple devices or emulators, and tips for native and web apps
Eclipse Summit Europe '10 - Test UI Aspects of Plug-insTonny Madsen
This document contains a presentation about testing the user interface (UI) aspects of Eclipse plug-ins. It discusses using JUnit and simple tools to test UI parts of an application. It provides various strategies for testing perspectives, views, editors, and interaction using mouse/keyboard events, widget manipulation, and command execution. It also covers parameterized tests and ensuring no error messages are logged.
The Ring programming language version 1.9 book - Part 56 of 210Mahmoud Samir Fayed
The document discusses using TrueType fonts, playing sound files, scaling and rotating images, displaying transparent images, and using threads in Ring using the Allegro library. It provides code examples for loading and displaying TrueType fonts, playing wav sound files, rotating and scaling bitmap images, displaying images with transparency, and creating and running multiple threads simultaneously.
Programming Sideways: Asynchronous Techniques for AndroidEmanuele Di Saverio
Android apps need to respond fast, support highly parallel execution and multi component architecture.
Learn some tricks of the trade for these problems!
as presented at www.mobileconference.it (2013 edition)
This document provides examples of simple Java applets that demonstrate basic applet functionality. It includes applets that draw a rectangle, display a string, test all applet lifecycle methods, and change the foreground and background colors. The examples cover core applet concepts like painting, initialization methods, and accessing the graphics context. The document concludes with a summary of the key points and poses a sample quiz question.
The document provides an overview of the iOS development platform. It describes the core components of iOS including Cocoa Touch, Core OS, Core Services, and Media frameworks. It explains concepts like the Model-View-Controller pattern and the iOS application structure and life cycle. Key topics like Objective-C classes, methods, properties, dynamic binding, and common frameworks like Foundation are also summarized.
This document provides information about Java applets, including:
1. An applet is a special type of program that is embedded in a webpage to generate dynamic content and runs at the client side inside a browser.
2. Advantages of applets include running at the client side for less response time, being secured, and being able to execute on multiple platforms via browsers. A drawback is requiring a plugin at the client browser.
3. The document then discusses the applet lifecycle, including initialization, running, idle, and destroyed states, and the methods corresponding to each state. It also provides examples of creating a basic "Hello World" applet and displaying graphics within an applet.
RubyMotion allows developers to quickly build and test native iOS apps using the Ruby programming language instead of Objective-C. It uses the Ruby language, RSpec for testing, and integrates with Xcode and the iOS SDK to compile to native apps. Developers can create timers, pickers, buttons, and audio using RubyMotion and the iOS frameworks.
Promises are so passé - Tim Perry - Codemotion Milan 2016Codemotion
The document discusses asynchronous programming in JavaScript and how it has evolved over time. It covers callbacks, promises, generators, and the new async/await syntax. Callbacks were difficult to read and handle errors across steps. Promises provided a better model but still had ceremony and didn't play nicely with other constructs. Generators allowed writing async code that looked synchronous but required wrapping in a promise. Async/await builds on promises and generators by providing syntax that looks like synchronous code while still being asynchronous under the hood. It addresses issues with previous approaches but developers still need to handle errors and can overuse await. Async/await is available in modern browsers and makes asynchronous JavaScript much cleaner.
Introduction on animations for Angular applications + heads ups for some tricky bits.
Don't forget to visit the included links:
- https://medium.com/ux-in-motion/creating-usability-with-motion-the-ux-in-motion-manifesto-a87a4584ddc
- https://medium.com/frontend-coach/angular-in-motion-4-approaches-to-animation-1aa7426aae5a
- https://medium.com/frontend-coach/angular-router-animations-what-they-dont-tell-you-3d2737a7f20b
... and follow me on twitter https://twitter.com/sulco for more on Angular, TypeScript and frontend in general.
The document discusses the history of software testing and introduces unit testing in Django. It covers loading test data through fixtures and factories to set up test data without affecting the database. It also introduces mockers to mock external dependencies like API calls during tests.
This document compares global properties, functions, classes and other elements between ActionScript 2 (AS2) and ActionScript 3 (AS3). Key differences include:
- AS2 global properties like _root and _parent are removed in AS3.
- Many AS2 global functions like call(), chr() and eval() are removed or changed in AS3.
- AS2 classes like Array and BitmapData have been updated in AS3 with new properties and methods.
- AS2 compiler directives and some operators are removed in AS3.
- AS2 statements like delete and intrinsic are removed or changed in AS3.
The document provides an overview of the qooxdoo framework and toolkit. It demonstrates how to download and explore the qooxdoo SDK which contains over 15,000 files. Code examples are provided to illustrate defining a class with properties, mixins, inheritance and interfaces. Additional features highlighted include extensive documentation, GUI components, easy key/command binding, layouts for positioning elements, and REST call capabilities.
The document discusses the Leap Motion Controller and Myo gesture control devices. It provides an overview of their technical specifications including tracking accuracy, supported languages, data models, and examples of applications. It also shares some of the author's insights on designing gesture-based applications.
The document discusses using openFrameworks (OF) to create iPhone/iPad applications with C++. It provides examples of how to load and display an image, change images on touch, and create animations using arrays of images. The key steps shown are initializing OF, loading images into OFImage variables or arrays, and drawing the images in the draw function while incrementing an index to loop through the array. Methods for touch input handling are also demonstrated.
QA Fest 2019. Алексей Альтер-Песоцкий. Snapshot testing with native mobile fr...QAFest
Я расскажу про мобильное тестирование, посредством поскриншотового сравнения, с использованием нативных фреймворков (Espresso & XCTest) и сторонних библиотек. Открою секрет, что поскриншотовое сравнение доступно как в Unit, так и в UI тестах, рассмотрю, какие элементы и в каком виде доступны для верификации и поделюсь радостями и болью жизни со снэпшотами.
The document discusses using Electron.js to build desktop applications. It covers setting up an Electron project, building the main and renderer processes, communicating between them using IPC, and implementing features like menus, tray icons, notifications and native dialogs. Later sections discuss integrating context menus, using remote modules in the renderer, and packaging the application. The document provides a tutorial on building a sample "Animal Advisor" app with Electron.js.
The Ring programming language version 1.7 book - Part 85 of 196Mahmoud Samir Fayed
The document discusses embedding Ring programs within other Ring programs using the ringvm library. It describes functions for running Ring code in isolated states to prevent conflicts, executing programs serially, passing variables between states, and running Ring programs from other programs while controlling memory management. The goal is to provide safe integration of Ring programs and applications.
This document discusses Appium troubleshooting, including:
1) Supporting versions and stability challenges with Appium and dependencies like Node.js and npm
2) Setting up the Appium server environment and launching the server manually and programmatically
3) Handling logs, enabling parallel testing on multiple devices or emulators, and tips for native and web apps
Eclipse Summit Europe '10 - Test UI Aspects of Plug-insTonny Madsen
This document contains a presentation about testing the user interface (UI) aspects of Eclipse plug-ins. It discusses using JUnit and simple tools to test UI parts of an application. It provides various strategies for testing perspectives, views, editors, and interaction using mouse/keyboard events, widget manipulation, and command execution. It also covers parameterized tests and ensuring no error messages are logged.
The Ring programming language version 1.9 book - Part 56 of 210Mahmoud Samir Fayed
The document discusses using TrueType fonts, playing sound files, scaling and rotating images, displaying transparent images, and using threads in Ring using the Allegro library. It provides code examples for loading and displaying TrueType fonts, playing wav sound files, rotating and scaling bitmap images, displaying images with transparency, and creating and running multiple threads simultaneously.
Programming Sideways: Asynchronous Techniques for AndroidEmanuele Di Saverio
Android apps need to respond fast, support highly parallel execution and multi component architecture.
Learn some tricks of the trade for these problems!
as presented at www.mobileconference.it (2013 edition)
This document provides examples of simple Java applets that demonstrate basic applet functionality. It includes applets that draw a rectangle, display a string, test all applet lifecycle methods, and change the foreground and background colors. The examples cover core applet concepts like painting, initialization methods, and accessing the graphics context. The document concludes with a summary of the key points and poses a sample quiz question.
The document provides an overview of the iOS development platform. It describes the core components of iOS including Cocoa Touch, Core OS, Core Services, and Media frameworks. It explains concepts like the Model-View-Controller pattern and the iOS application structure and life cycle. Key topics like Objective-C classes, methods, properties, dynamic binding, and common frameworks like Foundation are also summarized.
This document provides information about Java applets, including:
1. An applet is a special type of program that is embedded in a webpage to generate dynamic content and runs at the client side inside a browser.
2. Advantages of applets include running at the client side for less response time, being secured, and being able to execute on multiple platforms via browsers. A drawback is requiring a plugin at the client browser.
3. The document then discusses the applet lifecycle, including initialization, running, idle, and destroyed states, and the methods corresponding to each state. It also provides examples of creating a basic "Hello World" applet and displaying graphics within an applet.
RubyMotion allows developers to quickly build and test native iOS apps using the Ruby programming language instead of Objective-C. It uses the Ruby language, RSpec for testing, and integrates with Xcode and the iOS SDK to compile to native apps. Developers can create timers, pickers, buttons, and audio using RubyMotion and the iOS frameworks.
Promises are so passé - Tim Perry - Codemotion Milan 2016Codemotion
The document discusses asynchronous programming in JavaScript and how it has evolved over time. It covers callbacks, promises, generators, and the new async/await syntax. Callbacks were difficult to read and handle errors across steps. Promises provided a better model but still had ceremony and didn't play nicely with other constructs. Generators allowed writing async code that looked synchronous but required wrapping in a promise. Async/await builds on promises and generators by providing syntax that looks like synchronous code while still being asynchronous under the hood. It addresses issues with previous approaches but developers still need to handle errors and can overuse await. Async/await is available in modern browsers and makes asynchronous JavaScript much cleaner.
This document discusses timers, effects, and animations in JavaScript and jQuery. It covers the setTimeout(), setInterval(), and clearTimeout()/clearInterval() methods for running code based on time elements. It also covers various jQuery effects methods like show(), hide(), fadeIn(), fadeOut() etc. and how to chain and queue animations. It provides examples of using timers, effects, and custom animations using the animate() method.
303 TANSTAAFL: Using Open Source iPhone UI Codejonmarimba
This document discusses modifications made to improve the animation and behavior of an open source cover flow library called OpenFlow. The author hacked the code to have a scroll view handle animation instead of core animation for better control. Touch handling was also hijacked to directly control selection instead of relying on scroll view callbacks. Friction was reduced and reflection rendering was adjusted to better match Apple's implementation.
This document discusses teaching game development using mini-games to teach programming and design concepts. It provides an overview of setting up the development environment and tools, basic game programming concepts like cameras and matrices, and approaches for simple games like Pong to teach core mechanics.
This document discusses mobile app development using JavaScript and compares different approaches such as web apps, hybrid apps, interpreted apps, and cross-platform game engines. It provides examples of frameworks like PhoneGap, Titanium, and ImpactJS and compares them in terms of learning curve, tools, monetization options, supported platforms and scenarios.
README.MD for building the first purely digital mobile bank in Indonesia Richard Radics
2017 - HWSW meetup @ Budapest
We’ll walk you through the challenges of creating Indonesia’s first purely digital mobile bank from scratch. This speech will detail a couple of real life problems which we have faced in 7 months of development around the architecture, rxjava, CI, unit/ui testing and chatbots.. Learn from our successes and failures of developing a mobile-only bank for Millennials to help your product get ahead.
README.MD for building the first purely digital mobile bank in Indonesia
2010 bb dev con
1. Automated
Tes,ng
for
Mobile
Applica,ons
An
experimental
technique
Eing
Ong,
Intuit
Inc.
Louis
daRosa,
Intuit
Inc.
2. Session
outline
•
Introduc,on
•
Simulator
basics
•
Simulator
library
•
Building
your
mobile
app
library
•
Wri,ng
reusable
test
cases
•
Mobile
test
automa,on
framework
•
Advantages
and
limita,ons
•
Q
&
A
2
3. Introduc,on
What
are
we
solving
for
?
•
Various
BB
OS
and
devices
•
End-‐to-‐end
mobile
tests
•
Low
cost
solu,on
•
Mul,ple
mobile
plaLorms
3
4. Simulator
Basics
BlackBerry®
JDE
tool
kit
• Mobile
data
service
(MDS)
• Simulators
suite
• App
installa,on
• Image
capture
4
13. Case
study
–
Address
Book
Demo
• Devices
– Pearl
– Storm
• Simulator
library
• Address
book
– Add
contact
– Find
contact
– Delete
contact
• Automated
tests
13
14. Test
Automa,on
Overview
1. Define
applica<on
interface
This
interface
is
device-‐agnos,c.
2. Implement
the
interface
Implement
interface
in
BlackBerry®
U,lize
Python™
mobile
libraries
e.g.
bblib.py.
3. Write
your
tests
Tests
are
device
independent
and
reusable.
4. Run
14
16. Test
Automa,on
Overview
1. Define
applica<on
interface
This
interface
is
device-‐agnos,c.
2. Implement
the
interface
Implement
interface
in
BlackBerry®
U,lize
Python™
mobile
libraries
e.g.
bblib.py.
3. Write
your
tests
Tests
are
device
independent
and
reusable.
4. Run
16
24. Test
Automa,on
Overview
1. Define
applica<on
interface
This
interface
is
device-‐agnos,c.
2. Implement
the
interface
Implement
interface
in
BlackBerry®
U,lize
Python™
mobile
libraries
e.g.
bblib.py.
3. Write
your
tests
Tests
are
device
independent
and
reusable.
4. Run
24
26. Step
3
:
Run,me
device
binding
def getDeviceClass(self):
""" Returns the device to test """
mobileDevice = self.getMobileDevice()
if mobileDevice == 'pearl':
import pearl
deviceClass = pearl.PearlImpl()
elif mobileDevice == 'storm':
import storm
deviceClass = storm.StormImpl()
else:
import bb
deviceClass = bb.BlackBerry()
return deviceClass
26
27. More
device-‐independent
tests
Addi<onal
tests
are
easy
to
write
def
addContactWithEmailTest(self):
def
addContactWithAddressesTest(self):
def
addContactWithAllDetailsTest(self):
def
addContactWithLongDetailsTest(self):
def
addContactAddressWithStateZip(self):
def
addContactAddressWithCityStateZip(self):
def
addContactAddressWithNoDataNega,veTest(self):
27
28. Step
4
:
Run
• Basic
run
command
– python
<test.py>
• Python™
test
frameworks
– uniqest
– PyUnit
– python-‐nose
28
29. Test
Verifica,on
• Server
hosted
apps
– API
asser,ons
– Database
asser,ons
• Image
asser,ons
self.assertTrue(imagelib.compare(self.device,
testname,
'100%x90%‘))
imagelib.py
:
def
compare(device,
imageName,
crop=None,
tolerance=500)
29
30. Logging
• Ini,aliza,on
self.log
=
self.device.initLogger(self._testMethodName,
self.__class__.__name__)
• Usage
self.log.info('Star,ng
test:
'
+
self._testMethodName)
self.log.debug(self.contact)
self.log.error(‘Missing
image
to
compare’)
• Logs
AddressTest.log
:
2010-‐06-‐10
15:19:46,773
-‐
testCreateAddressMethod
-‐
INFO
-‐
[Address1]
200
Villa
St
Mountain
View
CA
94040
BUSINESS
ADDRESS
30
31. Login
example
on
BlackBerry®
Pearl
Interface
def
login(username,
passwd)
Test (logintest.py)
login(‘user100’,’helloworld’)
enter(username)
def
enter(str)
scroll(‘down’)
def
scroll(ac<on)
enter(password)
def
enter()
enter()
pearlapp.py bblib.py
31
32. Login
example
on
BlackBerry®
Storm
Interface
def
login(username,
passwd)
Test (logintest.py)
login(‘user100’,’helloworld’)
touch(100,100)
enter(username)
def
enter()
touch(100,200)
def
touch(x,y)
enter(password)
touch(150,
300)
stormapp.py bblib.py
32
33. Mobile
Tes,ng
Framework
Mobile
Applica<on
Interface
Python™ Test Framework
Device
Independent
Tests
Runtime device binding
Simulator libraries
BB
app
library
Mobile
app
library
BB
device
library
Device
library
33
34. Advantages
• Zero
cost
to
use
• No
device
sharing/scheduling
• Bigger
device
pool
• Reduce
manual
tes,ng
,me
• Run
on
developers
machines
• Debugging
capabili,es
34
35. Limita,ons
• Requires
ethernet
or
internet
connec,vity
• Does
not
simulate
network
performance
• Does
not
support
hardware
controls
tes,ng
• Dependent
on
simulator
reliability
• Limited
peer-‐to-‐peer
applica,ons
tes,ng
35
37. Acknowledgments
• Desiree
Gosby,
Mobile
Architect
• Paul
Hau,
QA
Manager
• Jaron
Jones,
QA
Manager
• Jason
Pugh,
Architect
(definitely
not
least)
37