Categorias
Formação Opinião

Níveis de Teste, Tipos de Teste e Execução de Testes – Descubra as Diferenças

Na última década assistiu-se a uma evolução muito significativa da indústria de testes de software, que deu lugar a múltiplas novas oportunidades, aumentando a relevância desta área para as organizações. É cada vez mais importante garantir o desempenho eficaz das aplicações e dos testes de software, certificando-nos que essas aplicações ou programas são executados com o menor número possível de falhas. 

Estas garantias assentam na definição de uma série de atividades que conduzem à execução dos Testes: o Ciclo de Vida de Testes de Software (STLC – Software Testing Life Cycle). Este procedimento identifica quais as diversas fases dos testes de software e quando devem ser realizadas e concluídas. No STLC cada atividade é executada de forma planeada e sistematizada e cada fase tem objetivos e entregáveis diferentes. 

Mesmo a nível dos profissionais da área de Testes de Software, com a evolução já referida, existe por vezes uma certa confusão sobre algumas das componentes que fazem parte deste ciclo, assim como as competências e atividades que eles próprios, ou os colegas, estão capacitados para executar. 

Vamos por isso esclarecer resumidamente o que são três conceitos essenciais: Níveis de Teste, Tipos de Teste e Execução de Testes. 

Níveis de Teste

Segundo a ISTQB® (International Software Testing Qualifications Board), os níveis de teste são grupos de atividades organizadas e geridas em conjunto. Cada nível é uma instância do processo de teste e estão divididos da seguinte forma:

Teste de Componentes (Component Testing)

O Teste de Componentes ou teste unitário ou de módulos, verifica o funcionamento da unidade mais pequena do código de uma aplicação, independentemente da sua interação com outras partes do código. 

Geralmente, este nível de teste é realizado isoladamente do resto do sistema. Podem utilizar-se objetos simulados, virtualização de serviços, simuladores ou controladores. O teste unitário pode abranger funcionalidades (por exemplo: correção de cálculos), características não funcionais (por exemplo, procura de fugas de memória) e propriedades estruturais (por exemplo: teste de decisões).

Este nível de teste é efectuado habitualmente pelo programador que desenvolveu o código. Os testes unitários são simples e rápidos, mas não são suficientes. É importante que sejam complementados com outros níveis de teste.

Integração (Integration Testing)

Quando de está a preparar os testes para um projeto, é comum os testes de integração serem esquecidos. Mesmo testando separadamente dois componentes que interagem entre si, usando mocks, virtualização etc, e concluindo que ambas estão a funcionar como esperado, é possível que os dois componentes não funcionem bem em conjunto.

Os testes de integração são mais complexos de desenvolver, manter e mais lentos que os testes de componentes, dado que testam funcionalidades inteiras, muitas vezes, com persistência de dados. 

Realizar testes de integração não é testar a lógica dos componentes, mas testar como os diferentes componentes interagem entre si (testes de integração de componentes).

Esta mesma lógica de teste de integração aplica-se a quaisquer elementos que possam ser integrados. Por exemplo, quando temos dois sistemas integrados também devemos endereçar a interação entre estes sistemas recorrendo a testes de integração de sistemas.

Teste de Sistema (System Testing)

O teste de sistema centra-se no comportamento e nas capacidades de todo um sistema ou produto. Consideram-se as execuções das tarefas do sistema de ponta a ponta (End to End Test) e os comportamentos não funcionais exibidos ao executar tais tarefas. 

Este nível de teste produz informações que são usadas pelos stakeholders para a tomada de decisões. Pode também satisfazer requisitos ou obrigações normativas e regulamentares. É comum implementar-se este nível de teste, pois simula a experiência do utilizador. É por isso de extrema importância, dado que são os testes mais próximos do que o utilizador final vai encontrar ao usar a aplicação.

Tipicamente, este nível de teste é realizado no ambiente que antecede a produção. O teste de sistema deve focar-se no comportamento geral, funcional e não funcional, de ponta a ponta do sistema, como um todo.

Teste de Aceitação

O teste de aceitação, tal como o teste de sistema, centra-se no comportamento e capacidade de todo um sistema ou produto. Pode produzir informações para avaliar a situação do sistema, no sentido da sua implementação e utilização pelo cliente final (utilizador). O teste de aceitação pode também satisfazer requisitos, obrigações normativas ou regulamentos.

As formas mais comuns de testes de aceitação incluem o seguinte:

  • Teste de aceitação de utilizador (UAT) 

Consiste em colocar o sistema num ambiente controlado, para que o utilizador da aplicação faça um “TestDrive”. É aqui que podemos recolher informações sobre se o sistema corresponde aos requisitos e se o utilizador consegue executar os processos de negócio com o mínimo de dificuldade, custo e risco.

  • Teste de aceitação operacional (OAT)

