Saltar para os conteúdos

Introdução

A usabilidade (ou falta dela) é uma componente muito importante de um website, e que pode significar o sucesso ou insucesso do mesmo junto dos seus utilizadores. Uma má experiência de utilização pode fazer com que os utilizadores desistam de usar o website e comecem a usar o site da concorrência. Assim, é importante não só garantir uma boa experiência de utilização, como ter a certeza de que o site cumpre com os objectivos a que se propõe, ou seja, que faça aquilo que os utilizadores esperam que o site os ajude a fazer.

Um sistema usável depende de um conjunto de factores:

  • Funcionalidades disponibilizadas: É importante que as funcionalidades sejam úteis aos utilizadores. Não interessa a quantidade de funcionalidades disponíveis, mas sim a sua utilidade e facilidade de uso. Não importa ter um site que faz 1001 coisas, se depois a sua utilização é frustrante e difícil. Às vezes mais vale ter apenas 2 ou 3 funcionalidades e executá-las muito bem para passar a ser uma referência e um ponto de visita obrigatório para os utilizadores que procuram essas funcionalidades;
  • Conteúdos: Se não temos conteúdos úteis para os utilizadores, então não temos nada que chame pessoas ao nosso website. Mais importante do que as funcionalidades, a navegação ou a pesquisa, é importante ter conteúdos úteis. Por vezes, mesmo com uma péssima navegação, websites com conteúdos muito úteis fazem com que os utilizadores façam de tudo para ultrapassar as dificuldades apresentadas para conseguir chegar à informação;
  • Navegabilidade: Se os conteúdos são úteis, torna-se também necessário facilitar o acesso aos mesmos. Uma boa navegação permite que os utilizadores cheguem mais rapidamente aos conteúdos que procuram, melhorando assim a sua experiência de utilização;
  • Acessibilidade: Ao contrário do que se pensa, acessibilidade não é apenas para utilizadores com deficiência ou necessidades especiais. Acessibilidade significa que os conteúdos devem estar acessíveis universalmente a todos os utilizadores, independentemente da sua deficiência, necessidade ou dispositivo utilizado. Assim, é necessário garantir o acesso à informação quer se use um portátil ou um telemóvel, quer se navegue com o rato ou com o teclado, ou quer se tenha alguma limitação física (ex: pessoas com mobilidade reduzida, um braço partido, dificuldades na visão, etc). Em relação a este ponto, temos toda uma secção deste website dedicado à acessibilidade.

Como medir a usabilidade?

A usabilidade pode ser "medida" de várias maneiras. No entanto, não se pode propriamente indicar a quantidade de usabilidade que um sistema tem. Em vez disso, indica-se uma lista de problemas que foram encontrados, e qual a sua gravidade. No SAPO usamos uma escala de gravidade de 5 níveis que vai do "Crítico" ao "OK".

Normalmente, as formas mais comuns de identificar problemas num website são através de:

  • Avaliações heurísticas: As avaliações heurísticas são feitas usando uma checklist de pontos de verificação. Dependendo da heurística utilizada, esta checklist pode ir das dezenas de pontos de verificação até às várias centenas. No entanto, a checklist mais usada é a de Nielsen com os seus 10 pontos de verificação principais. Esses 10 pontos podem depois ser interpretados e transformados em vários sub-pontos de verificação, como neste exemplo. Como referência, disponibilizamos também no SAPO UX uma checklist de pontos de verificação de usabilidade que pode ser usada como ponto de partida para identificar potenciais problemas de usabilidade a corrigir nos vossos websites.
  • Avaliações por peritos (expert reviews): As avaliações por peritos são feitas por avaliadores experientes que tentam simular o comportamento dos utilizadores no website. É uma mistura de avaliação heurística com testes com utilizadores, em que se aproveita a experiência do avaliador para encontrar potenciais problemas de usabilidade no website. Estudos recentes que compararam os problemas encontrados por "expert reviews" vs utilizadores reais concluiram que a fiabilidade das expert reviews é muito próxima dos testes com utilizadores, com a vantagem de demorar muito menos tempo e ser mais barata. Mais testes comparativos aqui.
  • Testes com utilizadores: Esta é a forma mais fiável de identificar problemas de usabilidade em qualquer sistema. Colocar utilizadores reais a usar o sistema, pedindo-lhes para realizar algumas tarefas e observar como navegam e se conseguem ou não atingir os objectivos de cada tarefa, permite identificar os pontos críticos onde é preciso intervir para melhorar a experiência de utilização de um website ou aplicação. Não é preciso fazer testes com muitos utilizadores, pois com apenas 5 ou 6 em cada iteração podemos identificar entre 80% a 90% dos problemas de usabilidade. Sempre que possível, é melhor testar com poucos utilizadores várias vezes ao longo do desenvolvimento de um website, do que gastar logo todos os recursos num teste com dezenas de utilizadores a testar as mesmas tarefas numa única iteração.

A escolha do método vai depender do contexto do website que se vai testar, do tempo disponível, e se existe ou não a possibilidade de poder ter pessoas externas a participar nos testes com utilizadores.

Como posso melhorar a usabilidade do meu website?

Nos capítulos seguintes, fornecemos um conjunto de dicas e regras de usabilidade que podem e devem ser seguidas para garantir uma boa usabilidade e uma boa experiência de utilização em websites. A aplicação cega das regras e guidelines não vai automaticamente tornar um mau site num bom site. A experiência de utilização tem de ser vista como um todo, e sob vários contextos de utilização.

Assim, além da aplicação das nossas dicas e recomendações, recomendamos vivamente que sejam feitos testes com utilizadores. Mesmo que não haja a possibilidade de testar com utilizadores reais, é sempre possível testar com amigos e familiares. Basta apresentar-lhes o website, dar um conjunto de 3 ou 4 tarefas (ex: "comprar um telemóvel nesta loja e chegar à página de pagamento onde são pedidos os dados do cartão de crédito") e ver onde existem falhas a corrigir. E fazer isto várias vezes ao longo do tempo para haver uma melhoria contínua.

