desenvolvimento de lições sobre apps de telefonia e ubuntu ... · outros desafios relacionados...
TRANSCRIPT
![Page 1: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/1.jpg)
Ubuntu Phone: 10 Lições Sobre Desenvolvimento de Apps de Telefonia e Mensagens com Qt/QMLTiago Salem – [email protected]
![Page 2: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/2.jpg)
Olá!
Tiago SalemEx-Mandriva, ex-Canonical, atualmente SUSE. @tiagosh / tiagosalem.com.br
![Page 3: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/3.jpg)
![Page 4: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/4.jpg)
Ubuntu Phone - Desafios
● Um único sistema rodar em diferentes form factors
● SDK para apps em desenvolvimento
● Ciclo de vida dos aplicativos é diferente em cada dispositivo.
● Novo formato de pacotes (click)
● Confinamento de apps exigia comunicação via dbus
![Page 5: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/5.jpg)
Ubuntu Phone - Desafios
● Deep sleep dos telefones
● Interação com um dispositivo touch é diferente de um dispositivo com mouse e teclado.
![Page 6: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/6.jpg)
1.Life Cycle e Event Loop
![Page 7: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/7.jpg)
SIGSTOP -> SIGCONTUnity 8 envia sinais Unix para "congelar" e "descongelar" um processo.
![Page 8: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/8.jpg)
Comportamentos:
DBus
Processo que faz chamada síncrona para um app em SIGSTOP (pausado) também fica travado.
Telefone
Programas quando estão em segundo plano recebem SIGSTOP
Computador
Programas em segundo plano não recebem SIGSTOP
![Page 9: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/9.jpg)
Lição sobre Life Cycle:
▸ Evitar pausar o event loop do Qt;▸ Efeitos colaterais dão trabalho para corrigir.▸ Chamadas dbus síncronas para um processo
pausado ficam travadas até o timeout.
![Page 10: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/10.jpg)
2.QTimer
![Page 11: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/11.jpg)
“Evite programação “orientada a QTimer”, especialmente se não há garantia que seu app estará rodando.
![Page 12: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/12.jpg)
QTimer e Life Cycle
QTimer::singleShot(5000, this, SLOT(fazerAlgo()));
Processo recebe SIGSTOP
fazerAlgo() ???
![Page 13: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/13.jpg)
QTimer e Event Loop
QTimer::singleShot(0, this, SLOT(fazerAlgo()));
Event loop ...
fazerAlgo()
Postergar eventos?
![Page 14: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/14.jpg)
QTimer e Event Loop
QMetaObject::invokeMethod(this, "fazerAlgo", Qt::QueuedConnection,
Q_ARG(QString, umaString));
Event loop ...
fazerAlgo(umaString)
![Page 15: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/15.jpg)
Lição sobre QTimer:
▸ Evitar pausar o event loop do Qt (de novo);▸ Quando for usar QTimer, avaliar se é realmente
necessário;▸ QTimer não foi feito para postergar eventos no
event loop. Use QMetaObject::invokeMethod()
![Page 16: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/16.jpg)
3.QtDBus
![Page 17: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/17.jpg)
Use as Abstrações do QtNão reinvente a roda
![Page 18: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/18.jpg)
Variant
Use QVariant, mas cuidado para não exagerar. Serialização e desserialização dos dados pode custar caro em termos de processamento.
Exemplo:
QDBusContext
Facilita muito para expor classes inteiras no dbus.
Evita precisar mexer em muito código para expor métodos novos no dbus.
![Page 19: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/19.jpg)
Lição sobre QtDBus:
▸ Sempre que possível: definir interfaces em XML e use qdbusxml2cpp pra gerar o código.○ Evita mexer no código toda vez que mudar a
interface.
![Page 20: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/20.jpg)
4.API Síncrona
x API Assíncrona
![Page 21: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/21.jpg)
Api toda assíncrona
Retorno das funções não acontecem de forma imediata.
Cenário ideal:
Api Mista
Algumas funções podem exigir retorno imediato.
Cenário Real:
![Page 22: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/22.jpg)
Apps de telefonia utilizam Telepathy como backend.
Apesar do esforço para manter tudo assíncrono, foi preciso respeitar a API do telepathy e oFono (modem).
Exemplo:
![Page 23: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/23.jpg)
Fluxo de chamadas
Apps
Telephony Service(ubuntu phone)
Telepathy (framework comunicação)
oFono (libqofono)(modem)
![Page 24: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/24.jpg)
http://doc.qt.io/qt-5/qdbuspendingcallwatcher.html
Como interligar API síncrona e assíncrona:
![Page 25: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/25.jpg)
Lição sobre API:
▸ Quando possível evitar chamadas síncronas;▸ Lembrar que quando há chamadas de API's
diversas em cascata, nem sempre é possível chamadas assíncronas;
![Page 26: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/26.jpg)
5.QSqlDatabase
![Page 27: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/27.jpg)
Comportamentos:
SQLite
Banco de dados é um arquivo.
Compartilhar entre vários processos pode ser problemático.
Backends
Nem todos se comportam de forma igual.
Ex: count() e size()
![Page 28: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/28.jpg)
Lição sobre QSqlDatabase:
▸ Quando possível ter um processo isolado para acessar o banco de dados. (history-service)
▸ Backends tem implementações diferentes, portanto podem ter comportamentos diferentes.
▸ Implemente um mecanismo para facilitar atualização do schema do banco de dados.
![Page 29: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/29.jpg)
6.QThreads
![Page 30: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/30.jpg)
“Em muitos casos uma thread pode ser evitada agendando eventos no event loop.
![Page 31: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/31.jpg)
Problema real:
Backend de áudio travando indicadores ao tocar som de nova mensagem.
"Solução":
Todos os eventos de som executados em uma thread separada.
![Page 32: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/32.jpg)
Nota:
Threads em Qt são fáceis de criar…
Mas sincronizar muitas threads pode ainda ser complicado dependendo da complexidade do seu programa.
Prefira usar QMutexLocker em vez de QMutex.lock() e unlock()…
Evita que você esqueça de dar um "unlock" antes de sair dos métodos.
![Page 33: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/33.jpg)
Lição sobre QThread's:
▸ Quando possível use o event loop da thread principal;
▸ Use QMutexLocker;
▸ Evite muitas threads. Complexidade exponencial.
![Page 34: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/34.jpg)
Pois é! Threads...
![Page 35: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/35.jpg)
7.QtTest / QmlTest
![Page 36: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/36.jpg)
“Se seu código está com 100% de cobertura (coverage), algo está errado.
![Page 37: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/37.jpg)
SOFTWARE EM DESENVOLVIMENTO
Código com muitos testes:
Chances de quebrar testes aumentam.
Nem sempre indica falha.
Tempo de desenvolvimento:
Se existe uma janela de tempo para se entregar um projeto, avaliar bem o tempo “gasto” escrevendo testes.
Escrever o teste/ arrumar o teste:
Dependendo do caso, escrever o teste é rápido, mas descobrir o que causa uma falha e consertá-la demora muito mais tempo.
![Page 38: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/38.jpg)
SOFTWARE JÁ EM MANUTENÇÃO
Código com poucos testes:
Probabilidade de regressões não detectadas no desenvolvimento são altas.
![Page 39: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/39.jpg)
Equilíbrio
Solução?
![Page 40: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/40.jpg)
OUTROS DESAFIOS RELACIONADOS AOS TESTES:
1) Autopilot
Projeto interno e novo de automação de testes baseado no driver testability do Qt. Testes escritos em python.
2) Múltiplas plataformas
Mesmos testes rodando em tela de telefone, tablet e computador.
3) Múltiplas arquiteturas
Ubuntu era compilado em pelo menos 6 arquiteturas diferentes.
4) Múltiplos releases
Mesmo projeto precisava ser compilado em 3 releases diferentes do Ubuntu.
![Page 41: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/41.jpg)
Se seu aplicativo é escrito em QML, escreva QmlTests.
▸ Fácil de manter
▸ Escrito na mesma linguagem do software principal.
▸ É possível reaproveitar pedaços/idéias do código original no teste.
▸ Consegue simular, de certa forma, um humano interagindo com o app.
![Page 42: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/42.jpg)
Lição sobre Testes:
▸ Use um framework de testes que realmente tenha efetividade comprovada;
▸ Evite misturar tecnologias quando possível;▸ Foque na arquitetura em que seu produto
realmente irá rodar.▸ Lembre-se que em alguns casos o tempo de
descobrir e resolver uma regressão pode ser menor do que o esforço de manter muitos testes.
▸ Se seu código é Qt: Use QtTest e QmlTest.▸ Evite testes baseados em timing:
○ Ex: Clica em um item .. espera 10 segundos.. faz o teste.
![Page 43: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/43.jpg)
8.Qml e Property Bindings
![Page 44: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/44.jpg)
Bindings
Bindings são excelentes!
Bindings requerem cuidado!
![Page 45: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/45.jpg)
BINDINGS
Condicionar o valor de uma propriedade com o de outra.
Item { property var valor: 10 property var metade: valor / 2 }
![Page 46: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/46.jpg)
BINDINGS
Condicionar o valor de uma propriedade com o de outra.
Item { property var valor: 10 property var metade: valor / 2
height: { if (metade <= 5) { return 300; } return 500; }}
![Page 47: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/47.jpg)
BINDINGS
Condicionar o valor de uma propriedade com o de outra.
Item { property var valor: 10 property var metade: valor / 2
height: { if (metade <= 5) { return 300; } return 500; } width: height}
![Page 48: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/48.jpg)
“Chuva” de reavaliações
![Page 49: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/49.jpg)
EM OUTRAS PALAVRAS:
Mudança
ReflexoReflexo
Reflexo
![Page 50: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/50.jpg)
QML Profiler
![Page 51: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/51.jpg)
QML Profiler
![Page 52: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/52.jpg)
Lição sobre Bindings:
▸ É uma das melhores ferramentas do QML;
▸ Cuidado com os binding loops;
▸ Cuidado com a “chuva de reavaliações”;
▸ Em caso de problemas de performance: Qml Profiler;
![Page 53: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/53.jpg)
9.Ubuntu UI toolkit
![Page 54: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/54.jpg)
OBJETIVOS:
- Manter consistência visual entre apps.
- Facilitar o desenvolvimento de apps.
- Permitir desenvolver apps convergentes.
![Page 55: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/55.jpg)
TOOLKIT QML EM DESENVOLVIMENTO
Constante mudança de API:
Aplicativos que paravam de funcionar de um dia para o outro.
Constante mudança de design/foco:
Toolkit precisava se adaptar com as mudanças de design.
Impedir compartilhar código com outros sistemas:
Jolla acabou desenvolvendo seu próprio toolkit, também em QML.
![Page 56: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/56.jpg)
Lição sobre Toolkits:
▸ Quando puder, utilize um UI Toolkit já estabilizado e consolidado;
▸ Desenvolver apps com Toolkits em constante mudança é como construir uma casa com o chão tremendo;
![Page 57: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/57.jpg)
10.Outras lições
![Page 58: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/58.jpg)
Outras Lições:
▸ Evitar mexer em diversas áreas ao mesmo tempo:
○ Novo UI toolkit: constante mudança;○ Novo modelo de Pacotes (deb -> click -> snap);○ Novo conceito: Convergência;○ Novo framework de testes (autopilot);○ Novo servidor gráfico: MIR.
![Page 59: Desenvolvimento de Lições Sobre Apps de Telefonia e Ubuntu ... · OUTROS DESAFIOS RELACIONADOS AOS TESTES: 1) Autopilot Projeto interno e novo de automação de testes baseado no](https://reader034.vdocuments.net/reader034/viewer/2022051511/60145cea7b77834745303417/html5/thumbnails/59.jpg)
OBRIGADO!
Perguntas?tiagosalem.com.br ou @tiagosh