Esta forma de teste de aceitação é focada na equipa de administração de sistemas. Realizado igualmente num ambiente controlado, pode incluir testes como backup, instalação, recuperação de desastres, gestão de utilizadores, tarefas de manutenção, vulnerabilidade, segurança e teste de performance. 

  • Teste de aceitação contratual e de regulamentação (Contractual and Regulatory Acceptance Testing)

O teste de aceitação contratual é realizado com base nos critérios de aceitação de um contrato para desenvolver softwares específicos.

  • Teste Alfa e Beta

O Teste Alfa é uma forma de teste de aceitação, no entanto, é realizado de uma forma não planeada, disponibilizando o sistema dentro da infraestrutura da empresa que desenvolveu o produto e para um pequeno grupo de pessoas. Essas pessoas são geralmente membros da organização e também do cliente mas não da equipa de desenvolvimento. O objetivo é que essas pessoas forneçam inputs sobre a situação atual do sistema.

O Teste Beta é realizado também de forma não planeada, e pode ser executado por um grande número de pessoas desconhecidas. O sistema é executado na infraestrutura dessas pessoas, que tipicamente não fazem parte da equipa ou da empresa que efetuou o seu desenvolvimento. É utilizado como uma forma de aceitação externa, possibilitando avaliar o feedback do mercado.

Tipos de Teste

Um tipo de teste é um grupo de atividades, destinado a testar características específicas de um sistema de software, ou parte, com base em objetivos de teste específicos.

Os principais tipos de teste são: 

Teste Funcional

O teste funcional envolve testes que avaliam as funcionalidades que o sistema deve executar. Os requisitos funcionais podem ser descritos, por exemplo, como especificações de requisitos de negócio, user stories, casos de uso ou especificações funcionais, podendo ainda não estar documentados. O projeto e a execução de testes funcionais podem envolver o recurso a profissionais especializados numa determinada área ou competência, como o conhecimento específico de um problema de negócio que o software resolve, ou o papel específico que o software desempenha ou deverá desempenhar.

O teste funcional é o teste de “o que” o sistema deve fazer.

Teste Não Funcional

Os testes não funcionais avaliam as características dos sistemas e software, como a usabilidade, eficiência de desempenho ou segurança. Pode consultar a norma [ISO25010] que regula os requisitos e avaliação dos sistemas e modelos de qualidade de software

O teste não funcional é o teste de “quão bem” o sistema deve comportar-se.

Tipos e Níveis de Teste

É possível executar qualquer um dos tipos de teste  em qualquer nível de teste, mas não é necessário ter todos os tipos de testes representados em todos os níveis.

Teste Manual e Teste de Automação

Depois da descrição dos principais tipos e fases de teste, avançamos para as suas forma de execução.

Podemos executar os teste de duas formas, manual ou automatizada.

Teste Manual

Tal como o nome indica, o Teste Manual é a forma de uma aplicação ser testada por um ser humano, manualmente. Um especialista em garantia de qualidade (tester) que executa testes manuais garante que a aplicação está a funcionar corretamente, seguindo as condições descritas nos casos de teste.O tester avalia o design, a funcionalidade e o desempenho da aplicação, verificando ainda outros elementos. Os testes manuais são mais recomendados quando se utilizam testes exploratórios, testes de usabilidade e testes de aceitação.

Teste de Automação

Os Testes Automáticos implicam o desenvolvimento de testes programados para serem executados automaticamente, comparando os resultados reais com os resultados esperados. Os Testes Automáticos são executados com o auxílio de ferramentas, scripts e software, sendo principalmente recomendados para realizar testes de regressão, testes de carga e testes de desempenho.

Conclusão

Esperamos ter contribuído para um maior esclarecimento entre os três tópicos abordados. 

Relembrando:

  • O Teste manual é um Teste manual; já o Teste Funcional, pode ser manual ou automático;
  • O teste unitário pode ser um teste funcional (tal como os outros níveis de teste)
  • Reduzir o custo e o tempo para a conclusão de um projeto, com qualidade, não pode depender apenas de testes automáticos. É imprescindível realizar a combinação certa entre testes manuais e testes automáticos. Igualmente fulcral, é encontrar um equilíbrio na distribuição dos tipos de testes nos níveis de teste para obter os melhores resultados.

Considere por favor que, para o seu projeto, não é necessário realizar todos os testes que mencionámos aqui. Os testes que deverá executar, dependem do tipo de software que se encontra a desenvolver e de outros fatores, que devem depender de uma análise atenta e cuidada. 

RECEBER OFERTAS DE FORMAÇÃO OLISIPO: SOFTWARE TESTING E QA

Categorias
Olisipo Way

Novidades do Grupo Olisipo Way

NEWSLETTERS