Vamos começar!

Navegação

A navegação de um website deve permitir que os utilizadores tenham acesso aos conteúdos de forma eficaz e eficiente. Deve ser bem visível e consistente ao longo de todas as páginas, pois é a forma principal que os utilizadores têm de navegar entre as várias secções e páginas do website.

Para melhorar a sua visibilidade, os elementos de navegação devem ser agrupados e diferenciados dos restantes elementos do website (ex: criar uma zona de navegação bem visível e separada do resto dos conteúdos). Deve ainda ser fornecido feedback sobre a localização do utilizador na estrutura do website.

Já na zona dos conteúdos, para assegurar que os links são usados eficientemente, os títulos dos mesmos devem fazer sentido quando lidos fora do seu contexto e devem corresponder (sempre que possível) aos títulos das páginas de destino.

Devem ainda ser fornecidas pistas visuais consistentes para diferenciar claramente um link do resto do texto (que não é link) e dar feedback visual quando o utilizador clica num link, quando passa com o rato por cima de um link ou quando navega com o teclado.

De seguida, detalharemos estas e várias outras regras e dicas de navegação.

Fornecer sempre opções de navegação

A navegação principal deve estar sempre presente em todas as páginas do site e não devem existir páginas sem elementos de navegação que encurralem o utilizador (becos sem saída). Essas opções não devem estar escondidas e devem ser claramente visíveis. Isto inclui elementos de navegação que parecem estar visíveis, mas obrigam o utilizador a ter de passar com o rato em cima de cada um para perceber qual deles corresponde à secção que pretende visitar.

Not OK: Versão de navegação com as opções escondidas e apenas visíveis se o utilizador passar com o rato em cima de cada uma

Deve ser sempre possível aceder pelo menos aos níveis principais do menu em todas as páginas. Mesmo nas páginas de erro (ex: 404), deve ser sempre dada a possibilidade ao utilizador para navegar para algum sítio, quer através do menu do site, quer através de um campo para pesquisar a informação que ele procura, evitando assim um beco sem saída.

Usar a mesma consistência ao longo de todas as páginas

A informação importante e os itens clicáveis (blocos de navegação principais e secundários) devem ser colocados sempre nos mesmos locais ao longo de todo o website.

Os utilizadores, à medida que começam a conhecer o site, antecipam a localização da informação no ecrã e começam a procurar os conteúdos na página mesmo antes da mesma ter carregado. Quando a localização dos itens se mantém constante, os utilizadores aprendem essa localização e usam este conhecimento para navegar mais rapidamente.

Os links da navegação no site (a chamada navegação global) devem ser claramente distinguíveis dos restantes elementos de navegação (ex: navegação local numa secção interior) e devem ser colocados consistentemente sempre nos mesmos locais.

A criação de um sistema de navegação comum e igual em todas as páginas ajuda os utilizadores a aprender e perceber a estrutura do site.

OK: Consistência na localização das navegações globais e locais


Fornecer feedback sobre a localização do utilizador

Deve ser fornecido feedback aos utilizadores sobre a sua localização no site. Esta informação dá aos utilizadores a perceção da sua localização na estrutura hierárquica do site.

Este feedback pode ser dado de várias formas:

  • Através de "breadcrumbs", mostrando o caminho hierárquico desde a página inicial até à página atual (útil quando a hierarquia dos conteúdos é superior a 2 níveis), ex:
    • Início > Secção 1 > Sub-secção > Página actual
  • Fazer com que o texto dos links corresponda ao título (usado na tag <title>) das páginas de destino;
  • Criar estruturas de URLs amigáveis que estejam relacionadas com a localização do utilizador no site, ex:
    • http://lifestyle.sapo.pt/moda-e-beleza/tendencias/artigos
    • http://cinema.sapo.pt/estreias/estaSemana
  • Alterar a cor do menu em que o utilizador se encontra, incluindo as sub-categorias;

Menu e sub-menu indicam qual a secção em que o utilizador se encontra. Neste caso: Futebol > Taça de Portugal


Assegurar que os títulos dos menus são claramente perceptíveis

Speaking navigation

Exemplo de um menu com "speaking
navigation", uma pequena descrição
em baixo de cada item de
navegação

Os textos nos menus devem ser claramente perceptíveis de forma a que o utilizador consiga perceber à partida quais os conteúdos que irá ver se clicar num determinado link.

Sempre que possível deve ser evitado o uso de abreviaturas nos menus principais.

Em alguns casos, em que o nome do item pode não ser suficiente para que os utilizadores consigam perceber qual o link de destino, podem ser usadas técnicas de "speaking navigation" em que o item do menu inclui uma breve descrição da página de destino.

Assegurar que os itens clicáveis parecem clicáveis

Link claramente identificado no meio de um texto

Os elementos clicáveis (links e botões) devem ser claramente identificáveis dos restantes elementos na página. Esta identificação passa normalmente pelo uso de uma cor diferente e/ou outro tipo de decoração como por exemplo o sublinhado.

Deve-se portanto evitar usar cores sóbrias para os links como o preto e o cinzento, pois estes são normalmente usados para os textos (que não são clicáveis). Deve-se também evitar usar apenas o negrito para identificar links, pois por vezes poderemos querer evidenciar alguma palavra ou frase a negrito e isso irá criar uma inconsistência entre coisas que estão a negrito e são clicáveis e outras não são clicáveis.

Uma vez definido o aspeto dos links, esse aspeto deve ser mantido idêntico e consistente em todas as restantes páginas do site.

Botões

Os botões devem ter o aspeto de um objeto clicável, normalmente usando uma cor de fundo num formato quadrado ou rectangular, e em certos casos alguma decoração que lhes dê uma perspetiva que simula um elemento que sobressai do ecrã e que pode ser carregado.

Botões

Exemplo de um botão com perspetiva

Tabs

As tabs ou abas de navegação devem também ter um aspeto visual que as identifique claramente como tal. O mais importante é que se perceba claramente qual a tab que está ativa e isto é normalmente feito usando a mesma cor de fundo do conteúdo que a respetiva tab mostra.

