O código-fonte da Stayaway Covid, a aplicação portuguesa de rastreio de contactos de proximidade de infetados pelo coronavírus, está disponível desde esta quarta-feira – e o primeiro problema já foi identificado pela comunidade de programadores. Segundo especialistas ouvidos pela Exame Informática, a falta de testes no código da app que foi publicado na plataforma GitHub significa um menor controlo de qualidade na aplicação e também dificulta os contributos de todos os que que escrutinarem o projeto.
Poucas horas depois da disponibilização do código-fonte da Stayaway Covid, foi identificado um problema (issue) no projeto: no código não há quaisquer testes integrados que permitam atestar o funcionamento da aplicação após feitas contribuições ao código. Testes que são comuns numa aplicação – testes unitários (a partes individuais do código-fonte), testes de integração (com serviços externos) e testes de regressão (para a introdução de novas funcionalidades não prejudicando o que está ‘para trás’) – não existem no código da Stayaway Covid que foi disponibilizado, como explicou o programador Rogério Moreira, à Exame Informática.
“Não quer dizer que a app não funcione, mas tem menos controlo de qualidade. Se agora um programador for introduzir uma nova funcionalidade, tem de testar manualmente se está a estragar alguma coisa para trás”, explicou também João Pereira, programador iOS, em entrevista. O facto de obrigar a uma verificação manual e sem recursos a testes específicos que automatizam o processo, dificulta a contribuição da comunidade de programadores, consideram os dois especialistas. Não torna os contributos impossíveis, mas torna-os menos convidativos.
Francisco Cruz, elemento do INESC TEC que faz parte da equipa de desenvolvimento da aplicação, defende-se das críticas. “Dizem que não há testes de todo, mas isso não é verdade. Só a parte da interface gráfica é que não tem testes”, sublinha.
Base da aplicação é europeia
Isto está relacionado com o facto de aplicação Stayaway Covid ser desenvolvida tendo por base o projeto europeu D3PT, para o qual o INESC TEC contribuiu e que é a base não só da Stayaway Covid, mas também de outras apps de rastreamento de contactos que estão a ser desevenvolvidas ou já foram lançadas, como a da Suíça. O objetivo deste projeto europeu é garantir a interoperabilidade entre as apps de rastreamento de contactos, na luta contra a Covid-19, dos diferentes países.
“A parte realmente crítica está completamente coberta por todos os testes unitários, de integração, etc”, acrescentou ainda o elemento do INESC TEC. Ou seja, contribuições relativas a elementos considerados como críticos da aplicação, para a “parte comportamental” da aplicação como lhe chama Francisco Cruz, terão de ser feitos ao projeto DP3T, cujo código-fonte também está disponível no repositório de código online GitHub.
“Testes unitários ao nível da interface gráfica, não achamos completamente necessários no nosso desenvolvimento inicial, não quer dizer que no futuro não o possamos fazer, a app ainda não está pública. Os testes ao nível de toda a plataforma, a parte crítica, a parte sensível, a que deve ser escrutinada, a que deve preocupar as pessoas, é no DP3T”, acrescentou ainda. Constrangimentos de tempo para o desenvolvimento da aplicação também ditaram que ao nível da interface não fossem incluídos testes.
A falta de testes identificada pelos programadores relativamente à Stayaway Covid ganha, segundo os programadores, mais importância tendo em conta o caráter específico e sensível do software: é uma ferramenta de rastreamento de contactos e será a partir desta aplicação que alguns portugueses poderão vir a ser notificados da possibilidade de terem estado em contacto com alguém que foi diagnosticado com Covid-19.
Apesar das críticas, o problema já foi declarado como encerrado pelo INESC TEC. “Estamos cientes da importância dos testes, portanto usamos pacotes de React Native que têm uma boa cobertura [de testes], em particular o servidor DP3T e os kits de desenvolvimento de software [SDKs] têm testes que [os programadores] podem correr. Mesmo assim, os Pull Requests [PRs] são bem-vindos”, escreveu Francisco Cruz, do INESC TEC, em resposta à issue reportada.
O React Native é uma referência ao ambiente de desenvolvimento escolhido para a aplicação – em vez de usar o desenvolvimento em linguagens nativas dos sistemas operativos nos quais a aplicação vai funcionar (Java em Android e Swift em iOS), o React Native permite usar o mesmo código para as duas plataformas.
Apesar da resposta pública dada pelo INESC TEC sobre a falta de testes, as críticas mantêm-se. “A aplicação em si deveria ter uma suite de testes muito mais alargada”, reiterou João Pereira, num e-mail enviado posteriormente à Exame Informática. A este comentário juntam-se outros, no GitHub e também numa publicação no Reddit, que sublinham a importância de haver testes integrados no código da aplicação.
Três contribuições da comunidade já ‘validadas’
Uma das vantagens de um projeto ser desenvolvido em modelo de código-aberto é poder contar com contribuições da comunidade de programadores – na identificação de problemas, como é o caso relatado acima, na correção de vulnerabilidades ou na criação de novas funcionalidades, por exemplo. No caso da plataforma GitHub, estes contributos são feitos através dos chamados Pull Requests – que são pedidos de integração no código-fonte original.
Na prática, como explicou Rogério Moreira, o programador copia o código-fonte do projeto para si, trabalha na funcionalidade ou no problema que acha adequado e depois cria o tal pedido de integração. Segundo a informação disponível na página da Stayaway Covid, nas primeiras 24 horas após a disponibilização do código foram criados três Pull Requests – e os três já foram ‘adotados’ pela equipa do INESC TEC.