Você está na página 1de 16

Instituto Politécnico de Gaya

Processamento de Informação
José Augusto Monteiro

Classificação WCAG2 de
websites do Governo Português

Realizado por:

André Garcia - EI072135


Licenciatura de Engenharia Informática

Ano Académico: 2018-2019


Classificação WCAG2 de websites do Governo Português

Table of Contents
Introdução............................................................................................................................................3
Metodologia.........................................................................................................................................4
Componentes do trabalho................................................................................................................4
Inventariação dos sítios web.......................................................................................................4
Avaliação e pesquisa de software................................................................................................5
Detalhes sobre a implementação.................................................................................................6
Resultados......................................................................................................................................10
Conclusão.......................................................................................................................................15
Anexos................................................................................................................................................16

2
Classificação WCAG2 de websites do Governo Português

Introdução

O tema deste trabalho da cadeira de Processamento de Informação é recolher um conjunto de


websites do Governo Português com o domínio .gov.pt ou .pt (desde que afectos à administração
pública) e atribuir uma classificação sobre cada um no que diz respeito ao cumprimento dos padrões
WCAG2 (https://www.w3.org/WAI/WCAG21/quickref/).

Para melhor se compreender os padrões WCAG2, é importante referir que esta norma é
destinada a classificar o grau de acessibilidade de um website e abrange um vasto conjunto de
recomendações que têm como objetivo tornar o conteúdo Web mais acessível. O cumprimento
destas recomendações fará com que o conteúdo se torne acessível a um maior número de pessoas
com incapacidades, incluindo cegueira e baixa visão, surdez e baixa audição, dificuldades de
aprendizagem, limitações cognitivas, limitações de movimentos, incapacidade de fala,
fotossensibilidade bem como as que tenham uma combinação destas limitações. Seguir estas
recomendações fará também com que o conteúdo Web se torne mais prático também para os
utilizadores em geral.

Neste sentido é relevante determinar o grau de compromisso dos diversos serviços públicos
Portugueses no respeito por esta norma, detetar os problemas se confirmados e avaliar o tipo de
riscos se existentes.

Para consulta do código desenvolvido para o projecto poderá aceder ao endereço do github:
https://github.com/andreaxe/pdi . No endereço do github encontram-se presentes as instruções
necessárias para efectuar o download e execução da aplicação.

3
Classificação WCAG2 de websites do Governo Português

Metodologia
Componentes do trabalho

Tal como foi descrito na introdução, este trabalho contempla 3 importantes etapas:

1. inventariação dos sítios Web;

2. desenvolvimento dos algoritmos para recolha e classificação;

3. classificação do padrão de acessibilidade (avaliação apenas da página inicial);

Inventariação dos sítios web

O ponto 1 da componente do trabalho prevê a necessidade de recolha e inventariação da


informação. A recolha de websites associados ao governo Português foi obtida com recurso a um
algoritmo desenvolvido na linguagem Python e produzido para o efeito. A responsabilidade do
algoritmo é armazenar em memória todos os links encontrados numa determinada página e
investigar a existência de mais links para cada link encontrado. A tarefa é concluída assim que um
número determinado de sites com a designação .gov.pt tenha sido detectado, sendo que neste caso
foi definido o número 100 como limite para o algoritmo terminar. A mesma tarefa é executada para
domínios com a designação .pt contudo neste caso o número definido para paragem foi
significativamente superior, 1000. A pesquisa de endereços com a designação .pt envolveu
adicionalmente uma validação manual, uma vez que muitos dos endereços detectados pertencem a
entidades privadas ou de organismos municipais que não são abrangidos neste trabalho.

Ao todo foi possível extrair 100 websites com a designação .gov.pt e reconhecer cerca de 67 com
a designação .pt num total de 167 websites para análise.

Esta recolha devido à forte natureza de I/O a que está associado a consulta de websites,
necessitou de um total de aproximadamente 2 a 3 horas em execução para recolher o número de
websites que definimos como mínimo (+/- 150) para uma amostra significativa do universo de sítios
web pertencentes a entidades e serviços governamentais.

4
Classificação WCAG2 de websites do Governo Português

Avaliação e pesquisa de software

Para o desenvolvimento do código necessário à execução deste trabalho, decidiu-se avançar com
a linguagem Python.

A escolha da linguagem Python para desenvolvimento do projecto deveu-se sobretudo aos


seguintes factores:

1. não necessitar de servidor para executar;

2. biblioteca “matplotlib” para criação de gráficos de qualidade inspirados em comandos


gráficos do matlab;

3. biblioteca “beautifulSoup” bastante reconhecida pela sua versatilidade e competência na


extração de dados HTML;

4. biblioteca “pandas” para análise de dados

Para a fase de desenvolvimento foi necessário também efectuar um estudo para analisar a
possibilidade de utilização de ferramentas capazes de analisar conteúdo HTML e validar se a
norma WCAG 2.0 se encontraria a ser respeitada entre outras possíveis informações.

A solução final a ser criada deveria ser capaz de recolher a informação dos endereços web a
serem avaliados e guardar essa informação num ficheiro de texto para posteriormente ser
processada. A informação deveria ser submetida para uma API de terceiros, de preferência de
utilização gratuita no sentido de ser avaliado o seu conteúdo. Existem três ferramentas que validam
a informação desejada através do URL ou código HTML fornecido:

• Achecker (https://achecker.ca/checker/index.php)

• WAVE (https://wave.webaim.org/)

• TotalValidator ((https://www.totalvalidator.com/)

A WAVE é uma nova ferramenta lançada pela WebAim: Web Accessibility in Mind. Novamente,
este é um verificador on-line que permite validar por URL ou código HTML fornecido, mas
infelizmente não há API (ainda) e os resultados não são fáceis de processar através de um

5
Classificação WCAG2 de websites do Governo Português

algoritmo.

A alternativa encontrada foi o Achecker - esta ferramenta funciona bem. Além disso fornece uma
API REST mas não foi possível encontrar uma forma de efectuar um pedido a API para validar o
código HTML (em vez de ser por URL). O software usado no desenvolvimento do AChecker é de
código aberto (PHP) pelo que a possibilidade de executar o serviço num servidor próprio e dispor
da possibilidade de desenvolver ou alterar funcionalidades no próprio serviço é sempre uma grande
vantagem.

A última ferramenta da lista disponivel no mercado chama-se TotalValidator . Trata-se de uma


ferramenta que funciona através da linha de comandos, potencialmente viável para o objetivo deste
trabalho contudo implica um custo de licenciamento para utilização pelo que optou-se por não dar
grande seguimento à mesma, no entanto fica registado.

Analisando todas as ferramentas chegou-se à conclusão que aquela que melhor serviria os
interesses para o projecto seria a Achecker. O código fonte encontra-se disponível no seguinte
endereço: https://github.com/inclusive-design/AChecker

Detalhes sobre a implementação

Durante a fase de desenvolvimento verificou-se que a informação devolvida pela ferramenta


Achecker apresentava entidades não referenciadas que viriam a tornar-se um problema para a
extração da informação.

No seguinte bloco constata-se que existem entidades cuja informação não se encontrava
referenciada em nenhum ponto do documento XML devolvido pelo Achecker.

<errorSourceCode>&lt;img alt=&quot;Ag&ecirc;ncia para a


Moderniza&ccedil;&atilde;o Administrativa&quot;
src=&quot;/image/layout_set_logo?img_id=24216&amp;am ...</errorSourceCode>

Este facto resultava num erro da aplicação: Unresolved Entity Reference ccedil

6
Classificação WCAG2 de websites do Governo Português

Declaração do ficheiro XML:

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE resultset[
<!ELEMENT resultset (summary,results)>
<!ELEMENT summary
(status,sessionID,NumOfErrors,NumOfLikelyProblems,NumOfPotentialProblems,guidel
ines)>
<!ELEMENT status (#PCDATA)>
<!ELEMENT sessionID (#PCDATA)>
<!ELEMENT NumOfErrors (#PCDATA)>
<!ELEMENT NumOfLikelyProblems (#PCDATA)>
<!ELEMENT NumOfPotentialProblems (#PCDATA)>
<!ELEMENT guidelines (guideline)*>
<!ELEMENT guideline (#PCDATA)>
<!ELEMENT results (result)*>
<!ELEMENT result
(resultType,lineNum,columnNum,errorMsg,errorSourceCode,repair*,sequenceID*,deci
sionPass*,decisionFail*,decisionMade*,decisionMadeDate*)>
<!ELEMENT resultType (#PCDATA)>
<!ELEMENT lineNum (#PCDATA)>
<!ELEMENT columnNum (#PCDATA)>
<!ELEMENT errorMsg (#PCDATA)>
<!ELEMENT errorSourceCode (#PCDATA)>
<!ELEMENT repair (#PCDATA)>
<!ELEMENT sequenceID (#PCDATA)>
<!ELEMENT decisionPass (#PCDATA)>
<!ELEMENT decisionFail (#PCDATA)>
<!ELEMENT decisionMade (#PCDATA)>
<!ELEMENT decisionMadeDate (#PCDATA)>
<!ENTITY lt "&#38;#60;">
<!ENTITY gt "&#62;">
<!ENTITY amp "&#38;#38;">
<!ENTITY apos "&#39;">
<!ENTITY quot "&#34;">
<!ENTITY ndash "&#8211;">
]>

O método à primeira vista simples para colmatar o problema seria manualmente adicionar as
entidades em falta, contudo esse método seria de difícil implementação automática. A solução
encontrada foi de recurso e consistiu em alterar todas as entidades presentes no documento pela
uma designação que não resultasse em erro. Para assistir nessa solução recorreu-se a uma lista de
caracteres disponiveis no ficheiro “chars” cujo objectivo seria abrir o documento XML como se
tratasse de um ficheiro de texto e percorrer todo o documento de forma a alterar cada ocorrência por
uma string vazia. A solução encontrada embora não seja a ideal revelou-se eficaz contudo admite-se
que seja possível existir uma alternativa a este método, sendo provável uma melhoria da aplicação

7
Classificação WCAG2 de websites do Governo Português

no futuro para resolver este aspeto.


O resultado de uma resposta com avaliação positiva pelo Achecker tem o seguinte conteúdo na TAG
<resultset>:

<resultset>
<summary>
<status>PASS</status>
<sessionID>d3942801cf69a2ec73318eeda74da130c91aa467</sessionID>
<NumOfErrors>0</NumOfErrors>
<NumOfLikelyProblems>0</NumOfLikelyProblems>
<NumOfPotentialProblems>0</NumOfPotentialProblems>

<guidelines>
<guideline>WCAG 2.0 (Level A)</guideline>
<guideline>WCAG 2.0 (Level AA)</guideline>
<guideline>WCAG 2.0 (Level AAA)</guideline>

</guidelines>
</summary>

<results>

</results>
</resultset>

Por outro lado uma avaliação negativa contém a seguinte informação:

<resultset>
<summary>
<status>FAIL</status>
<sessionID>16465d0e50e66c4f3268b020b4cbb7fee5575f4a</sessionID>
<NumOfErrors>1</NumOfErrors>
<NumOfLikelyProblems>0</NumOfLikelyProblems>
<NumOfPotentialProblems>281</NumOfPotentialProblems>

<guidelines>
<guideline>WCAG 2.0 (Level A)</guideline>
<guideline>WCAG 2.0 (Level AA)</guideline>
<guideline>WCAG 2.0 (Level AAA)</guideline>

</guidelines>
</summary>

8
Classificação WCAG2 de websites do Governo Português

<results>
<result>
<resultType>Potential Problem</resultType>
<lineNum>1</lineNum>
<columnNum>92</columnNum>
<errorMsg>&lt;a href=&quot;https://achecker.ca/checker/suggestion.php?id=54&quot;
onclick=&quot;AChecker.popup('https://achecker.ca/checker/suggestion.php?id=54');
return false;&quot;
title=&quot;Suggest improvements on this error message&quot;
target=&quot;_new&quot;&gt;&lt;code&gt;title&lt;/code&gt; might not describe the
document.&lt;/a&gt;
</errorMsg>
….

Uma vez corrigidos os ficheiros XML devolvidos pelo Achecker, procedeu-se à extração das
variáveis que nos interessam estudar, que são as seguintes:

• status
• NumOfErrors
• NumOfLikelyProblems
• NumOfPotencialProblems

Essas variáveis foram armazenadas num dicionário de listas, ideal para serem introduzidas num
pandas dataframe. O pandas é uma biblioteca de Python especializada em análise de dados.

Para análise do dataframe interessou-nos determinar o seguinte:

• número de sites avaliados positivamente


• número de sites avaliados negativamente
• dos sites avaliados negativamente determinar o grau de erros mais comum
• determinar o site com maior tipo de erros
• determinar o site com maior tipo de erros potenciais
• determinar o site com maior tipo de erros prováveis
• determinar o top-10 dos sites com mais número de erros

9
Classificação WCAG2 de websites do Governo Português

Can be one of these values: FAIL, CONDITIONAL PASS, PASS.


FAIL is set when there is/are known problem(s).
CONDITIONAL PASS is set when there is no known problems but
status
there is/are likely or potential problem(s).
PASS is set when there is no problems found, OR, there is no known
problems and likely/potential problems have pass decisions made on.

NumOfErrors Counts the number of known problems.


NumOfLikelyProblems Counts the number of likely problems.
NumOfPotentialProblems Counts the number of potential problems.

De acordo com a tabela disponibilizada pela ferramenta “Achecker”, os erros prováveis ou erros
potenciais não são considerados erros que possam gerar um resultado negativo.

Resultados

Os resultados indicam que do universo de 167 websites avaliados, 60.2% dos sites foram
avaliados negativamente, 34.3% receberam nota positiva e 5,4% dos sites receberam uma avaliação
positiva “condicional”. Este resultado demonstra que mais de metade do universo de sites afetos ao
Governo da Republica Portuguesa apresentam erros de acessibilidade e não respeitam as
recomendações para uma boa usabilidade online.

Analisando os resultados, importa destacar que o Portal da Acessibilidade


http://www.acessibilidade.gov.pt/ apresenta 55 erros conhecidos e 346 erros potenciais. Um número
bastante elevado para um portal cujo objetivo se centra na acessibilidade e boas práticas online.

Existem também bons exemplos de entidades cujos websites são bastante frequentados e
obtiveram resultados positivos ainda que condicionais como são os casos do Portal da Empresa
(https://eportugal.gov.pt/inicio/espaco-empresa) e o Portal do Cidadão (https://eportugal.gov.pt/).

O portal da Direção Geral da Educação (https://www.dges.gov.pt/pt) cumpre com uma avaliação


positiva. Pela negativa destacam-se o portal da Juventude
(http://juventude.gov.pt/Paginas/default.aspx), IAPMEI (https://www.iapmei.pt/) entre outros.

10
Classificação WCAG2 de websites do Governo Português

Illustration 1: Gráfico percentual de avaliação na norma WCGA 2.0

Na análise aos erros detectados constatou-se que pelo menos 37,4% dos websites avaliados
negativamente contém um valor superior a 10 erros sendo que a percentagem de erros prováveis
superior a 10 é muito baixa.

De seguida analisou-se uma quantidade de erros superior a 50 para ajudar a entender melhor a
dimensão

11
Classificação WCAG2 de websites do Governo Português

Illustration 2: Gráfico percentual do número de erros detetados

12
Classificação WCAG2 de websites do Governo Português

Illustration 3: Gráfico percentual do número de erros detetados

Nos gráficos posteriores verificamos que no universo de websites com erros, a quantidade de
websites com erros superiores a 50 é relativamente pequena (22%). Em todo o caso constatamos
que existem websites com uma quantidade de erros bastante elevada. Na seguinte imagem
apresentamos o TOP 10 dos sites com o maior número de erros.

13
Classificação WCAG2 de websites do Governo Português

Illustration 4: TOP 10 com maior número de erros conhecidos

14
Classificação WCAG2 de websites do Governo Português

Conclusão

Os resultados são esclarecedores e ilustram o panorama da acessibilidade online no universo de


websites do Governo da Republica Portuguesa.

Esperava honestamente por este tipo de resultados uma vez que existe a percepção de acordo
com a amostra recolhida, que a maioria dos sítios criados para as diferentes entidades do Governo
Português foram desenvolvidos de raiz há alguns anos, sendo que a própria manutenção técnica
também não deverá ser a ideal. Com a exceção dos websites mais conhecidos e visitados pela
população Portuguesa, todos os outros apresentam (com uma ou outra ressalva) um estilo de
desenvolvimento algo ultrapassado o que deixa antever uma maior probabilidade da página não
cumprir com as recomendações de boas práticas de acessibilidade. Sem a vantagem da utilização de
frameworks modernas, os programadores ficam inevitavelmente mais expostos a violar
recomendações de boas práticas de acessibilidade de acordo com as recomendações do WCGA 2.0.
Analisando alguns dos websites com um número de erros elevados, é esta a maior conclusão e
justificação que retiro deste trabalho.

Em anexo estão incluídos todos os ficheiros XML devolvidos pelo Achecker onde é possível ao
leitor consultar possíveis erros e as sugestões de correção apresentadas pela aplicação.
Adicionalmente também está incluído um ficheiro do formato .csv com os resultados da avaliação
efectuada por esta mesma aplicação.

15
Classificação WCAG2 de websites do Governo Português

Anexos

• achecker_results.zip

• https://github.com/andreaxe/pdi

• site_results.xlsx

• site_results.csv

16

Você também pode gostar