Tabs

Exemplos de tabs à esquerda e no topo que identificam claramente qual o conteúdo aberto pela tab que está ativa

Uma boa forma de verificar se a tab ativa é facilmente identificável é testar apenas com 2 tabs. Com apenas 2 tabs muitas vezes não se consegue distinguir imediatamente qual está ativa pois o facto de uma delas estar numa cor diferente pode não dar pistas visuais suficientes que indiquem isso. Com 3 ou mais tabs, a tab ativa diferencia-se das outras de forma clara, mas quando temos apenas 2, não existe um termo de comparação para saber qual das tabs é a ativa.

Deve ser evitado o uso de textos sublinhados quando os mesmos não contêm links. Já está demasiado entranhado na experiência do utilizador que tudo o que está sublinhado é um link para uma outra página. Ao fornecer texto sublinhado que não é link, muitos utilizadores vão tentar clicar nesse texto e vão ficar frustrados por não conseguirem usar o "link".

Adicionalmente, no meio do texto, não devem ser usadas cores diferentes em palavras, frases ou parágrafos. Deve ser mantida uma consistência em que o texto mantém sempre a mesma cor ao longo de todas as páginas, pois o uso de texto numa cor diferente pode ser também associado à existência de um link para outra página.

Mais grave ainda é usar a mesma cor escolhida para os links em texto que não é link.

Nos links de paginação (e em links que são demasiado pequenos no geral), deve ser criado um espaçamento extra (padding) à volta de cada link. Isto facilita a navegação uma vez que os links colocados apenas num caractere se tornam demasiado estreitos e difíceis de clicar.

Ao criar este espaçamento extra, aumenta-se a área clicável nos links e ao mesmo tempo dá-se um melhor feedback visual ao utilizador. O espaçamento extra permite também que os utilizadores de smartphones consigam usar o dedo confortavelmente para acertar nos links de paginação sem necessitarem de fazer zoom e sem correr o risco de clicar no link do lado por engano.

Paginação

Exemplo de paginação sem espaçamento e
paginação com espaçamento extra em cada link


Fornecer acesso à homepage em todas as páginas

Deve ser fornecido um acesso fácil e directo à homepage em todas as páginas do site.

Muitos utilizadores voltam à homepage para iniciar uma nova tarefa ou para reiniciar a tarefa que estavam a realizar. Deve ser criada uma forma fácil e óbvia de permitir que os utilizadores voltem à homepage.

O logotipo do site deve conter sempre um link para a homepage; no entanto, ainda há grupos de utilizadores que não têm este nível de experiência e como tal deve ser igualmente incluído um link no menu para aceder à homepage.

O link para acesso à homepage deve ser preferencialmente escrito em português, ex: "Página inicial" ou "Início" em vez de "Homepage" ou "Home". É possível usar uma imagem como link para a homepage, desde que seja claramente identificável com o seu propósito.

Os utilizadores devem poder olhar para os links e automaticamente perceber algo sobre o seu destino mesmo antes de clicarem.

O uso de termos como "clique aqui" pode ser bastante contra-produtivo e quando lido fora do contexto não proporciona informação adicional (ex: há utilizadores com necessidades especiais que usam sistemas de leitura de ecrã e que activam a opção para ler apenas os links na página ignorando todo o resto do texto).

Assim, em vez de termos links do tipo: "Para registar uma nova conta, clique aqui" deveremos usar links do tipo: "Registe uma nova conta", que identifiquem claramente a acção que irá ser realizada.

O texto dos links deve ser consistente com o título ou cabeçalho principal da página de destino. Esta consistência ajuda os utilizadores a perceber que, depois de clicarem num link, foram parar à página pretendida.

links

Link do artigo corresponde com o título da página, o URL e o cabeçalho principal do conteúdo


Evitar o uso de carrosseis

Em testes efectuados com utilizadores, verificou-se que a utilidade dos carrosseis é praticamente nula. A maior parte dos utilizadores veem apenas o primeiro ou o segundo item do carrossel e continuam a fazer scroll para navegar no resto da página. Os restantes itens do carrossel têm normalmente um nível de visibilidade muito baixo. Na prática, se queremos que os conteúdos sejam vistos pelos utilizadores na página, então devem estar acessíveis e visíveis sem ter de recorrer a navegação extra ou esperar que a página mude para o conteúdo pretendido automaticamente.

A única vantagem dos carrosseis é o de poder dizer às equipas de marketing que "o seu conteúdo está em destaque na homepage".

Se não pudermos evitar os carrosseis

Se a utilização de um carrossel for mesmo necessária, então há um conjunto de regras que devem ser cumpridas, nomeadamente:

  • Os controlos de navegação devem estar sempre visíveis e acessíveis;
  • Deve ser possível navegar usando as setas do teclado;
  • Deve haver uma indicação de qual o item atual e quantos itens existem no carrossel. Pode-se usar uma lista de thumbnails que identifique o item atual; uma indicação textual que indique que estamos no item "x de y", em que "x" é o item atual e "y" é o total de itens do carrossel; ou pode-se usar uma pista visual que permita perceber quantos itens existem e em que item estamos (ex: aquelas bolinhas em baixo do carrossel);
  • Se o carrossel rodar automaticamente, a rotação deve parar assim que o utilizador parar o rato em cima do carrossel. Se o utilizador estiver a navegar com o teclado, a rotação deve parar assim que for feito foco no carrossel.

Carrossel

Exemplo de um carrossel, com as setas de navegação e o indicador em baixo do item atual e do número de itens que existem no total


Pontos de verificação

Estes são exemplos de alguns dos pontos principais de avaliação que equipa de usabilidade vai verificar e qual a sua classificação.

