270 likes | 372 Views
Built-In Contract Testing. João dos Prazeres. Motivação. Novo desafio na Engenharia de Software: Reuso Componentes é uma abordagem para facilitar reuso Mas há o problema de integração dos componentes Built-In Contract Testing: Testes embutidos nos componentes clientes e servidores
E N D
Built-In Contract Testing João dos Prazeres
Motivação • Novo desafio na Engenharia de Software: Reuso • Componentes é uma abordagem para facilitar reuso • Mas há o problema de integração dos componentes • Built-In Contract Testing: • Testes embutidos nos componentes clientes e servidores • Testam os contratos entre os componentes
BICT • Testing Profile aborda apenas black-box conformance test • SUT (system under test) só interfaces funcionais • BICT requer interfaces que mostre o estado interno.
Artefatos de BICT Server Tester • Baseado nas relações cliente/servidor aplicada ao nível de componentes. • O componente cliente contém um sub-componente testador • Testa as interfaces do servidor antes que a interação entre eles se inicie.
Context <<creates>> <<component>> Server <<acquires>> <<component>> Client <<acquires>> <<component>> Server Tester Context <<creates>> <<acquires>> <<component>> Server <<component>> Client Artefatos de BICT Server Tester
<<component>> Testing Client Server Tester <<component>> Testable Server Public interface Artefatos de BICT Server Tester – 1 abordagem • Server Tester (subcomponente do cliente) se utiliza da interface Server, que passa a se chamar Testable Server. • Esta abordagem também é utilizada para modelar BICT a componentes de terceiros.
<<component>> Testing Client Server Tester <<component>> Testable Server Public interface Testing interface Artefatos de BICT Server Tester – 2 abordagem • O Testable Server (antigo Server Component) disponibiliza um conjunto de interfaces que expõe seus estados internos para facilitar testes – Testing Interfaces
Artefatos de BICT Server Tester • Há três maneiras para a implementação das interfaces de teste: • A primeira trata de implementa-la criando vários métodos para determinar e verificar cada estado. • A segunda, cria atributos para cada estado, e cria apenas dois métodos genéricos para determinar e verificar o estado, passando-o como parâmetro. • A terceira abordagem cria um componente que herda do componente a ser testado, e neste utiliza a segunda abordagem.
<<component>> Testable Server Public interface Testing interface Artefatos de BICT • Testing Interface – Formas de Implementar Testing Interfaces
Transparências Complementares
SPEM – Software Process Engineering MetaModel • A modelagem é feita através do uso de estereótipos • Os principais estereótipos definidos pelo SPEM são: • WorkProduct • WorkDefinition • ProcessPerformer • ProcessRole • ProcessPackage • Phase • Process • Document • UMLModel • Activity • Guidance
WorkProduct: classe de produto de trabalho produzido em um processo e está associado a um tipo de produto. Ex: documento, código fonte, etc. Artefato Notação: WorkDefinition: é um tipo de operação que descreve o trabalho realizado no processo. É a representação para atividades compostas por outras sub-atividades. Notação: SPEM – Software Process Engineering MetaModel
SPEM – Software Process Engineering MetaModel • ProcessPerformer: define o “realizador” de um conjunto de WorkDefinitions do processo. • Notação: • ProcessRole: define responsabilidades em relação a WorkProducts específicos e define papéis que realizam e auxiliam atividades específicas. • Notação:
SPEM – Software Process Engineering MetaModel • ProcessPackage: notação especial para pacotes no contexto SPEM • Notação: • Phase: é uma especialização de um WorkDefinition em que sua pré-condição define a fase de critérios de entrada e seus objetivos definem a fase de critérios de saída • Notação:
SPEM – Software Process Engineering MetaModel • Process: representa um processo completo, em toda sua extensão. • Notação: • Document: notação específica para diferentes tipos de WorkProducts • Notação:
SPEM – Software Process Engineering MetaModel • UMLModel: notação específica para diferentes tipos de WorkProducts • Notação: • Activity: descreve uma parte do trabalho realizado por um ProcessRole: suas tarefas, operações e ações executadas por um papel ou de que forma o papel deve auxiliar • Notação:
SPEM – Software Process Engineering MetaModel • Guidance: Informação mais detalhada sobre o elemento associado fornecida aos praticantes Ex:Guidelines, Metrics, Tools, Checklists e Templates. • Notação:
Step 1 - Identification of Tested Interactions Este passo trata de analisar se os elementos de BICT devem ficar permanentes num contexto ou se devem ser removidos após a integração dos componentes e como identificar as interações testáveis.
Step 2 – Definition and Modeling of the Testing Architecture Este passo é a explicitação de como estender o modelo do sistema para considerar elementos do modelo de contract testing. Os elementos do modelo que pertencem a testes devem ser indicados com o estereótipo <<Testing ...>>.
Step 3 – Specification of the Testing Interfaces for the identified associations Como entrada é necessário uma especificação funcional completa das operações do servidor (como previsto no método Kobra). A especificação funcional é informação suficiente para definir as operações de verificação e determinação do estado do componente, as quais constituem as interfaces de teste.
Step 4 – Realization of the Testing Interfaces Este passo trata da realização da interface de testes para o papel servidor de uma associação. A realização das interfaces de teste dependem diretamente da realização do componente servidor a qual ela pertence.
Step 5 – Tester Component Specification Os componentes testadores são identificados e desenvolvidos na especicificação do componente cliente (Testing Component). Os casos de teste são derivados de acordo com a realização do modelo comportamental do componente cliente que o contém.
Step 6 – Realization of the Tester Component A realização de um componente testador está relacionado a como um o componente será organizado e implementado e que testes ele conterá. Eles podem conter sub-componentes testadores ou que auxiliam nos testes.
Step 7 – Integration of the Components Este passo trata de definir adaptadores ou wrapers entre os clientes e servidores que já possuem artefatos de BICT. Trata também da criação de stubs para a execução de testes. Tais stubs, seguindo os conceitos de Testing Profile, teriam o estereótipo <<Test Component>>.