Escolar Documentos
Profissional Documentos
Cultura Documentos
ENGENHARIA DE SOFWARE I
TESTE DE INTEGRAÇÃO
São Paulo/SP, 20
Título: Testes de Integração
RA: 3444839
___________________________
Danilo de Almeida Cremasco
RA: 5156983
__________________________
Nome:
Ra:___________________________
Nome:
Ra:___________________________
Nome:
Ra:___________________________
The demands for higher quality software have motivated the definition of methods and
techniques for the development of software that meet the quality standards imposed.
As a result, interest in software testing activity has been increasing in recent years.
Several researchers have investigated the different test criteria, seeking to obtain a
test strategy with low cost of application, but at the same time, with great capacity to
reveal errors. The purpose of this mini-course is to present the theoretical and practical
aspects related to the software testing activity. A synthesis of functional, structural and
error-based test techniques, as well as test criteria pertaining to each, will be
presented. Factors used in the comparison and evaluation of software test criteria
(cost, effectiveness and strength) will also be addressed, Concepts on Integration
Testing in Systems. System Integration Testing is basically a high-level software
testing process in which testers verify that all related systems maintain data integrity
and can operate in coordination with other systems in the same environment.
Figura 1 .........................................................................................................................................
Figura 2 .........................................................................................................................................
Figura 3 .........................................................................................................................................
Figura 4 .........................................................................................................................................
Figura 5 .........................................................................................................................................
SUMÁRIO
Fonte:
3.Técnicas SIT:
Sob este aspecto, o teste começa com apenas o módulo mais alto de uma aplicação,
ou seja, a interface do usuário que chamamos como um driver de teste.
A funcionalidade dos módulos subjacentes é simulada com stubs. O módulo superior
é integrado com o stub de módulo de nível inferior um por um e, posteriormente, a
funcionalidade é testada.
Quando cada teste é concluído, o stub é substituído pelo módulo real. Os módulos
podem ser integrados de maneira ampla ou de primeira profundidade. O teste
continua até que todo o aplicativo seja construído.
A vantagem dessa abordagem é que não há necessidade de drivers e os casos de
teste podem ser especificados em termos da funcionalidade do sistema.
O principal desafio neste tipo de abordagem é a dependência da disponibilidade da
funcionalidade do módulo de nível inferior. Pode haver um atraso nos testes até que
os módulos reais sejam substituídos por stubs, e escrever o mesmo também é difícil.
Figura 2. Modelo Teste De integração Top Down
Fonte:
Aqui, as abordagens top down e bottom up discutidas acima são combinadas juntas.
O sistema é percebido como tendo três camadas - a camada do meio que é a camada
de destino, uma camada acima do alvo e uma camada abaixo do alvo. O teste é feito
nas duas direções e se reúne na camada de destino que está no meio e isso é ilustrado
na imagem abaixo.
Figura 3. Estratégia de Testes Sandwich
Fonte:
A abordagem Big Bang integra todos os módulos de uma só vez, ou seja, não integra os
módulos um por um. Verifica se o sistema funciona como esperado ou não, uma vez
integrado. Se algum problema for detectado no módulo completamente integrado, será
difícil descobrir qual módulo causou o problema. É um processo demorado de encontrar
um módulo que possui um defeito em si, já que isso levaria tempo e uma vez que o
defeito fosse detectado, a fixação do mesmo custaria mais alto do que o defeito é
detectado no estágio posterior.
Nesta abordagem, a integração é feita quando todos os módulos do aplicativo estão
completamente prontos. O teste é feito após a integração de todos os módulos para
verificar se o SIT está funcionando ou não.
É um desafio encontrar a causa raiz do problema nessa abordagem, já que tudo é
integrado de uma só vez, ao contrário dos testes incrementais. Sendo geralmente
adotada quando apenas uma rodada de SIT é necessária. Uma das desvantagens, é
que é difícil detectar o módulo que está causando um problema, requer todos os
módulos todos juntos para testes, o que, por sua vez, leva a menos tempo para testes,
como design, desenvolvimento, integração levaria a maior parte do tempo.
O teste é realizado de uma só vez, o que, portanto, não deixa tempo para o teste
crítico do módulo isoladamente.Sendo assim, perfeito para uso de sistema pequenos.
Fonte:
5. Abordagem bottom-up
O teste bottom-up, como o nome sugere, começa na unidade mais baixa ou mais
interna do aplicativo e, gradualmente, sobe. O teste de Integração começa no módulo
mais baixo e progride gradualmente em direção aos módulos superiores do aplicativo.
Essa integração continua até que todos os módulos sejam integrados e todo o
aplicativo seja testado como uma única unidade.
Neste caso, os módulos B1C1, B1C2 e B2C1, B2C2 são o módulo mais baixo que é
testado em unidade. Os módulos B1 e B2 ainda não estão desenvolvidos. A
funcionalidade do Módulo B1 e B2 é que ele chama os módulos B1C1, B1C2 e B2C1,
B2C2. Como B1 e B2 ainda não estão desenvolvidos, precisaríamos de algum
programa ou de um “estimulador” que chamará os módulos B1C1, B1C2 e B2C1,
B2C2. Esses programas estimuladores são chamados DRIVERS .
Em palavras simples, os DRIVERS são os programas fictícios que são usados para
chamar as funções do módulo mais baixo em um caso em que a função de chamada
não existe. A técnica de baixo para cima requer que o driver do módulo alimente a
entrada do caso de teste para a interface do módulo que está sendo testado.
A vantagem dessa abordagem é que, se houver uma falha grave na unidade mais
baixa do programa, é mais fácil detectá-la e medidas corretivas podem ser tomadas.
A desvantagem é que o programa principal realmente não existe até que o último
módulo seja integrado e testado. Como resultado, as falhas de design de nível mais
alto serão detectadas apenas no final.
A correção de tais erros é difícil porque as causas de isolamento são complicadas pela
vasta expansão de todo o programa. Uma vez que esses erros sejam corrigidos e
corrigidos, um novo aparecerá, e o processo continuará continuamente em um loop
infinito . Para evitar essa situação, outra abordagem é usada, Integração Incremental.
Veremos mais detalhes sobre uma abordagem incremental mais adiante no tutorial.
Existem alguns métodos incrementais, como os testes de integração são conduzidos em
um sistema baseado no processador de destino. A metodologia utilizada é o Black Box
Testing . A integração de baixo para cima ou de cima para baixo pode ser usada.
Os casos de teste são definidos usando apenas os requisitos de software de alto nível.
A integração de software também pode ser obtida em grande parte no ambiente host, com
unidades específicas para o ambiente de destino continuando a ser simuladas no host.
Testes repetidos no ambiente de destino para confirmação serão novamente necessários.
Os testes de confirmação neste nível identificarão problemas específicos do ambiente,
como erros na alocação e desalocação de memória. A praticidade de conduzir a integração
de software no ambiente host dependerá da quantidade de funcionalidade específica de
destino existente. Para alguns sistemas embarcados, o acoplamento com o ambiente de
destino será muito forte, tornando impraticável a realização de integração de software no
ambiente host.Os grandes desenvolvimentos de software dividirão a integração de
software em vários níveis. Os níveis mais baixos de integração de software podem ser
baseados predominantemente no ambiente host, com os níveis posteriores de integração
de software se tornando mais dependentes do ambiente de destino.
Conclusão Neste texto foram apresentados alguns critérios de teste de software e conceitos
pertinentes, com ênfase naqueles considerados mais promissores a curto e médio prazo: os
critérios 45 OAAA OAAN OABA OABN OAEA OBAA OBAN OBBA OBBN OBEA OBNG
OCNG OEAA OEBA OLLN OLNG OMMO OPPO ORRN SBRC SBRn SCRB SCRn SDWD
SMTC SMTT SSDL SSWM STRI STRP SWDD CGCR CLCR OALN OARN OASA OASN
OBLN OBRN OBSA OBSN OESA OIPM OLAN OLBN OLRN OLSN ORAN ORBN ORLN
ORSN OSAA OSAN OSBA OSBN OSEA OSLN OSRN OSSA OSSN SGLR SRSR VASM
VDTR VTWD CGSR CLSR CRCR OCOR SMVB SSOM VGAR VGPR VGSR VGTR VLAR
VLPR VLSR VLTR VSCR CGSR CLSR CRCR OCOR SMVB SSOM VGAR VGPR VGSR
VGTR VLAR VLPR VLSR VLTR VSCR CGCR CGSR CLCR CLSR CRCR OASA OASN
OBSA OBSN OCOR OESA OSAA OSAN OSBA OSBN OSEA OSSA OSSN SMVB SRSR
SSOM VASM VDTR VGAR VGSR VLAR VLSR VTWD C C++ Java Figura 19:
Classificação Operadores × Linguagem. baseados em fluxo de dados, o critério Análise de
Mutantes e o critério Mutação de Interface. Foram também apresentadas as ferramentas de teste
PokeTool, Proteum e PROTEUM/IM, assim como identificadas várias outras iniciativas e
esforços de automatização desses critérios, dada a relevância desse aspecto para a qualidade e
produtividade da própria atividade de teste. Procurou-se ressaltar o aspecto complementar das
diversas técnicas e critérios de teste e a relevância de se conduzir estudos empíricos para a
formação de um corpo de conhecimento que favoreça o estabelecimento de estratégias de teste
incrementais que explorem as diversas características dos critérios. Nessas estratégias seriam
aplicados inicialmente critérios “mais fracos” e talvez menos eficazes para a avaliação da
adequação do conjunto de casos de teste, e em função da disponibilidade de orçamento e de
tempo, incrementalmente, poderiam ser utilizados critérios mais “fortes” e eventualmente mais
eficazes, porém, em geral, mais caros. Estudos empíricos são conduzidos no sentindo de avaliar
os aspectos de custo, strength e eficácia dos critérios de teste, buscando contribuir para o
estabelecimento de estratégias de teste eficazes, de baixo custo e para a transformação do estado
da prática, no que tange ao uso de critérios e ferramentas de teste. Discutiu-se a definição de
critério de teste para a aplicação no contexto de especificações baseadas em Redes de Petri,
Máquinas de Estado Finito, Statecharts, Estelle e SDL. Mecanismos e ferramentas de teste para
apoiar a aplicação desse critério no contexto de especificações têm sido desenvolvidas, com por
exemplo as ferramentas Proteum-RS/FSM, Proteum-RS/ST, Proteum-RS/PN e CATSDL que
apóiam o teste de especificações em MEFs, Statecharts, Redes de Petri e SDL, respectivamente.
É importante observar que o conjunto de casos de teste obtido para testar e validar a
especificação pode ser utilizado durante o teste de conformidade da 46 implementação em teste.
A relação existente entre esses níveis de abstração: especificação e implementação estão sendo
investigados. Mostrou-se também que os conceitos e mecanismos desenvolvidos originalmente
para o teste de programas procedimentais podem ser utilizados no contexto do paradigma de
desenvolvimento de software orientado a objeto, com as devidas adaptações. Extensões de
critérios de teste baseados em fluxo de controle, fluxo de dados e de mutação foram propostas
para o teste de programas OO. Além disso, ferramentas de apoio a esses critérios também foram
desenvolvidas, como por exemplo as ferramentas X Suds e JaBUTi. De uma maneira geral,
pode-se dizer que a atividade de teste tem forte relação com a atividade de Qualidade do
Software, sendo que testes bem conduzidos procuram aumentar a confiabilidade do software.
Além disso, o conjunto de informações obtidos na atividade de teste é significativo para as
atividades de depuração, estimativa de confiabilidade e de manutenção. Referências [1] M. E.
Delamaro and J. C. Maldonado. Uma visão sobre a aplicação da análise
REFERÊNCIAS
Ruslan Desyatnikov. blog do Software Testing Help. 1. Ed. Petrópolis: Dezembro, 2018.
Martin Fowler; MartinsFowler.com. Testes de sistemas Integração. 2. Ed. Dourados:
Evangraf, 16,janeiro,2018.
Sem Autor.Software Testing. 2.in Link: http://softwaretestingfundamentals.com/integration-
testing/, Acesso: 00:40- 14.abril 2019
R. S. Pressman. Software Engineering – A Practitioner’s Approach. McGraw-Hill, 4
edition, 1997.
J. C. Maldonado. Critérios Potenciais Usos: Uma Contribuição ao Teste Estrutural de
Software. PhD thesis, DCA/FEE/UNICAMP, Campinas, SP, July 1991.
M. C. Paulk. Capability maturity model for software – version 1.1. Technical ReportTR-24,
CMU/SEI, February 1993. T. J. Ostrand and E. J. Weyuker. Using data flow analysis for
regression testing. In Sixth
Annual Pacific Northwest Software Quality Conference, Portland – Oregon, September
1988.
J. Hartmann and D. J. Robson. Techniques for selective revalidation. IEEE Software,
7(1):31–36, January/February 1990.
A. Veevers and A. Marshall. A relationship between software coverage metrics and
reliability. Software Testing, Verification and Reliability, 4(1):3–8, 1994.
G. S. Varadan. Trends in reliability and test strategies. IEEE Software, 12(3):10, May
1995.
G. J. Myers. The Art of Software Testing. Wiley, New York, 1979.
_________________________________________________________________________
A sociedade brasileira. São Paulo: Timétis, 1997.
Techtopidia: Link to : https://www.techopedia.com/definition/24590/system-integration-
testing-sit -Acesso: 15:12- 03.2019
GeekForgeek link:
https://www.geeksforgeeks.org/software-engineering-integration-testing/
Acesso: 14/04/2019- 00:40