Tipo de Problema Classificação (saber mais) Observações
Existem páginas que não têm navegação e são becos sem saída para o utilizador Crítico
Páginas de erro 404 e 500 não permitem recuperar do erro e voltar a navegar ou pesquisar pelo conteúdo que se procurava Problema Grave
Inconsistências na forma como a navegação é disponibilizada ao longo de diferentes páginas no mesmo website Problema Grave
Não existe feedback ao mover o dispositivo apontador por cima de links ou botões Problema
Não existe indicação no menu de navegação de qual a secção em que o utilizador se encontra Problema
Os títulos dos links clicados não coincidem com os títulos das páginas de destino Problema
Não é possível distinguir claramente os elementos clicáveis dos restantes elementos na página que não são clicáveis Crítico
Há elementos na página que não são links, mas que têm o mesmo aspecto dos elementos clicáveis Crítico
As tabs de navegação não permitem identificar claramente qual a tab que está ativa Crítico
Os links de paginação são demasiado pequenos e não têm espaçamento extra Problema Grave
Não existe forma de aceder facilmente à homepage em todas ou algumas páginas do website Crítico
O texto dos links não faz sentido quando lido fora do seu contexto, ex: uso de links "clique aqui" Problema
Os carrosseis não param de rodar automaticamente quando o utilizador tem o rato em cima do elemento e/ou está a interagir com o carrossel Crítico
Não existe indicação de qual o item atual selecionado no carrossel Problema

Nota: Esta não é uma lista exaustiva, apenas um exemplo. Podem existir mais problemas identificados na avaliação de usabilidade ao website que não estão listados aqui. Cada website tem as suas particularidades e contextos de utilização diferentes.

Referências

  1. Should I use a carousel - Motivos para não usar carrosseis em websites

Mais dicas e recomendações

Uma vez que as regras de usabilidade e acessibilidade contemplam muitos pontos em comum, além das dicas e recomendações acima, devem também ser tidas em conta as recomendações de acessibilidade disponíveis na secção de Acessibilidade do SAPO UX.

Formulários

Os formulários são a principal forma de interacção dos utilizadores com um website e também o local onde normalmente ocorrem os principais problemas de usabilidade.

O standard ISO 9241 define que a usabilidade de um website é medida pela “efetividade, eficiência e satisfação com que os utilizadores atingem os seus objectivos". Quando estão a navegar num website, os utilizadores têm normalmente um objetivo a atingir, quer seja encontrar algum tipo de informação ou completar alguma tarefa.

Se o website estiver bem concebido, irá cumprir as necessidades desse utilizador e permitir que ele atinja o seu objetivo. No entanto, na maior parte dos casos, existe um formulário no caminho dos utilizadores que tem de ser preenchido para que o objetivo possa ser alcançado.

O ideal é que os formulários sejam o mais simples e intuitivos possíveis, de modo a não bloquear os utilizadores de chegarem ao seu objetivo.

Os formulários existem por um de três motivos: comércio, comunidade ou produtividade.

  • Comércio: o objetivo do utilizador é obter mais informação sobre um item ou comprá-lo;
  • Comunidade: o objetivo é registar-se para poder pertencer a uma comunidade ou rede social;
  • Produtividade: o objetivo é concluir uma tarefa específica, ex: fazer uma transferência de dinheiro no homebanking;

Assim, é importante que os formulários sejam fáceis de usar, pois podem significar o sucesso ou o insucesso da interação dos utilizadores no website.

É importante que o preenchimento de um formulário seja o mais simples possível e de preferência apenas com os campos estritamente necessários. Os campos de preenchimento não devem ser estilizados de forma a que surjam dúvidas sobre o tipo de campo, por exemplo, às vezes há checkboxes que são estilizadas de forma que é difícil perceber se são checkboxes ou radio-buttons.

É também muito importante distinguir claramente a ação principal do formulário (o botão de "submit" principal) de outras ações secundárias (ex: o botão de "cancelar") para que os utilizadores não cliquem no botão errado por engano e assim percam todos os dados que acabaram de preencher.

Distinguir claramente os itens de preenchimento obrigatório

Os utilizadores devem conseguir distinguir claramente os campos em que o preenchimento é obrigatório dos restantes campos. Hoje em dia, a maior parte dos websites usa um asterisco à frente do nome do campo para os identificar como obrigatórios; outros websites usam a palavra "obrigatório" em vez do asterisco.

Ambas as soluções são válidas, mas o uso de um asterisco obriga a ter uma legenda no topo do formulário para indicar que os campos marcados com * são de preenchimento obrigatório.

Qualquer que seja a opção escolhida, a informação de obrigatoriedade de preenchimento deve estar incluída na label do campo e não após o campo em si.

Deve ainda ser usado o atributo required para que o browsers que fazem a validação inline do preenchimento dos formulários possam dar uma mensagem de aviso se o utilizador não preencher os campos obrigatórios.

Exemplo 1:

<div>
	<label for="nome">Nome <em>(obrigatório)</em></label>
	<input id="nome" type="text" required name="nome" placeholder="O seu nome" value="" />
</div>

Exemplo 2:

<div>
	<label for="nome">Nome <abbr title="campo obrigatório">*</abbr></label>
	<input id="nome" type="text" required name="nome" placeholder="O seu nome" value="" />
</div>

Isto permite que, em termos de acessibilidade, os conteúdos sejam lidos de uma forma coerente pelos screen-readers; ou seja, o utilizador ouve o nome do campo, depois a informação de que o campo é de preenchimento obrigatório e finalmente tem acesso ao campo para o poder preencher.

Depois, via CSS, a informação de obrigatoriedade pode ser movida para o local pretendido, caso se pretenda.

Se a maior parte dos campos for de preenchimento obrigatório, então em vez de estar a encher o formulário com essa informação, podemos indicar apenas os campos que são de preenchimento opcional.

Formulário com campos opcionais vs. formulário com campos obrigatórios

Nota: A validação através do atributo required não funciona de raíz em todos os browsers, por isso será sempre necessário garantir uma validação do lado do servidor (server-side) nos casos em que o browser não faz a validação.

Mensagens de erro