Setembro 2021

Junho 2021

Abril 2021

Fevereiro 2021

Novembro 2020

Outubro 2020

WEBSITES

www.olisipoway.com

Categorias
Formação Opinião

Os pilares de IT Governance

Quando falamos em IT Governance, referimo-nos a uma conjunto de princípios e frameworks fundamentais que alinham a gestão de TI com o negócio. Para alcançar os melhores resultados e conseguir essa coesão, há um conjunto de pilares e práticas a seguir.

O que é IT Governance?

A direção da organização (ou Corporate Governance) é composta por diferentes equipas e departamentos essenciais ao seu sucesso.

De modo a alinhar a estratégia do negócio com a gestão de informação e tecnologia, surge a estrutura de IT Governance dentro de Corporate Governance. À semelhança de outras áreas, esta tem o seu próprio conjunto de conceitos e frameworks com o objetivo de otimizar a gestão de TI.

São estas frameworks que permitem à organização gerir os riscos em TI de forma efetiva, enquanto se observam quadros legais e fazem cumprir regulamentações. Um desses modelos de gestão é a COBIT 2019, muito utilizada a nível internacional e focada na gestão de riscos, segurança e administração da informação.

Em particular, esta framework evolui de forma constante para manter os gestores a par das estratégias e tecnologias em IT Governance. Desta forma, consegue garantir melhor alinhamento com as práticas mais recentes e assim entregar resultados relevantes.

5 pilares

Como outros departamentos essenciais à organização, também a IT Governance é regida pelos seus próprios princípios e boas práticas. O contributo deste trabalho para a organização deve ser visto pelas chefias como um centro de serviços, ao invés de centro de custos.

No fundo, há alguns pilares essenciais ao departamento e diferentes ferramentas de referência para se trabalhar em cada um.

1. Serviço

Como o próprio nome indica, este é o pilar responsável por gerir os serviços de tecnologia. Uma das frameworks mais utilizadas é a ITIL® (Information Technology Infrastructure Library), que se assume como uma biblioteca de processos que contribuem para a execução do controlo definido, no seio da COBIT.

Quando a empresa implementa as formas de trabalho com ITIL, há uma maturação na forma como se organizam e seguem processos, enquanto se reduzem custos e se aumenta a eficiência operacional. O objetivo final é tornar alguns processos e práticas como modelo ou standard, agilizando o serviço e orientando-o para as metas do negócio.

2. Projeto

Há diferentes ferramentas para alcançar uma gestão de projetos transversal à organização, que podem ser alinhadas com os princípios de COBIT.

Neste âmbito, o PMBOK fornece uma forma de padronizar as boas práticas relacionadas com a gestão de qualquer tipo de projeto. Quando as equipas se alinham pelos mesmos métodos de organização, produção e entrega, é possível cumprir metas com maior desenvoltura e alcançar melhores resultados.

3. Nível de Desenvolvimento

Este pilar é fundamental para garantir a qualidade do software que está em desenvolvimento. Utilizando a ferramenta CMMI, é possível reduzir falhas que não foram identificadas antes em testes ou novas alterações, diminuir riscos, melhorar a produtividade e assertividade do projeto.

4. Processos

Considerar a relevância que a tecnologia tem na criação de valor da empresa é fundamental para alcançar os objetivos da organização.

Para isso, é necessário manter os processos do negócio atualizados e em bom funcionamento, através de ferramentas que permitam identificar, desenhar, executar, medir e controlar os procedimentos.

5. Segurança da Informação

Num mundo onde os ciber ataques se tornam mais frequentes, é fulcral garantir a segurança da informação na organização. Cada vez mais as empresas devem dar atenção ao modo como gerem e protegem os seus dados.

Neste âmbito, a norma ISO/IEC 27001 oferece as abordagens, normas, métodos e técnicas que permitem gerir eficazmente um Sistema de Gestão de Segurança da Informação (SGIS), essencial ao funcionamento da organização.

Para capacitar as equipas responsáveis e melhorar a gestão de informação, a organização deve apostar na formação dos seus profissionais. Desta forma, é possível implementar as práticas mais atuais no setor e alcançar melhores resultados.

O departamento responsável pelas práticas de IT Governance será essencial para que a gestão de informação esteja alinhada com os objetivos do negócio. Através de estratégias mensuráveis implementadas nos processos de trabalho e do uso de ferramentas específicas, cada pilar de IT Governance contribui para o bom resultado do negócio e entrega maior valor.

RECEBER OFERTAS DE FORMAÇÃO: IT GOVERNANCE

Categorias
Equipa Inovação Opinião

O impacto do trabalho remoto em IT

O trabalho remoto em TI assumiu-se como regra durante a pandemia e foi responsável por transformar o setor. Seja pelo destaque de certas funções, pela adoção permanente deste modelo ou pelas possibilidades que representa para organizações e profissionais, o teletrabalho trouxe várias mudanças ao mercado.

