e
isso é o podcast Fronteiras da
engenharia de software o podcast para
refletir sobre o presente e o futuro da
nossa área este podcast tem o apoio da
Azul innovation empresa que cria
tecnologia impulsiona o crescimento
exponencial do
[Música]
e
hoje no Fronteiras da engenharia de
software vamos conversar com Simone
Sousa professora do
icmc-usp o tema do episódio de hoje será
teste de software Tudo bem Simone você
pode se apresentar para as pessoas que
não escutam
o Olá Dolphin colegas e o Agradeço o
convite é um prazer estar aqui
conversando com vocês eu chamo Simone do
Rocio seja de Souza Sou professora da
área de engenharia de software do
Instituto de Ciências Matemáticas e de
computação da USP São Carlos quando um
pouquinho de mim é eu fiz minha
graduação na Universidade Estadual de
Ponta Grossa Paraná e logo que eu
finalizei a graduação em 1990 eu passei
no concurso para ser docente nessa
Universidade na época não era necessário
ter mestrado ou doutorado uma carreira
docente Eu senti falta de um
aperfeiçoamento acadêmico isso fez com
que buscasse o gastar foi quando eu
conheci uma e sem ser e o professor José
Carlos Maldonado que foi meu orientador
bem estar nessa época
1994 foi quando comecei a aprender mais
sobre teste de Tokyo e gostar da área
que tem um mestrado sobre avaliação
experimental de critérios de teste de só
na época Ainda não existiu a engenharia
de software experimental mas a gente
trabalhava auxilar aí só valendo o custo
esforço e eficácia de critérios no
doutorado continua investigando o teste
de software mas olhando questões e peste
para quem especificação formal de
sistemas reativos também Sob orientação
do professor Mauro Bonna quando eu
finalizei a pós-graduação e no ano 2000
retornei para o EPG e comecei minhas
pesquisas sobre teste de software
aplicável programas concorrentes e
Paralelos toda essa trajetória na UEPG
mês e você ficou realizado em parceria
com meu esposo Professor Paulo Sérgio
Lopes de Souza que pesquisa na área de
computação de Alto desempenho pois a
pesquisa de teste sofre nessa área foi
bem natural para mim após um tempo na
UEPG em 2005 resolvemos pescar concurso
umas CNC e teremos a oportunidade de
voltarmos para cá como professores onde
estamos até hoje eu a turma o
departamento de sistemas de computação
em minhas pesquisas junto ao laboratório
de engenharia de software minhas
pesquisas concentram-se nada que impeça
de sócio em relação a proposição se
técnicas mistérios ferramentas e
avaliação experimental Vai que vai dar
não a trajetória vem legal Simone de
forma geral qualquer pessoa que começa a
programar ela começa a testar aquilo que
ela programa ou seja executar aquilo que
ela programou Mas se a gente pensar no
contexto da engenharia de software ou
seja o desenvolvimento de uma forma
organizada e sistemática como é que a
gente pode definir teste de software e
quais os principais conceitos associadas
não Ingrid É de fato o testar de criação
rápida de quem problema né mas assim tem
um pequeno equívoco que as pessoas
pensam que estão testando corretamente
né e veja se o teste foi realizado para
mostrar que programa funciona é isso não
é testar então sim pra entender
atividades de teste e nós precisamos
inverter esse pensamento né e tem um sax
estamos para encontrar defeitos e não
para mostrar o que quisermos Está
correto né então um teste bem-sucedido é
aquele que enquanto o efeito novo os era
uma falha ainda não encontraram ele tem
várias definições mas eu gosto da
definição que diz que teste uma
atividade de garantia de qualidade Elisa
mostrar que o programa executa
corretamente as funções pretendidas
Então é isso é importante selecionar
bons casos de teste E para isso os
conceitos Associados envolvem técnicas e
peche as quais relacionam-se com as
informações de origem para gerar os
testes por exemplo especificação ocorre
outro conceito importante associada ao
conceito de critério de teste critérios
ele Sistema X o processo de geração ou
seleção de casos de peças auxiliando a
decidir quando parar atividade 10 por
exemplo critério de teste poderia ser
testar todos os comandos do colégio aí
se eu conseguir ao menos um caso de
teste fazer cor e o satisfizesse
critério e posso encerrar o processo de
teste e assim com isso a gente pode
medir a produção das atividades de teste
e garantir a sua qualidade é isso os
critérios utilização que chamamos
requisitos de teste a ser encoberto
existem vários critérios cada um com sua
eficácia em revelar defeitos e custo
associado estratégias e cresce quando
ser definidas de modo a contemplar mais
seu critério e dependendo do tempo e
recursos disponíveis podem considerar
critério mais caros porém mais eficaz
está reclamar deles e Simone como é que
o teste de software então aparece no
desenvolvimento de software um que
momento nós temos que pensar nisso
principalmente se estamos falando do que
a maioria ou que grande parte das
empresas hoje em dia usam que são os
métodos de desenvolvimento de software
ágil Quais são os papéis envolvidos no
desenvolvimento de software para quem
faz testes legal essa é uma ótima
pergunta Adolfo é é como tirar desse
elas o código Uma Lição de que estamos
pensar em péssimo momento da
qualificação do sócio e de fato Nossa
pegamos sucesso e quando temos o código
a ser testado Por que a trate ela é uma
atividade dinâmica igual a execução do
código entretanto nós devemos pensar em
tese no início do desenvolvimento quando
estamos definindo os requisitos do
software nesse momento é possível
realizar o planejamento da atividade de
teste ou o teste design e a partir da
especificação dos requisitos podemos
pensar em cenários de teste que deve ser
considerados essa atividade é importante
Inclusive a rever os requisitos estão
claramente definidos no contexto do
desenvolvimento ágil isso não é
diferente tem seu papel de Peters O que
as e foco em projetar os testes enquanto
a equipe deve projeto a solução está
linha uma proposta interessante é um PT
de não ter sido em diversos ou
desenvolvimento orientado a testes no
qual o objetivo descrever os casos GPS e
é mais relacionada a quantificação do
que a fase de requisitos Mas é uma
estratégia assim bem interessante
desafiadora no qual o projeto é se os
casos de teste e depois implementa o
código que passa nos pés isso faz com
que se Garanta que as funcionalidades
foram testados e com relação aos papéis
envolvidos na atividade de teste existe
em geral pessoal dedicado à atividade de
teste denominado então é como eu falei
anteriormente e pedestres do que as e
projeto peças trabalhar seus próprios e
pode ser utilizado pelo cliente Relaxa
mal de teste de aceitação e Vale
ressaltar também que um dos papéis do
bebe o desenvolvedor do código é também
pensar nos pés do seu código porém
também então ele dá ferramentas que
automatizam a execução e avaliação dos
seus pés bom então isso foi mais olhando
então para atividade de teste como um
todo né E quando a gente olha para a
área de testes a gente tem diferentes
formas de classificar a teste de
software a gente pode pensar por exemplo
o que que a gente tá dando né você é
apenas uma classe o sistema como um todo
gente usa ou não o código para elaborar
a casa de teste ou que aspecto que a
gente está testando né como por exemplo
uma funcionalidade ou performance Neto
já tinha falado né questão do desempenho
que poderia por favor explicar Então
essas formas de classificação e como ela
se relacionam
5S diversas formas de classificar o
teste sofre e se relaciona com algumas
questões que precisam ser respondidas
quando eu tirar ele dessa está sendo
planejado então questões como quando
testar o quis testar Quando parar de
testar e qual que é o objetivo dos
Testes então assim o quando testar ele
tem a ver com o nível de peça ser
realizado e que ele pode ser teste de
unidade né quando nós consideramos as
unidades de código que seria em módulos
ou classes E aí um teste de unidade
normalmente é feita pelo próprio
desenvolvedor é outro nível a integração
que tem a ver com garantir que as
unidades testadas funciona bem quando
estão colocadas juntas Então se teste
olha para cá comunicação entre as
unidades por exemplo chamada de funções
Alberto dos passagem de parâmetros E aí
o ideal é que as unidades testadas seja
integrada seguindo algumas estratégias
que favoreçam um bom teste de integração
e por último um outro nível de teste eu
peço de sistema o qual tem o objetivo de
avaliar essas funcionalidades do
software estão funcionando corretamente
no ambiente em que o software foi
projetado não olha estrutura interna do
soft mas coloca bastante requisitos
não-funcionais o performance
portabilidade dos habilidade deficiência
entre outros tipos de testes que podem
ser realizados a nem sempre utilizamos o
código para elaborar o espaço de teste
dos cabos até expoentes elaborados a
partir de informações a especificação
também e isso dependerá estratégicas
empregada para a realização da atividade
de teste e a questão sobre o quê o
outro está tem a ver com o objetivo da
atividade de teste sabemos que sempre o
proposta garante a qualidade do software
Mas dependendo do tipo de aplicação
alguns tipos de testes são fundamentais
por exemplo é uma aplicação web é
necessário elaborar desce que a Vale
além da funcionalidade aspectos de
disponibilidade e confiabilidade por
outro lado se estivermos considerando um
sistema crítico por exemplo o controle
de pressão de uma caldeira importante
avaliar a eficiência e confiabilidade do
sistema teto e são esclarecimentos sobre
essa questão de
testes unitários e de integração então
sempre quando a gente vê a literatura o
exemplo de teste unitário é uma classe
isolada que a gente olha o corpo dos
métodos e os métodos não tem chamadas
alguma para alguma outra classe bastante
cansar nosso sistema real o número de
classes número de métodos onde isso
acontece é muito pequeno na prática é tu
a integração ou teste de unidade é
quando a gente só simula o comportamento
das outras classes e métodos dos quais a
gente Depende onde é que fica sem
limites sem o que é o teste de unidade
que quer o teste integração se de forma
geral existe bastante
comunicação Independência entre entre as
partes e seus métodos legal e isso é
verdade né a integração e comunicação
existe e a estratégia é essa que você
coletou ele solar um dar né de alguma
forma eu quero ver preocupava-se unidade
então eu simulo entradas valores para
que ela funcione também seguro quem está
recebendo essas informações então o
propósito é a gente isolar para testar
que habilitar ou que a mente essa
unidade pode ser o conjunto de métodos
um conjunto de funções ai vai ser um
objetivo do desenvolvedor né desenvolver
uma funcionalidade e ela tem um grupo de
de classes né informações então é o
cenário então Conquista utilidade
depende muito e como a equipe ver
atividade de teste né a nossa academia
Nossa vemos da maneira que você comentou
uma unidade Apesar dela ter chamadas ela
é considerado isoladamente né garanto o
seu funcionamento e depois eu vou
agregando as outras unidades de moda
mostrar esse teste de integração e
interação entre as unidades É bem esse
conceito em mesmo que você comentou
então Simone você acabou já falando um
pouco né sobre casos e testes Mas
falando novamente não é um ponto-chave
em teste de software elaboração de casos
de teste e saber o quão bons eles são o
que seria um bom caso de teste e como
elaboramos bons casos de teste isso
depende de um projeto em questão empresa
ou existe uma definição geral ok Google
não precisa costumamos dizer que o
sucesso da atividade peça e se relaciona
com a escolha de bons casos de pectus
bom então bom com as BTS aquele que
encontra um defeito ainda não revelar
sabemos que o espaço de valores de
entrada para testar o programa atendeu
infinito e muitos muitos deles vão ter o
mesmo comportamento quando executar
então seu desafio que está dura escolher
Aquele caso de teste é capaz de revelar
um defeito a isso ele pode se apoiar
então das técnicas esferas mas nem
sempre isso é suficiente
então assim eu diria que a elaboração de
bons casos de peças Depende de uma boa
dose de intuição e de pensar fora da
Caixa ou seja pensar em situações não
previstas ou não inspiradas a
experiência com uma textura e até como
desenvolvedor são rudes a projetar bons
caso de e um ponto que você já tinha me
ensinado também essa questão de
automação de testes né E hoje em dia
quando a gente fala de teste em projetos
né Isso aí é meio que muito comum ouvir
isso né implica conhecer todo um
ferramental eu poderia então dá para nós
uma visão Geral do que que pode ser
automatizado e das ferramentas
utilizadas para isso assim sem dúvida a
automatização é essencial é porque a
atividade humana é suscetível engano a
então se eu quero avaliar a qualidade de
um produto eu tenho que realizar uma
atividade teste com qualidade também né
então ferramenta que elas colaboram
nesse sentido a gente consegue
automatizar eu diria parcialmente as
atividades porque ainda depende da
interferência do testador hoje a gente
fala de automatizar utilizam técnicas de
algoritmos genéticos né automatizar
geração automática de dados de teste mas
ainda não existem algoritmos tão
eficientes quanto a a capacidade humana
de gerar bons testes então ainda tem
feito estudos nessa direção né mas assim
a gente tem utilizado o ferramentas e
vão automatizar os aspectos e o qualquer
coisa aplicação do critério de 10 tipo
de avaliar a evolução da actividade de
pesca o quanto do copo pode que foi
coberto ou não pelo processo de Décio
ajudar na decisão né de parar o processo
de teste e outras informações que forem
relevantes para o preto e teste né uma
ferramenta bastante empregada que
automatiza o caso de teste é a famosa
veio Unity né e similares né E que ela
funciona com outras ferramentas
avaliando o progresso para atividade de
até a grande vantagem da gente utilizar
a automatização hoje dar um código de
teste e a organização na busca de teste
o de executar o processo de execução e e
também avaliar a cobertura do colégio e
ele também é bastante bastante útil para
aplicação de tdd o mesmo processo
tradicional de teste né Esqueci
Framework o réu a gente fala do Reino
Unido é o mais conhecido mas ele tem
variações de acordo com a linguagem de
programação para eles Oi gente as
ferramentas elas são muito ligadas ao
linguagem de programação Então esse é o
desafio é isso é toda vez que eu tenho
uma nova maneira de eu programar uma
nova linguagem as ferramentas elas
precisam atender às características da
linguagem né lá no comentário aqui sobre
a qualidade dos casos de pressa
automatizados né a veio muito e
similares elas são considerados a gente
fala de ferramenta na seleção mais um
Framework né e elas não têm assim o
propósito de avaliar de alguma forma a
qualidade do conjunto de caso de teste
não colabora com a purificação desse
espaço de teste e aí por isso um
trabalho relevante avaliar a qualidade
desses testes né ou seja Será que não há
erros no meu teste né então isso é
chamado que a gente chama hoje de pés
smells né E tem sido amplamente
pesquisado atualmente depois as outras
ferramentas úteis você tá algumas que
são ferramentas livres e gratuitas que
podem ser utilizadas na academia ou até
empresas utilizam que são ferramentas de
pé e como por exemplo a e clima a gente
também tem ferramenta que apóia o
gerenciamento da atividade de teste que
acontece ling e a ferramenta Selene O
que é bastante empregada na indústria
porque ela apoia a avaliação do teste
Unidos sistemas e aplicações web existem
também várias outras ferramentas
acadêmicas né aqui só acaba sendo prova
de conceitos são usados em
experimentação e algumas até são usadas
na indústria mas ainda gente precisa de
alguma evolução e até escalabilidade
dessas ferramentas aí Para apoiar a
atividade de teste Simone existem alguns
termos no contexto de teste e são bem
recorrentes que estão sempre aparecendo
por exemplo teste de regressão teste de
desempenho teste de estresse além disso
em pesquisa na área de testes temos
também teste de mutação que até o tinha
visto algumas pessoas usando isso no
mundo real deixarmos assim né não que a
pesquisa não seja mundo real O que
significam esses termos por exemplo o
desempenho e teste de estresse
normalmente são confundidos entre si em
Adolfo uma boa pergunta né esse tema são
bem recorrente as usuais né se eu
perguntar sobre o teste de regressão ele
ele é chamado de um Teste realizado após
o softer sofrer alguma modificação e o
que pode ser considerado um nível de
teste mas os níveis de teste eles se
relacionam com o processo de
desenvolvimento do código o teste de
regressão ele tem a ver com o software
já está em uso e ele precisar de algum
tipo de modificação e uma pessoa se o
nome dessa de regressão ele vem do
Objetivo que aparece o software não
regrediu o termos de funcionalidade
qualidade com as mudanças realizadas não
é seu propósito e normalmente o teste de
regressão ele utiliza os casos de teste
que são produzidos ao longo do
desenvolvimento tematicamente de um
sábio que com o tempo a quantidade de
casos de teste pode ser muito grande e
isso a gente pensar hoje em integração
Oi e que eu custa uma ser alto
utilizamos tecnologias e peço como um
serviço tão grande desafio a seleção é
quais casos de teste utilizar durante o
resto de graça tanto teste de regressão
E então esse algumas técnicas para isso
as quais normalmente se baseia nas
partes modificadas do Sol E aí
Respondendo a sua outra a questão sobre
peça desempenho PS3 eles são
considerados dois tipos de teste sistema
ou seja eles são realizadas quando sofre
está completo e tem o objetivo de
trabalhar o seu comportamento
comportamento no ambiente para o qual
lhe foi desenvolvido hoje cada a cada
vez mais queremos soluções de software
rápidas por exemplo uma aplicação web em
que esperado o tempo de resposta mais
esse valor baixo é o que foi acordado
durante o desenvolvimento então assim
durante o péssimo desempenho Médici com
rápido sofre responde as escolas e já o
teste de stress tem a ver com o volume
de transações que só será capaz de
receber e ainda funcionar adequadamente
um exemplo é uma aplicação web de venda
de ingressos para o show quanto
acreditou que tem menos ingressos que
pessoas interessadas
teremos que várias pessoas vão tentar ao
mesmo tempo a comprar os ingressos no
momento o que assim água sanitária E aí
se volume de transações é uma sobrecarga
no sofre e ele tem que ser capaz de
lidar com essa sobrecarga isso que a
gente também tem um stress ele dá para
essa sobrecarga bom E durante o teste de
stress o software é submetido a altas
cargas de transações tentando simular
essas situações e avalia o comportamento
dos postos alguns atores inclusive
consideram peça de stress Qual é o tipo
de peça desempenho olhando a capacidade
de estabilidade do Sol Último Ponto que
você é considerou né que você comentou
foi sobre o teste de mutação ele é uma
técnica de teste né bastante eu não tive
que é bastante conhecida Mas ela é Oi
gente porque ela utiliza informações
sobre os defeitos mais comuns que podem
ser cometidas pelo programador imagina
que você seja capaz de mostrar que todos
os defeitos que poderiam ser cometidos
no software não existe e assim que essa
técnica mais ou menos funciona ela
realiza isso por meio de pequenas
modificações no sócio a gente chama de
mutações as quais representam esses
possíveis defeitos uma ideia é projetar
casa de peças que mostram esses defeitos
não estão presentes no software O que é
obtido pela diferença de comportamento
entre o software eo só ser mutante é
produzir o problema dela que ela é uma
técnica cara pois ela existe um grande
esforço de teste do testador o qual
precisa lidar com o problema de
equivalência entre o problema original e
eu programado
mas apesar disso não é uma técnica
considerada mais eficaz para revelar
defeitos presentes no solo e aí dar essa
característica por ela ser adaptável a
qualquer nível de teste É por isso aqui
ela é empregada como é que e você
comentou né em outros níveis de teste a
comunidade integração sistemas e até em
outras outros tipos de teste então o
exemplo conhecido é a utilização do
teste de mutação para simular possíveis
ataques e uma rede de modo a avaliar a
segurança de um sócio encontrar
vulnerabilidades nessa história e aí
então as mutações representam os
possíveis ataques e acaba é um software
que você capaz de se defender das mesmas
é uma aplicação interessante do teste de
mutação e tem um efeito bastante
positivo para avaliar a qualidade do
solo deixar perguntar um refinamento
dessa pergunta assim eu tinha feito
aquela pergunta sobre a classificação de
teste né ele tinha mencionado das
dimensões então a gente já falou algumas
aqui teste desempenho a teste de stress
a gente conhece outras dimensões estão
por exemplo testar questões relacionadas
à segurança testar questões relacionadas
com a usabilidade mas eu consigo
imaginar que isso requer um certo
conhecimento
especializado né então alguém que vai
ter e tem que ter o conhecimento sobre
segurança alguém que vai testar os
habilidades tem que ter noções na área
de interação com o usuário Então como
que isso aparece dentro das equipes de
software né acaba que a gente nas
equipes faz as coisas de formas mais
reativas aparecem os problemas e a gente
tem que interessar ou existem pessoas
que são dedicadas para explorar essas
dimensões na hora de testar o soft como
que isso acontece na prática o que ele
seja quando acontece essas
características em geral é a equipe
trabalhando que tem um domínio né que
envolve essas questões então quando a
segurança é um aspecto importante é ele
é somente ela vai ter pessoas
qualificadas para lidar ou testar
segurança na ferramental e acaba
permeando outras várias né a segurança
de sistemas ele não é sua dentro da
engenharia de Top né Ele é uma
é a parte também cobrir olha para as
questões relacionadas à segurança
desempenho também ele vai muito próximo
da questão de sistemas de Alto
desempenho em Sistemas distribuídos
Então você tem razão quando você fala
que você especialista você precisa que
se você está desenvolvendo
sistemas que tem essas características
que precisam ser consideradas as
características é importante que você
tenha profissionais que saibam avaliar
essas características é claro que outras
funções vermelho início com um sistema
web né é importante que ele também tem
algumas características a nisso E aí o
testador ele teria que ser capaz de
olhar isso e confrontar com o requisito
né porque precisa parecer um requisito
de segurança importante né ver a questão
da vulnerabilidade E aí como que eu peço
essas informações mais ou menos
requisitos novamente é isso aqui é
aceito né E aí quando você precisa disso
que vocês tenham mais criticam sistema
de tempo real aí e outros elementos para
você poder testar melhores
excelente bom então nossa próxima
pergunta Justamente esse conta que
comentou que a respeito dos requisitos
né porque a gente tava falando de testes
só que para definir o que testar é
fundamental a gente entender os
requisitos do projeto até eu conheço uma
frase de não ter quer que falou né que
quando a gente não conhece você quiser
sistema ele não pode estar certo ou
errado o máximo que ele pode fazer nos
surpreender tão que que tu pode dizer a
respeito disso como você quiser se devem
ser expressos por que os casos de testes
sejam elaborados muito ruim Exatamente
isso até porque você a realização o
projeto de casa de teste você tem que
ser um parar em algo que você acredita
que esteja correto né então eu lembro
que quando eu pesquisar meu doutorado né
a nossa preocupação era essa né A gente
tem a especificação que representa o
sistema através de modelos né gente
utilizava modelos é uma coisa tirar
teste a partir desses modelos né a outra
é a gente avaliasse para a correta
especificação tem algumas áreas de
pesquisa e até São aplicadas na
indústria que é o teste baseado em
modelos então que você representa a
especificação dos requisitos do modelo
que gera os testes a partir dele você
assumir esse modelo que eu sempre brinco
que tem um colega aqui no departamento
trabalha com isso eu falei mais e se
tiver errado você modelo a luz dessas
vão estar errados que vai na linha
porque você comentou né se eu não tenho
muita certeza sobre os requisitos o que
fizeram eu tenho que aceitar então ele
disse quem trabalha com modelos assumir
Aquele modelo Tá certo então de fato a
atividade de texto é uma carta mente
relacionada com o entendimento do
ceticismo mas uma questão é bastante
interessante é que normalmente têm
trabalho com o planejamento dos Testes
está olhamos para os requisitos esse
olhar para os requisitos acaba validam
os requisitos porque se por e o que
testar uma característica relacionada
tempo de resposta não sistema web Olha
tem tempo tempo de resposta rápido mas
isso é isso que tá escrito requisito não
é suficiente para elaborar um teste eu
ia Então vamos lá vamos melhorar o
requisito né o outro você quiser vocês
estão incompletos ambíguos né Então
essas questões elas acabam se
complementando toma toma uma questão
importante no processo né
importante a mente muitas vezes
requisitos não-funcionais o índice de
qualidade uma sempre estão em e
explícitos no documento de requisitos
nessa questão de segurança na questão da
vulnerabilidade E aí então esta como eu
falei ele tem que ter uma certa intuição
tem que buscar isso e confrontar e
eventualmente até melhorar esse esse
documento de requisitos uma atividade
importante também caminha junto com o
teste é inspeção de software e a
expressão lá pode ocorrer em código ou
na especificação e tô morando porque
você vai foi realizada no processo de
desenvolvimento ela pode chegar esses
problemas né de consistência de
ambiguidade é um funções e melhorar esse
documento a própria descrição de
requisitos ela já é suficiente para
elaborar os casos de teste então pode
ser usado um documento de requisitos ou
até uma especificação mais informal que
é utilizado nessa mensagem uma histórias
né que são adequadas o que o teste ele
costuma fazer é utilizar esses
documentos e a partir dele definir
cenários de uso relacionados a cada
requisito E se ele não conseguir
construir o cenário significa que tá
incompleto Então volta checad melhoria
você que sim então acaba sendo uma
atividade importante de melhoria de
qualidade lá na fase de especificação do
solo e aí o que o teste realiza com
esses cenários é trabalhar com possíveis
situações que estão previstas mas
principalmente as não previstas então
ele ele vai se concentrar em cenário que
a gente chama cenário um rap Oi e aquele
que é esperado que o funcionamento do
requisito e aquele cenário hum rap e as
situações de problemas que podem
acontecer e conhecendo agora os casos de
testes baseados nesses requisitos não
sei que eles são muito importantes né E
quando eu falo de requisito é uma
descrição pessoal requisito o modelo
também oferece informações relevantes
daí pro para elaboração dos casos de
teste e fazendo um garante também a
gente tinha falado né como aparece
atividade de teste né tatuagens né das
formas na forma mais antiga né
tradicional a gente tinha os casos de
uso que era uma especificação completa
dos requisitos não é exatamente o passo
a passo disso servir de input Tanto para
quem fosse elaborar os casos de teste e
como quem fosse desenvolvendo só que
mato a gente tem os requisitos expressos
de uma forma mais informal nas histórias
né que vai ser quebradas em tarefas né
então qual é o momento em que esses
requisitos são de fato
especificados de uma oi oi
completa e métodos ágeis na Em que
momento a gente faz isso pensando no
processo de desenvolvimento
deixou até onde eu intenso né Eu acho
que compõem algumas equipes aqui uma
empresa né que usou a gente a gente
acompanhe trabalho em projetos práticos
na direito só ser com eles e a maneira
que eles atuam acho que seja uma maneira
que é normal né quem do Soajo É sim te
falar você tem uma descrição bem
informal né da funcionalidade e um toque
para você poder trabalhar não sou o
teste mas o desenvolvimento você precisa
extrair mais informação que existe um
trabalho conjunto junto com quem entende
da especificação que pode ser o próprio
pior dentro da equipe ou uma conversa
com o cliente e validar é esse estresse
é um mente é o cliente ele está
acompanhando nessa uma característica do
método ágil ele está acompanhando o
processo desenvolver bom então quando a
equipe de teste que tá trabalhando em
paralelo com aqui que ele desenvolveu um
tempo no mesmo print ela apresenta para
o cliente um aos testes de aceitação que
foram desenvolvidos E aí nesse momento
ele pode tá tirando dúvidas e explorando
melhor mais características né então
detalhando mais o que é esperar então
isso é algo que pode ser feito até para
construção mesmo do da especificação do
caso de teste então isso isso é algo
legal Vale ressaltar também que muitas
empresas que sério um processo ágil eles
utilizam também alguns modelos como caso
de uso como cenário para ser um parar
porque é importante né Precisa modelar
as funcionalidades precisa modelar banco
de dados né então não é livre de
utilizar esses modelos então medida que
isso vai acontecendo com equipe de
desenvolvimento vai também haverá uma
interação e um feedback para quem está
desenvolvendo os pés eu acho que alguns
é natural que vai acontecer dentro dos
sprints né que são os pintos de projeto
de bicicleta para ver o ensinamento do
projeto para depois partir para o código
Então entendo que isso ele com tecido e
não dá para separar aquilo que já
existia da engenheira de software né
você tem menos documentação mas não
seguinte aqui você não tem documentação
você precisa ter alguns elementos né
alguns modelos de apoio aí para o
desenvolvimento Simone agora vamos falar
sobre a sua pesquisa nós falamos de
técnicas de teste e você tem alguns
artigos que abordam a seleção de
técnicas de teste um exemplo é um
mapeamento sistemático publicado no
simpósio brasileiro de engenharia de
software Quais são os achados dessa sua
pesquisa
Adolfo é essa nossa pesquisa era iniciou
com aquela a preocupação de que nós
temos várias técnicas e pode ser
aplicadas dentro do processo de
desenvolvimento e fica uma dúvida em
qual que é a melhor técnica pra Nós não
sabemos que nós temos diferentes
domínios de aplicação sendo
desenvolvidos e nem sempre você precisa
usar a técnica mais cara fazer-se uma
técnica simples eu já mais fácil para
uma equipe E se a gente pensar em uma
Startup mas tem poucas pessoas
envolvidas numa equipe então foi isso
que motivou esse trabalho ele tá mais
focado no contexto de
desenvolvimento de programas
concorrentes que é uma pesquisa que Eu
desenrolo né como eu falei anteriormente
então nós conhecíamos para as técnicas a
gente já tinha feito um mapeamento
anterior que tinha elencado bares várias
técnicas diferentes Proteste Então essa
pesquisa de abastecimento foi relacionar
para um determinado projeto
como que a gente pode escolher uma
técnica de teste então nós definimos uma
ferramenta de apoio e ajuda na seleção
de técnicas e a ideia que você fazia um
repositório onde a gente tem trabalhos
científicos que propõe tecn o mistérios
né e ferramentas de teste de sofre mas
que foram avaliadas experimentalmente ou
seja tem uma certa avaliação em termos
de qualidade da proposta do trabalho e e
a gente construiu uma maneira de aqui o
testador ou a equipe que está
desenvolvendo o projeto ele pode colocar
alguns atributos que para ele é
importante Então olha eu tenho interesse
de olhar para a segurança do sistema eu
tenho interesse de olhar uma técnica que
seja estrutural nessa olha código ele
pode colocar vários elementos E aí é
feito uma pesquisa nesse repositório e
apresentado então para o testador Eu não
quem tá liderando o projeto Quais as
técnicas mais adequadas para ele
utilizar Então essa proposta é uma
maneira assim auxiliar esse processo de
seleção então A ideia é essa mesmo né
oferecer para a indústria o que existe
pesquisa científica sobre técnicas e
critérios de teste de modo que possa ser
utilizadas em seus projetos de impede a
nossa pesquisa fica mais concentrado em
teste de É mas eu não se deve lançar
também para o teste de software de
maneira geral que acaba sendo um pouco
mais desafiador que tem muita coisa né
então pra gente explorar todas as
contribuições que existem científica
sobre proposta de teste do toque então a
gente vai levar um certo tempo para
fazer isso não a gente mas ainda está em
construção esse processo nessa pesquisa
massa e já mencionou algumas vezes né os
trabalhos que tem a sobre teste em
aplicações concorrentes na Inclusive tem
um artigo recente que trata sobre a
teste programas onde ocorre essa
execução em paralelo então tu podia
detalhar um pouquinho mais assim sobre
os desafios Nesse contexto né porque que
é difícil você sabe que ações
concorrentes e quais são as soluções
propostas para endereçar esses Desafios
que a gente acaba olhando é
características diferentes dependendo do
tipo de aplicação então muitas coisas
que é comum na atividade de teste só
quero entender o Mack domínio e entender
que tipos de defeitos são cometidos
naquele Domingo então é só colar de
corrente colar de web né quando eu tô
pensando nesse momento l e tipo de
defeito essas pessoas cometem quando
desenvolvem essas aplicações não é
porque tem aquela se defeitos que são
comuns para qualquer tipo de aplicação
até própria programação concorrente e
ela é composta de vários processos dos
processos ele acaba tendo um
comportamento sequencial Então muitos
dos defeitos e muitas das questões são
tratadas na programa que a gente chama
tradicionais não sequenciais ele a gente
acaba incorporando mas tem outras outros
desafios né então não tem que a
concorrência está cada vez mais
presentes no nosso dia-a-dia a e as
aplicações
desenvolvidas acabam tendo que tratar
esses aspectos de concorrência quando a
gente tem um programa concorrente ele
única os seus processos né o prédio e
essa uma a minha fonte importante para a
atividade de teste porque é Um Desafio
que acontece é ii-ocorre essas
aplicações Elas têm um comportamento que
a gente chama comportamento
não-determinismo porque a Como existe a
comunicação entre os processos EA
sincronização isso pode variar durante a
execução Então o que acontece em termos
de atividade de teste é que no mesmo
lugar do BTS se ele for executado mais
de uma vez ele pode ter saídas
diferentes e muitas vezes saídas
corretas diferença então a decisão
difícil é saber oque Sera que eu já
expulso sofre a todas as saídas corretas
possíveis Será que tem alguma saída que
ainda pode ser produzida que eu não
avaliei e isso é um problema da de
reprodução do problema do defeito vamos
porque eu encontrei um defeito vira um
comportamento não esperado e muitas
vezes eu não consigo repetir essa
cenário por causa de um determinismo
então esses desafios a gente tenta atrás
de alguma forma colocando alguns
elementos né E e aí a gente precisa
garante então que a gente vai testar
todas as coisas assim como Estações e o
que possa também ser muito caro porque o
problema é que pode ter muitas tá então
que a gente investiga basicamente é uma
camento de critérios de teste para o
contexto da concorrência Então como que
hora comunicação como que é olha a
sincronização e posta o testador a
pensar em situações de teste de óleo e
essas dessas situações a gente trabalha
também com a geração automática de dados
de teste olhando esses cenários A Gente
Tem trabalhado com ferramentas de apoio
como eu falei são ferramentas mais
acadêmicas mas que a gente já tem
repetido uso em diversos projetos né
dentro do todas as nossas pesquisas e
também avaliação experimental das nossas
propostas mas não é agência contribuição
dentro disso então nessa direção da
responsável também tempo da concorrência
existem diferentes tipos de os
paradigmas então passagem de mensagem é
memória compartilhada então a gente
tenta tratar também se diferentes
paradigmas ele tentando olhar como que a
gente colabora e com a qualidade dessas
aplicar essa questão que também Cianorte
fazer um caso de teste ter diferente
resultados para me lembrou a questão dos
freepass que há outro termo que tem
Aparecida podia comentar um pouco a
respeito dos conectar e exatamente ele é
um tempo que apareceu e é muito
relacionado com o problema da
concorrência se a gente olhar o problema
do fez teste ele tem a ver com a
colocar atrasos no caso de teste né
então o que acontece com o playtest é
que é um caso de teste que uma hora ele
se comporta de um jeito outra hora que
se completa de outro jeito o que é
interessante que ele é muito próximo do
que a gente trabalha mas assim a gente
tá focando esse comportamento de Hora de
um jeito ou de outro no código da
aplicação e o flextest isso acontece no
cod bom então não gosto do teste acaba
aqui como tem você precisa para testando
características de concorrência o
testador acaba colocando por exemplo
alguns deles né para bater um atraso de
comportamento para ativar outras preces
e isso faz com que o comportamento deles
seja inesperado Isso é muito ruim porque
se você tem um processo de teste de
regressão Você não sabe o seu problema
tá o seu código só um defeito no código
ou se é chato o problema do Playstation
então desafia o que que as pessoas têm
explorado hoje é como que eu isolam né
esses playtest para que eles não
interfiram tanto na atividade de teste
Simone atualmente muitos sistemas de
software são concebidos com arquiteturas
distribuídas e são hospedados na nuvem
você já investigou a respeito o que muda
quando testamos sistemas com essas
características
do Ovo nós já investigamos a atividade
de teste para sistemas na nuvem ou
sistemas que a gente chama as as isso a
casa serve quando a gente pensa em ter
sistemas existem novas características
que precisam ser consideradas os e
sistemas eles são compostos por pequenos
o Inquilinos representam versões
diferentes da mesma aplicação para
entender múltiplas organizações Então
cinco o texto que o sistema faz ele ele
precisa considerar outros requisitos
funcionais como elasticidade e
escalabilidade
claro que coisa também validar as
funções dos componentes integração e
serviços funcionários assim como ocorre
em Sistemas distribuídos convencionais
nossa pesquisa o que nós fizemos foi
definir critérios de teste para sistema
as os quais explora os defeitos
relacionados ao atendimento de
requisições e redirecionamentos e são
operações e se relacionam com as
diferentes temas da aplicação
Aproveitamos a nossa experiência
investigamos defeitos relacionados à
concorrência dessas aplicações
e ainda está em aberto e se muita coisa
para ser investigará se contexto e que
envolve novas características e novos
comportamentos das aplicações isso foi
assim uma bolsinha porque nós fizemos
até agora com sistemas na nuvem tu tem
bastante atuação na área de educação em
engenharia de software inclusive foi foi
coordenadora da trilha da Educação do
simpósio brasileiro de software que
aconteceu esse ano Mas em particular né
da tua bastante na parte de ensino de
teste de software e isso inclusive foi o
tópico Episódio 9 do nosso podcast né
que é tratou a educação engenharia de
software com Marco Túlio Valente tu tem
artigos que investigam Como é o ensino
de testes o uso de game ficar são para
na testes Quais são os seus conselhos
para quem ensina testes com base na sua
pesquisa e na sua experiência como
Educadora legal hein E o assistência que
Platinum ontem né do celular cultura
muito interessante Como surgiu o que que
ensina que estes obra deveria assistir
eu acho excelentes dicas e e a gente
conta ensina a gente que é
ensinar da melhor forma né que a gente
sempre busca experiências de colegas
para fazer isso né eu acabo atuando
também pelo ativos né contribuições
porque a gente acaba Aproveitando né o o
ensino da disciplina vende ele toca ele
tá te seguindo ali dessa história para
fazer alguns experimentos para avaliar
os trabalhos nossos né Tem alguns alunos
que investir com a área de educação e a
com relação à conselhos né Eu entendo
assim que testes o teste de software ela
acaba sendo a área muito Ampla e ela
envolve tanto aspectos teóricos como
práticos eu gostei até que o teste de
software ele ele é um processo a parte
durante o processo de desenvolvimento
aquele vai acompanhando todo o processo
desenvolvimento né Então muitos
elementos envolvidos E aí quando eu vou
pensar ensinar e
acaba sendo desafiador Porque
precisamos pensar em aspectos práticos e
ferramentas associadas que bem apoio e
EA necessário mostrar ao estudante que
aprendeu a testar é importante não menti
para ele conhecer sobre teste e como
utilizá-lo mas também para melhorar a
maneira que o código é desenvolvido
Porque a partir do momento que você tem
a capacidade de pensar como um testador
que você tem uma visão invertida né Eu
quero encontrar problemas eu vou
produzir um código melhor né Então essa
é uma premissa que a gente tem um
trabalho em sala de aula a gente fala do
teste e aí como eu disse assim caras
conhecimentos envolvidos sofre o ideal é
que existe uma disciplina dedicada ao em
cima de teste de som Nossa que nos
iniciamos temos uma disciplina nós temos
três cursos de
graduação em computação
então nós temos disciplinas prontos
cursos ela tá passando seu obrigatório
né que a nossa sistemas de informação e
pelo curso de ciências de é mentira de
computação queria uma disciplina
optativa o mercado ele está buscando os
profissionais dessa exposta ela ele é
mais a pena que tem a atende a alta
demanda de alunos Sem interesse de
realizar né então desafio como docente é
tentar mostrar o que que acontece no dia
a dia de um testador e E aí a gente
utiliza então assim ótimos materiais
disponíveis para ensino né desde vídeo
aulas e livros didáticos têm cursos né
de teste sofre disponível por exemplo
certo não tem tem um custo aquela que
foi produzido por pesquisadores aqui dos
Sims e o nosso grupo de teste de
software em conjunto com outros
pesquisadores na área área no Brasil
eles também construíram um livro de
mesmo texto né introdução texto de Tokyo
e pode ser utilizada como apoio Então
são dicas assim e que eu posso dar tem
também a partir de um trabalho de
Mestrado que orientei nós estamos
construindo o catálogo de materiais que
podem ser utilizados para apoios ao
envolver o material te dar o chefe da
quantidade de obras educacionais lista
de exercícios dentro desse o SUS porque
nós que pesquisamos em teste de software
mais fácil da gente organizar o material
então ele não é toda a universidade que
nós temos pesquisadores de teste de
sorte então se a gente conseguir
oferecer materiais para que outros
possam aplicar da melhor forma né então
é isso que a gente busca com essa
divulgação né e para quem vai encarar o
desafio aí ensinasse a disciplina ou
ensinar teste dentro da engenharia de
história e assim o meu conselho final
então né dessa minha é eu acho assim que
o meu conselho é uso usar preparar um
curso dinâmico em que o aluno seja
exposto a problemas que ele poderá
enfrentar quando estiver testamos só e
que ser o curso com ferramentas de apoio
e um projeto interessante colabora com o
aprendizado EA motivação dos Estudantes
muito bom e aí uma pergunta adicional é
quais são os principais gaps as
principais lacunas entre o ensino de
teste de software e o que indústria
deseja que o eu saiba a gente vai
acompanhado até por conta de um dessas
pesquisas que eu tenho educação aqui em
cima de teste de torque tem alguma e tem
sido apresentada na literatura então um
serviço e o que a literatura mostra para
gente que eu fiz alguém aqui ainda é
falta de profissional qualificado para
atuar na área de teste de som são poucas
as Universidades aqui no país que elas
possuem uma de uma disciplina dedicada
ao ensino detesto de solta se eu for
ensinado essa história dentro tem
dinheiro de sobra
eu não tenho espaço ela é uma disciplina
muito Ampla né Tem muita coisa
interessante para ser ensinada então
quando eu não tenho a possibilidade de
ter disciplina acaba não tendo a pessoa
capacitaram de dança assim para entender
toda essa teoria envolve eu preciso
também que ninguém existente seja elas
tomadas tecnologias EA maneira que a
indústria realiza a atividade de teste
de software a gente sabe que o que a
gente pesquisa muitas vezes não essa
briga diretamente na indústria não tem
indústria sob as pressões de prazo às
vezes de pessoas possam local uma equipe
a tempo nasceu o teste de software é um
processo em paralelo ele vai consumir
tempo para o seu desenvolvimento nem
sempre as equipes vão poder trabalhar
com isso então acaba aqui eles adaptar
tudo isso daí então o que eu vejo muitas
vezes o estudante ele não Conhece essas
questões não é o que seu corpo rap e o
acredito que uma parceria maior que a
indústria foi em cima de teste de
software traz benefícios para ambos né
ele pode colaborar com a formação de
bons profissionais de teste de sol Então
vamos à pergunta que dá nome é o podcast
para você qual é a próxima fronteira da
engenharia de software pode ser algo que
você acha que vai acontecer Qual o que
você gostaria que acontecesse em nossa
área é uma pergunta então cada vez mais
difícil de responder né porque tem tanto
assunto tanto Episódio interessante está
lá disponível mas assim eu fiquei
pensando e eu acredito que o tema
relevante a ser explorado é o
software em Sistemas que a gente
considera os contemporâneo ou sejam
sistemas que e tem características como
sensíveis ao contexto na internet das
coisas sistemas cibernéticos Any
sistemas e observe que tem novos
desafios e vocês vão ser tratado em
termos da engenharia de só então a gente
precisa mapear para esses novos domínios
por exemplo tipos de arquiteturas de
sistemas tipo de comportamento e também
novos tipos de defeitos em outras
características então assim eu considero
que a gente nós pesquisadores da área de
hip-hop de precisamos estar atentos a
esses temas e atentos em Como Nossos
esforços na academia podem colaborar com
a melhoria de qualidade do sistema deixa
eu fazer uma pergunta que provavelmente
vocês que vai saber responder eu mas eu
acho aqui ninguém sabe a resposta hoje
em dia né que é o teste de
aprendizado de máquina né porque a Pri a
estudar os dados né Já Era um modelo de
aprendizado e Esperamos que esteja certo
algoritmo né porque ninguém sabe da
resposta tão como a gente pode testar
isso legal
para você ter perguntado isso nossa eu
em conjunto com o professor de mamar
aquele conhecer a gente começou o ano
passado uma pesquisa nessa nessa direção
né olhando como é que a gente pode
aplicar e nascemos detesto de sócio eu
tô contexto de uma aplicação Maxwell ele
fato é diferente tem outros desafios
ainda já tive exatamente isso que você
comentou eu tenho problema é importante
que a gente relata é o problema do
Oráculo quando penso em teste de
software eu acabei não comentando ao
longo da explanação mas a gente precisa
saber qual a resposta esperada porque
veja se eu espero você é um ser resposta
esperada qualquer resposta certa e aí no
contexto o problema ele ele fica maior é
porque uma coisa é um treinar e esperar
um comportamento das aplicar e o outro é
ela agora trabalhar com o uso de dados e
ela tem um comportamento e se relaciona
com o
algoritmo que tá aprender então muitas
vezes a gente não sabe o seu problema
está na aplicação propriamente dita ou
os dados ou no treinamento feio então
que nós temos feito a gente tempo tá
tentando olhar a aplicação então modelar
ela através de modelos Como por exemplo
o trabalho que nós estamos investigando
o que a gente até teve um trabalho agora
no sistema é no site né no simpósio de
esporte ano foi olhar árvores de decisão
que representam então o funcionamento do
programa de imaginar E aí então a gente
percorrer isso que a gente tirar os pés
e apagar você está se comportando
comprar umas piaba tem muita coisa para
ser feita ainda a gente tá pensando tá
ficando pensando em aplicar também
mutação em cima this é mas ainda a gente
enfrenta o problema do Oráculo né então
a gente tem que olhar o que o que nós
queremos considerar para essas
aplicações né É temos um possível
cenário desesperado porque a gente possa
se concentrar e ter uma contribuição de
peça de som mas eu tenho que amar é bem
desafiadora sem dúvida então Simone
Muito obrigado foi um prazer conversar
com você eu passo a palavra para você
para você se despedir dos nossos nossos
ouvidos porque Adolfo english demais
equipe e Eu que agradeço o convite por
ele tá participando aqui Contando um
pouco da Minha experiência é Espero que
seja útil para profissionais e
pesquisadores né o material que você que
a gente preparou hoje eu quero
parabenizar a iniciativa como eu falei
eu tenho acompanhado os episódios eu
acho que ele tá muito rico né eu tenho a
luz de pós que acompanham e até
comentaram comigo acho que variação peço
para vocês e postou um animal com a
minha pesquisa eu vou lá e assisto o
episódio né E aí isso me dá uma
motivação Então eu acho que ele tá com
problema de várias maneiras a esse
material então eu quero parabenizar
vocês e que continuem Ótica muita coisa
para explorar ainda nem que eles mostram
tá muito rica tem muitos profissionais
bons no país E aí me despedir de vocês
Espera aí acompanhar os próximos bons
Episódios que vão surgir bom até mais
pressão muito obrigado então Simone por
todas as contribuições e
compartilhamento de experiências na
espero que depois de eu vi esse episódio
né todos nós ouvintes
produção software de maior qualidade e
com isso a gente fecha o o episódio
Então desse mês e a gente aguarda todos
vocês é no nosso próximo episódio