As mensagens de erro devem ser claras e devem ajudar o utilizador a corrigir ou utrapassar os erros. Uma mensagem do tipo: "Ocorreu um erro ao preencher o formulário" não ajuda em nada a saber a razão pela qual ocorreu o erro nem como o corrigir.

Sempre que possível, deve evitar-se sequer que os erros ocorram, como por exemplo dando dicas juntos dos campos sobre o tipo de informação pretendida, ou limitando a forma como os dados são inseridos (ex: num campo onde se pedem números de telefone, o campo aceitar apenas números e não letras)

As mensagens de erro devem ajudar a identificar o que aconteceu e como corrigir

Localização das mensagens

As mensagens de erro devem estar junto do campo a que dizem respeito. No exemplo abaixo, colocámos a mensagem de erro dentro da própria <label>, o que nos dá algumas vantagens em termos de acessibilidade, pois a mensagem de que o campo contém erros pode ser lida antes de chegar ao respectivo campo, ex:

<div class="erro">
	<label for="nome">Nome <em>Erro: este campo é de preenchimento obrigatório</em></label>
	<input id="nome" type="text" name="nome" value="" />
</div>

A forma como colocamos a mensagem de erro junto ao campo pode variar, o importante é que os campos que contêm erros sejam claramente identificados como tal, e tenham a informação contextual de ajuda sobre o tipo de erro e como resolvê-lo.

Exemplo de um campo com mensagem de erro

No caso de ser um formulário extenso (maior do que a altura visível do ecrã), é útil indicar no topo da página que existem erros de preenchimento no formulário abaixo. Esta informação pode também conter links diretos para os campos que necessitam de ser corrigidos.

Exemplo de bloco com mensagens de erro e links para os respetivos campos que pode ser usado no topo do formulário

Visibilidade das mensagens

As mensagens de erro devem distinguir-se claramente dos restantes elementos do formulário. Normalmente a cor vermelha é associada às mensagens de erro, e como tal deve ser evitado o seu uso nos formulários, a não ser quando existam de facto erros de preenchimento.

As mensagens de erro podem ser mostradas à medida que o utilizador vai preenchendo o formulário (inline) ou apenas depois do utilizador submeter o formulário. Na maior parte dos casos, mostrar os erros inline ajuda os utilizadores a preencher o formulário mais rapidamente e a corrigir potenciais problemas antes de fazer o envio final dos dados. No entanto, a escolha entre uma opção ou a outra vai depender do contexto do website e do próprio formulário. Aqui a questão importante é sempre a utilidade e a localização das mensagens no formulário.

Mensagens de sucesso

O utilizador deve receber feedback de que a sua acção foi realizada com sucesso. Este feedback não deve ser intrusivo e não deve ser um beco sem saída.

A melhor forma não intrusiva de mostrar as mensagens de sucesso é disponibilizar essa informação no topo da página logo após o utilizador ter submetido os dados do formulário. Isto pode ser feito recarregando novamente a página do formulário com essa informação de sucesso no topo, ou carregando uma página de sucesso (preferível).

As cores e a iconografia das mensagens de erro e de sucesso devem ser imediatamente perceptíveis. Normalmente o verde é sinónimo de que tudo correu bem enquanto que o vermelho é sinónimo de erro. Por motivos de acessibilidade, não devemos confiar apenas na cor para diferenciar a informação erro/sucesso, daí a necessidade de incluir iconografia ou que a própria mensagem inclua os termos "erro" ou "sucesso".

Diferenciação clara entre mensagens de sucesso e de erro

Mensagens inline

Por vezes, poderemos usar mensagens de sucesso inline para dar pistas ao utilizador de que os campos foram preenchidos correctamente.

No entanto, não convém abusar deste tipo de mensagens. A informação de sucesso apenas deve ser mostrada quando a informação que é pedida não é óbvia. Ou seja, nos campos em que se pergunta o nome, género sexual, país, etc não se devem usar mensagens de sucesso porque as respostas são óbvias para o utilizador. As situações onde se devem usar mensagens de sucesso inline são, por exemplo, quando o utilizador regista uma nova conta e escolhe um nome de utilizador, aqui podemos mostrar se esse nome está disponível com uma mensagem de sucesso, ou mostrar uma mensagem de erro (e sugestões de outros nomes) caso esteja indisponível.

Uso de mensagens de sucesso inline

Colocar as labels perto do respetivo campo

As labels devem estar colocadas de forma a que estejam visualmente próximas do campo a que dizem respeito. Existem várias formas de colocar as labels junto dos campos, todas elas têm vantagens e desvantagens.

Os exemplos que se seguem fazem parte de um estudo aprofundado sobre formulários web, desenvolvido por Luke Wroblewsky.

Labels no topo (recomendado)

Vantagens: Permitem uma maior rapidez na leitura e preenchimento dos campos; os títulos estão bastante próximos do campo a que dizem respeito.

Desvantagens: O formulário ocupa mais espaço vertical, muitas vezes obrigando a ter que fazer scroll na página.

Labels no topo dos campos

Best practice: Este tipo de alinhamento deve ser usado quando queremos ter tempos de preenchimento rápidos e não temos constrangimentos de espaço.

Labels à esquerda, com alinhamento à direita

Vantagens: Os títulos estão bastante próximos do campo a que dizem respeito; Espaço vertical é reduzido, permitindo ter mais campos sem obrigar a fazer scroll na página.

Desvantagens: Legibilidade reduzida.

Labels à esquerda, alinhadas à direita

Best practice: Este tipo de alinhamento deve ser usado quando houverem constrangimentos de espaço na vertical.

Labels à esquerda, com alinhamento à esquerda

Vantagens: Espaço vertical é reduzido, permitindo ter mais campos sem obrigar a fazer scroll na página; Melhor legibilidade dos títulos uma vez que estão todos alinhados à esquerda.

Desvantagens: Demasiado espaço entre os títulos e os campos do formulário que podem fazer com que não se consiga perceber a que campo corresponde um determinado título.

Labels à esquerda, alinhadas à esquerda