Adoção do trabalho remoto em TI

Impulsionado pela pandemia de COVID-19 em 2020, o teletrabalho estendeu-se a uma grande parte das organizações. Por força das circunstâncias, este modelo de trabalho assumiu-se como uma forma de continuar a produzir e de manter o mercado em funcionamento, colocando equipas a colaborar à distância e transformando o dia a dia profissional.

A evolução tecnológica permitiu levar a digitalização dos negócios mais longe, uma tendência que se mantém em 2021. Do mesmo modo, as ferramentas de produtividade digitais trouxeram a oportunidade de gerir equipas remotas, promover a comunicação online e alcançar bons resultados, mantendo a organização em pleno funcionamento.

Assim, esta forma de trabalhar à distância estendeu-se a diversas áreas de atuação e o mercado das TI não foi exceção. Sobretudo, há uma grande percentagem de trabalho desenvolvido inteiramente no digital e com pouca necessidade de reunir presencialmente para levar o trabalho a bom porto.

Ao mesmo tempo, como refere Beatriz Matias, Talent Acquisition Team Leader da Olisipo, “as empresas têm mesmo de se adaptar a esta nova realidade, ou ter dificuldade em reter talentos”. A adoção transversal do teletrabalho revelou ter um papel muito importante para o futuro e sucesso das organizações.

O boom em várias áreas

Com a adoção do teletrabalho por parte de muitos mercados e indústrias, assistimos tanto à oferta crescente de oportunidades certas funções como à procura de maior flexibilidade por parte dos profissionais.

Por um lado, a crescente digitalização dos negócios traz uma necessidade de desenvolver as plataformas de trabalho virtual, software e hardware para alcançar todo o seu potencial. Neste âmbito há funções com maior procura no mercado de TI por serem fundamentais para assegurar o pleno funcionamento digital das organizações:

  • Programação e desenvolvimento
  • Gestão de projetos
  • Software Testing e QA
  • Cibersegurança e gestão de dados

Por outro lado, a capacidade de mostrar ótimos resultados mesmo à distância trouxe aos profissionais de TI a vontade se manterem em trabalho remoto (de forma parcial ou total). “Temos de abrir aqui um bocadinho os horizontes, temos tecnologias que permitem realizar teletrabalho”, diz Beatriz. Face a esta oportunidade, um dos benefícios para quem procura mudar de projeto profissional é a flexibilidade oferecida pela empresa.

Os profissionais que procuram esse benefício revelam que, cada vez mais, valorizam um bom equilíbrio entre o trabalho e a vida pessoal, que o teletrabalho lhes tem trazido. Como diz Beatriz, o “salário emocional é tão ou mais importante que o financeiro para os candidatos”.

Além disso, outro dos fatores mais relevantes prende-se com o foco e produtividade. Muitas tarefas requerem concentração, então trabalhar num espaço mais confortável e silencioso (como a própria casa) promove precisamente essa dedicação. Como consequência, os resultados dos colaboradores melhoram e a organização beneficia desse crescimento concertado.

Adaptação para reter talento

A escassez de talento nas TI é um desafio constante para as empresas. Há uma procura que supera a oferta e, por essa razão, as organizações devem perceber o impacto que o teletrabalho tem para a atração e retenção de talento.

Como referimos antes, os profissionais procuram cada vez mais empresas que se adaptem a novas exigências e tendências. Nesse sentido é essencial que a organização demonstre essa abertura e evidencie um espírito inovador, promovendo a retenção de talento.

Segundo Beatriz, oferecer condições vantajosas para manter o trabalho remoto em TI é uma estratégia relevante para o funcionamento da organização. Este fator assume-se como elemento diferenciador face à concorrência, que ainda não mostra abertura para essa implementação.

As tecnologias permitem, cada vez mais, adotar o teletrabalho como modelo para uma série de equipas e funções. Há inúmeras aplicações, plataformas e programas que contribuem para a produtividade, gestão e comunicação.

Além disso, através de formação contínua os profissionais adquirem as competências essenciais para colmatar eventuais lacunas. Deste modo, as equipas são preparadas para a nova realidade de trabalho e contribui-se para ótimos resultados e projetos de qualidade na organização.

As mudanças constantes no mercado de trabalho trazem desafios acrescidos à contratação e retenção de talento. O trabalho remoto em TI veio impactar a procura por certas funções, fulcrais à digitalização dos negócios. Ao mesmo tempo, pôs em evidência o que os colaboradores mais valorizam e onde o “salário emocional” ganha peso.

Apostar na oferta de teletrabalho é um fator de diferenciação, que coloca as organizações que adotam em grande vantagem no mercado.