Best practice: Este tipo de alinhamento deve ser usado quando queremos que as pessoas possam fazer um varrimento rápido das perguntas que são pedidas e quando só têm que responder a algumas das perguntas que lhes são colocadas.

Labels dentro dos campos

Esta solução permite colocar as labels dentro do próprio campo de preenchimento. Esta solução apenas deve ser usada quando existem constrangimentos extremos de espaço ou quando os campos usados são poucos e imediatamente perceptíceis, ex: num formulário de login, em que se pedem apenas os campos "nome de utilizador" e "password".

É necessário distinguir claramente o texto das labels do texto que é preenchido pelo utilizador no mesmo campo. Por exemplo, o texto das labels a cinzento, mas o texto preenchido pelo utilizador a preto. Isto já é normalmente garantido pelos browsers modernos usando o atributo placeholder.

Labels dentro dos campos

Nota: convém evitar diferentes alinhamentos no mesmo formulário uma vez que se quebra o padrão de leitura dos campos. Se optarmos por um tipo de alinhamento, devemos mantê-lo ao longo do resto do formulário e mesmo ao longo de todos os outros formulários que possamos ter no mesmo website.

O texto nos botões deve ser claro

Assegurar que os botões dos formulários indicam claramente a ação que irão desencadear. Os textos mais comuns que se costumam encontrar em botões de formulários são: "Atualizar", "Gravar" e "Enviar".

Convém evitar o uso de botões apenas com o texto "Sim", "Não", "OK" uma vez que isso obriga a ter que ler o texto anterior para perceber o que irá acontecer quando clicar numa das opções disponíveis.

Mau exemplo de fornecimento de escolhas ao utilizador

Cancelar o cancelamento

Há situações em que a ação principal é a de cancelamento de alguma coisa. Quando é feita uma pergunta se o utilizador pretende cancelar e as opções são "ok" e "cancelar", ambas entram em conflito, pois parece que ambas são a ação que se pretende realizar.

Em baixo podemos ver um exemplo prático disto a acontecer, pois existem dois botões (Cancelar e OK), mas a ação principal é a de cancelar um débito directo. Neste caso coloca-se a dúvida de qual dos botões serve para cancelar o débito directo, será o "Cancelar" (indica a ação que queremos realizar) ou será o OK (confirma a ação que queremos realizar)?

Confusão entre qual das opções é a correta

Como se resolve isto? Mudando a forma como se faz a pergunta (se possível); mudando os textos dos botões para serem um pouco mais verbosos, ex: "Cancelar o débito directo" e "Anular"; ou então identificar claramente qual o botão principal e qual o botão secundário (ver dica seguinte).

Ações principais e ações secundárias

As ações principais dos formulários devem ser sempre executadas através de botões e nunca através de links. Os botões devem estar sempre associados a ações que o utilizador executa (ex: Gravar, Atualizar, Enviar, etc).

As opções como "Cancelar", "Limpar" ou "Voltar Atrás" representam ações secundárias e normalmente são o oposto da ação principal do formulário. Na maior parte dos casos estas ações secundárias são mais perigosas do que úteis (ex: clicar no botão "Limpar" por engano após ter preenchido um formulário extenso). Desta forma, apenas devem ser colocadas estas ações secundárias no caso de serem realmente úteis ou necessárias (ex: uma opção para "Cancelar" ao lado da opção principal de "Gravar").

Diferenciar as ações principais das secundárias

Tem de haver uma diferenciação visual entre as ações principais e as ações secundarias de modo a evitar potenciais erros por parte do utilizador. Esta diferenciação também ajuda a perceber claramente qual a ação que confirma e qual a ação que cancela o formulário.

Diferenciação entre as ações principais e secundárias

A nossa recomendação é de que as ações principais devem ser representadas por um botão, claramente visível, e as ações secundárias sejam representadas por um link, de modo a criar uma maior separação visual e tornar inequívoco onde se deve clicar para submeter o formulário.

Em testes com utilizadores, quando são usados botões para as ações primárias e secundárias (mesmo sendo claramente diferentes entre si), os utilizadores mencionam que tiveram de ler o que dizia cada botão para não clicarem no botão errado. Às vezes podemos estar habituados a clicar sempre no primeiro botão que aparece, sem ler, e assim perder os dados do formulário que acabámos de preencher.

Localização dos botões

A melhor forma de colocar os botões no final de um formulário é alinhá-los no seguimento dos campos do formulário. Assim, se os campos estão encostados à esquerda, o botão da ação principal deve estar também encostado à esquerda. Isto permite um preenchimento e uma tomada de decisão mais rápida, pois basta continuar para baixo e submeter o formulário.

Em testes com utilizadores verificou-se que a colocação dos botões ao centro ou à direita implica um desvio do olhar e do rato para poder submeter o formulário, perdendo-se assim alguns segundos na interacção. Além disso, dependendo da forma como os botões são apresentados (se não houver uma diferenciação clara entre eles), o facto de eles estarem alinhados à direita às vezes pode levar as pessoas a clicarem no botão mais encostado à direita, que pode ou não ser o botão principal do formulário.

Dito isto, convém salientar que a ação principal deve vir sempre em primeiro lugar, e só depois as ações secundárias.

A localização das ações pode implicar um deslocamento grande do olhar e do rato para submeter o formulário

No entanto, podem haver algumas exceções a esta regra. No caso de um workflow (processo que implica o preenchimento de vários passos), podemos usar os botões à esquerda com as ações de "voltar para trás" e os botões à direita com as ações de "continuar", pois permite a usar a metáfora de que a esquerda serve para voltar para trás e a direita serve para seguir em frente.

Uso de botões alinhados à esquerda e à direita para dar a ideia de retrocesso e continuidade em workflows com vários passos

Permitir que o submit dos formulários seja feito apenas com HTML

O submit dos formulários deve ser feito exclusivamente com HTML. Isto significa que não deve ser usado código JavaScript do tipo "submit()" ou "onClick()" para que os formulários enviem os dados preenchidos pelo utilizador. Assim, o submit deve ser sempre feito através de um botão/input e nunca através de um link. Ex:

<input type="submit" value="Gravar Alterações" />

ou:

<button type="submit">Gravar Alterações</button>

A vantagem do uso da tag <button> é que permite incluir qualquer elemento dentro do botão, incluindo imagens ou ícones (ex: Font Awesome):

<button type="submit">
    <span class="fa fa-save"></span> Gravar Alterações 
</button>

Isto não invalida que não se possa usar JavaScript para fazer validações dos dados introduzidos pelo utilizador de modo a dar as mensagens de erro/sucesso correspondentes, mas é necessário garantir que se o JavaScript estiver desativado, o formulário é enviado e os erros são detetados e mostrados no formulário via server-side.

Aceitar várias formas de preenchimento dos dados

Muitas vezes, a informação pedida nos formulários pode ser inserida de várias formas. Por exemplo, há pessoas que escrevem as datas como 31/01/1979, outras como 31-01-1979 e outras como 31.01.1979.

O formulário deve ser suficientemente inteligente para converter os dados inseridos pelo utilizador para o formato aceite pelo sistema. Ou seja, em vez de dar uma mensagem de erro ao utilizador dizendo-lhe como é que ele deve preencher os dados, devemos aceitar os dados e convertê-los nós para o formato pretendido. Só se a conversão não resultar num valor válido é que devemos dar uma mensagem de erro ao utilizador.

Também podemos usar dicas de preenchimento (que são úteis em muitos casos), ou formatar os campos de forma a obrigarem ao preenchimento de uma determinada maneira (ex: a insercção do código postal é normalmente feita em dois campos, um com os primeiros 4 dígitos e depois outro com os restantes 3 dígitos). De qualquer das formas, o melhor é conseguir sempre evitar que os erros de preenchimento aconteçam porque muitas vezes os utilizadores preenchem os campos sem lerem as instruções sobre a forma como os devem preencher.

Usar o tipo de campo certo para cada resposta

Quando estamos a pedir que os utilizadores nos forneçam informação através de um formulário, devemos garantir que a forma como os utilizadores podem responder seja a mais correcta possível.

Assim, quando pretendemos que os utilizadores respondam a uma pergunta usando uma escolha múltipla de respostas, devemos fornecer as respostas com checkboxes. Se em vez disso, apenas queremos que o utilizador escolha uma única opção das apresentadas, então devemos usar radio-buttons. É importante que a estilização dos elementos dos formulários (quando exista) não crie confusão sobre a diferença de aspeto entre uma checkbox e um radio-button.

Diferença entre checkboxes e radio-buttons

Com o aparecimento do HTML5 e da ploriferação dos smartphones, o uso do campo certo passou a ser ainda mais importante. Por exemplo, num telemóvel, quando pedimos ao utilizador para preencher um endereço de e-mail ou um número de telefone, o teclado pode adaptar-se para mostrar os caracteres específicos para preenchimento de e-mails (ex: @) ou mostrar apenas dígitos, respetivamente. Isto faz uma grande diferença na forma como os dados são introduzidos e até mesmo na prevenção de erros de preenchimento.

<fieldset>
    <legend>Vários tipos de campos:</legend>
    <label for="a">Campo de texto normal</label> <input type="text" id="a">
    <label for="b">Campo numérico</label> <input type="number" id="b">
    <label for="c">Número de telefone</label> <input type="tel" id="c">
    <label for="e">Endereço de e-mail</label> <input type="email" id="d">
    <label for="e">Campo de pesquisa</label> <input type="search" id="e">
</fieldset>

Consulte aqui uma lista completa de todos os tipos de campos disponíveis.

Uma outra vantagem do uso dos campos certos, é que os browsers mais recentes já permitem fazer a validação dos dados inseridos. Por exemplo, um campo que pede um endereço de e-mail pode ser automaticamente validado pelo browser sem necessidade de validações via JavaScript.

Nesta ferramenta podem ser testados os vários tipos de campos e a sua respetiva validação: http://inputtypes.com/.

Atributos alternativos (HTML5)

Existem alguns atributos que podem ser usados nos formulários que permitem melhorar um pouco a sua experiência de utilização. No entanto, estes atributos por fazerem parte da especificação HTML5 apenas funcionam em browsers recentes e, caso se queira manter a funcionalidade em browsers mais antigos (ex: IE8), será necessário replicar este comportamente num fallback em JavaScript.

Foco automático de um campo ao carregar a página

O atributo autofocus pode ser usado nos casos em que o formulário é o elemento central da página, e como tal, queremos que os utilizadores comecem a usá-lo imediatamente quando a página carrega.

As situações onde isto se pode (e deve) usar são:

  • Páginas de login, que contêm apenas um formulário para fazer login num serviço;
  • Páginas de pesquisa, que incluem apenas um formulário de pesquisa no centro da página.

Não se deve usar em formulários que estão em páginas cujo seu conteúdo mais importante não é o formulário em si, como por exemplo uma página de resultados de pesquisa. Nesta página, o mais importante é que o utilizador navegue pelos resultados mostrados e não que faça uma nova pesquisa.

Como usar (exemplo de um formulário de pesquisa):

<form>
	<label>Pesquisar: <input type="search" name="search" autofocus /></label>
	<input type="submit" value="OK" />
</form>

Sugestões e correções do teclado

Em dispositivos móveis, ao preencher um formulário, normalmente o teclado costuma dar sugestões de palavras para facilitar a escrita. No entanto, em determinados casos podemos não querer que o sistema dê sugestões de palavras pois podem atrapalhar mais do que ajudar.

Assim, podemos usar os atributos autocomplete (para evitar o preenchimento automático de sugestões) e autocorrect e spellcheck (para evitar correções com base no dicionário) para indicar quais os campos em que queremos ativar/desativar as sugestões de teclado.

<form>
	<label>Nome: <input type="text" name="nome" /></label>
	<label>E-Mail: <input type="email" name="email" autocomplete="off" autocorrect="off" spellcheck="false" /></label>
	<input type="submit" value="OK" />
</form>

Por outro lado, podemos usar estes atributos para fazer o inverso, ou seja, para facilitar o preenchimento dos formulários, pois alguns browsers permitem preencher automaticamente a maior parte dos campos de um formulário com informação do histórico de preenchimento de outros formulários que o utilizador já tenha preenchido.

Para que isto funcione, basta usar os atributos name e autocomplete de modo a coincidir com o tipo de dados que o browser entende que estão a ser pedidos.

<form>
	<label>Nome: <input type="text" name="name" autocomplete="name" /></label>
	<label>E-Mail: <input type="email" name="email" autocomplete="email" /></label>
	<input type="submit" value="OK" />
</form>

Lista de valores recomendados para usar nos atributos name e autocomplete

Desativar o início do preenchimento em maiúsculas

Também em dispositivos móveis, alguns teclados têm uma funcionalidade que permite automaticamente começar a escrever em todos os campos com uma maiúscula. Apesar de ser útil em texto corrido, às vezes pode ser aborrecido quando estamos a preencher um endereço de e-mail e o teclado começa com um caractere maiúsculo quando o que queremos é escrever o e-mail todo em minúsculas.

Uma forma de melhorar um pouco essa experiência e não aborrecer os utilizadores é usar o atributo autocapitalize="off" nos campos que normalmente não deverão ser preenchidos começando com uma maiúscula.

<form>
	<label>Nome: <input type="text" name="nome" /></label>
	<label>E-Mail: <input type="email" name="email" autocapitalize="off" /></label>
	<input type="submit" value="OK" />
</form>

Desativar as mensagens de erros inline do browser

Alguns browsers recentes usam um sistema próprio de validação inline de alguns campos, como por exemplo a validação de endereços de e-mail.

Se quisermos ter o controlo sobre as nossas próprias mensagens de erro, podemos desativar essa funcionalidade no formulário (não funciona apenas para um dos campos) usando os atributos novalidate e formnovalidate.

O formnovalidate deve ser usado no elemento <input> o que permite ter um botão que faz a validação do formulário e outro que não faz a validação.

<form >
	<label>E-Mail: <input type="email" name="email" /></label>
	<input type="submit" value="OK com validação" />
	<input type="submit" formnovalidate value="OK sem validação" />
</form>

O novalidate deve ser usado no elemento <form> e faz com que não seja feita qualquer validação pelo browser de nenhum dos campos do formulário após o submit.

<form novalidate>
	<label>E-Mail: <input type="email" name="email" /></label>
	<input type="submit" value="OK" />
</form>

Definir textos de ajuda/exemplo pré-preenchidos

Pode (e deve-se) usar o atributo placeholder nos campos de texto para os pré-preencher com algum conteúdo que ajude o utilizador a perceber sem equívocos o que deve escrever nesse campo. Em termos de acessibilidade, é também uma boa ajuda para utilizadores que navegam com sistemas assistivos.

<form>
	<label>E-Mail: <input type="email" placeholder="O seu endereço de e-mail" name="email" /></label>
	<input type="submit" value="OK" />
</form>

Marcar os campos obrigatórios

O atributo required funciona nos browsers que fazem a validação inline do preenchimento dos formulários e permite dar uma mensagem de aviso se o utilizador não preencher os campos obrigatórios.

<form>
	<label>E-Mail <abbr title="campo obrigatório">*</abbr>
	<input type="email" required name="email" /></label>
	<input type="submit" value="OK" />
</form>

Nota: A validação através do atributo required não funciona de raíz em todos os browsers, por isso será sempre necessário garantir uma validação do lado do servidor (server-side) nos casos em que o browser não faz a validação.

Pontos de verificação

Estes são exemplos de alguns dos pontos principais de avaliação que equipa de usabilidade vai verificar e qual a sua classificação.

Tipo de Problema Classificação (saber mais) Observações
Ao clicar no botão de submit, o formulário não funciona Crítico
O submit dos dados do formulário não funciona usando a tecla ENTER Crítico
Não é possível distinguir claramente os campos de preenchimento obrigatório Problema Grave
Inexistência de qualquer tipo de feedback ao utilizador quando ocorrem erros Crítico
As mensagens de erro não permitem saber o que aconteceu nem como corrigir o problema Crítico
Os campos que contêm erros não têm indicação visual de que têm erros Crítico
Estão a ser usadas mensagens de sucesso para todos os campos de preenchimento do formulário Problema
Há campos que não têm nenhuma <label> associada Problema
Não existe uma diferenciação clara entre a ação principal e as ações secundárias Crítico
Estão a ser usadas checkboxes com JavaScript para simular o comportamento de radio-buttons Crítico

Nota: Esta não é uma lista exaustiva, apenas um exemplo. Podem existir mais problemas identificados na avaliação de usabilidade ao website que não estão listados aqui. Cada website tem as suas particularidades e contextos de utilização diferentes.

Referências

  1. Web form design - Livro com recomendações e dicas de usabilidade sobre formulários
  2. Sensible forms: a form usability checklist
  3. How to indicate required or optional form fields
  4. Error messages design gallery
  5. Adobe's error messages
  6. Inline validation in web forms
  7. Top, right or left aligned form labels
  8. Labels within inputs
  9. Call-to-action buttons
  10. Good call-to-action buttons
  11. Reset and cancel buttons
  12. Primary and secondary actions in web forms
  13. HTML input tag - Todos os atributos que a tag <input> aceita.
  14. Input Types Sandbox - Ferramenta para testar validações em campos de formulários.

Mais dicas e recomendações

Uma vez que as regras de usabilidade e acessibilidade contemplam muitos pontos em comum, além das dicas e recomendações acima, devem também ser tidas em conta as recomendações de acessibilidade disponíveis na secção de Acessibilidade do SAPO UX.

Layout e Legibilidade

Pesquisa

Ajuda

Feedback e Erros

Tarefas e Workflows

Responsive

Performance

Redes Sociais