Testes em Sistemas Multi-Agente - ppt carregar
PublicouMirela Sousa Alterado mais de 4 anos atrás
Apresentação em tema: "Testes em Sistemas Multi-Agente"— Transcrição da apresentação:
1 Testes em Sistemas Multi-Agente
Apresentação Original: Elder Cirilo Adaptação: Francisco Cunha © LES/PUC-Rio
2 A WWW e os dispositivos móveis  novas aplicações:
Background A WWW e os dispositivos móveis  novas aplicações: Coleção de componentes distribuídos Entrada de uma variedade de fontes Adaptada de acordo com a preferência dos usuários Tecnologia de Agentes: Maneira importante de implementar tais sistemas Usa abstrações de nível superior (alto nível). © LES/PUC-Rio
3 Agentes – Um novo nível de abstração
Problem Domain R1 R3 R5 R7 R2 R4 R6 Agent Oriented Agent Roles Messages Organization Protocols Which agents? R8 functions files modules Procedural How? Object Oriented Object Attribute Method Class What? Se estiver usando um paradigma procediral para construir um software, vamos olhar para o problema e pensar em como ele pode ser implementado. Nós vamos acabar com um conjunto de módulos de arquivos e funciotns. De acordo com o paradigma processual olharmos para o problema e pensar Obout Como podemos resolver isso? Assim, podemos implementar um conjunto de módulos e funções de endereço todos os requisitos. De acordo com o paradigma oo devemos olhar para o problema que extrair os principais elementos (classes) que fazem parte dela. Então eu invento um conjunto de classes, relações, attrubutes a partir dele. Nós olhamos para o mesmo problema, mas em níveis dferent de abstração. © LES/PUC-Rio
4  Definição Agente: Autonomia é uma entidade autônoma
que executa um plano para alcançar um objetivo com base em suas crenças (atributos) que se comunica de forma assíncrona (baseado em mensagem) Autonomia Diferentes conjuntos de ações podem alcançar o mesmo objetivo System Garcia, A., Lucena, C., Cowan D. Agents in Object-Oriented Software Engineering. Software Practice & Experience, Elsevier, 34 (5), pp , 2004.  Um agente é um elemento autônomo, adaptativo e interativo, que tem um estado mental. O estado mental de um agente é composto por: crenças, metas, planos e ações. Cada agente do MAS tem pelo menos uma função em uma organização. Um dos atributos de um papel é um número de protocolos que definem a maneira como ele pode interagir com outras funções. A interface consiste no conjunto de messagens que eu possa receber eo conjunto de mensagens que pode receber. Um agente é um elemento autônomo e interativo. Crenças do agente incluem o que o agente sabe (atributos internos) e suas percepções sobre o que acontece no MAS. Planos de definir uma seqüência de ações que é executado por um agente para alcançar metas. Os agentes são orientados objetivo. Cada agente em um MAS tem uma responsabilidade. Esta responsabilidade é representado pelos papéis que devem desempenhar no sistema. © LES/PUC-Rio
5 Tecnologia de Agentes: Benefícios e Desafios
Por um lado: Facilita atender aos requisitos das aplicações atuais. Por outro lado: Novos desafios para a testabilidade do software e, consequentemente, para manutenção. Testes: Visam descobrir erros de regressão. Servir como uma documentação viva. © LES/PUC-Rio
6 Obstáculos à Testabilidade do Software
Controlar a entrada do teste (controllability) Observar a saída da unidade que está sendo testada (observability) Obstáculos: Mais de um comportamento "esperado" para um agente Entrada de Teste: dados + mensagens de conversas concorrentes. Voas, J., and Miller, K.. Software Testability: The New Verication. IEEE Software, 12 3:1728, 1995.  © LES/PUC-Rio
7 Abordagem no Desenvolvimento de MAS
Adotado Tradicionalmente: Processo de prototipagem Abordagem ad-hoc para garantir a qualidade do sistema. Poucos trabalhos definem um processo de teste com suporte a ferramentas: Agile Plataforma de testes plataforma real Agile Passi Agentes seguem um comportamento (autonomia) SUnit JAT/JAT-BDI/BDI4JAT ≠ © LES/PUC-Rio
8 SUnit: Test Driven Development of Multi-Agent Systems
Ali Murat Tiryaki, Sibel Oztuna, Oguz Dikenelli, R. Cenk Erdur © LES/PUC-Rio
9 Abordagem Utilizada Abordagem baseada no desenvolvimento dirigido aos testes que suporta a construção do SMA de maneira iterativa e incremental Implementa um framework baseado no JUnit para escrever testes automatizados para o comportamento dos agentes e interações entre agentes. Mock agents para modelar os aspectos organizacionais do SMA Foi implementado utilizando Hierarchical Task Network - HTN © LES/PUC-Rio
10 Desenvolvimento dirigido a Testes
Test driven development (TDD) Estilo de desenvolvimento de software em que o desenvolvimento é impulsionado por testes automatizados. Ciclo: desenvolvedor primeiramente escreve testes funcionais para uma unidade/tarefa; depois escreve o código que atende aos testes escritos e, em seguida, o código é refatorado para melhorar o design Apoia a construção de tarefas iterativas e incrementais © LES/PUC-Rio
11 Framework de Testes: SUnit
Fornece um framework para testes dirigidos ao desenvolvimento de planos Ajuda o desenvolvedor a criar e executar testes de maneira uniforme e automática durante a implementação do plano Consiste de 3 sub-módulos Módulo de Teste Estrutural Módulo de Teste de Ação Módulo de Teste de Fluxo © LES/PUC-Rio
12 Módulo de Teste Estrutural
Este módulo auxilia o desenvolvedor na definição de subtarefas e na determinação do inter-relacionamento das subtarefas que compõe o plano HTN. Para cada tarefa complexa em um único plano, um caso de teste estrutural deve ser implementado Assert methods © LES/PUC-Rio
13 Módulo de Teste de Ação Ação é uma tarefa primitiva que gera um resultado ou uma mensagem para outro agente na plataforma. Este módulo foi projetado para examinar os resultados ou mensagens em relação aos conjuntos definidos providos pelo usuário para as tarefas primitivas. Assert methods © LES/PUC-Rio
14 Módulo de Teste de Fluxo
Este módulo é projetado para avaliar os resultados ou mensagens de saída das tarefas em relação as mensagens recebidas ou conjuntos de mensagens predefinidas. Assert methods O Diagrama de Classe do Módulo de Teste de Fluxo © LES/PUC-Rio
15 Criando um Teste Unitário
SeagentStructuralTestCase deve ser estendido para validar a estrutura do plano. SeagentActionTestCase tem de ser estendido para ser capaz de escrever assertivas para tarefas primitivas. Verifica os resultados das tarefas primitivas tais como os resultados ou mensagens geradas. SeagentFlowTestCase verifica a correção dos conceitos da OWL e valor com os esperados. © LES/PUC-Rio
16 Criando um Teste Unitário - Exemplo
Um viajante tenta organizar um plano de férias que inclui reserva de hotel e detalhes de transporte. O objetivo do cenário é organizar o plano de férias, selecionando as opções de acomodação e transporte adequados com base nas preferências mais baratas dos viajantes. © LES/PUC-Rio
17 JAT: A Test Automation Framework for Multi-Agent Systems
Roberta Coelho, Elder Cirilo, Uirá Kulesza Arndt von Staa, Awais Rashid, Carlos Lucena
18 Define uma abordagem para construção e execução de testes SMA.
É baseado na Programação Orientada a Aspectos para: Controlar a entrada do teste Observar a saída das unidades em testes Foi implementado sobre o JADE: Middleware para aplicações desenvolvidas em Java baseadas em agentes. © LES/PUC-Rio
19 JADE Agent Testing (JAT) Framework
JAT possibilita: A criação de testes automatizados no estilo JUnit para MA desenvolvidos em JADE. JAT é usado: como um framework genérico de testes para desenvolvedores JADE da mesma maneira como JUnit é para desenvolvedores Java © LES/PUC-Rio
20 Agentes (novas abstrações)  novas fontes de erros
Modelo de Faltas Ordem da Mensagem Conteúdo da Mensagem Aumento no atraso das mensagens Faltas nas crenças dos agentes Faltas em procedimentos internos Agentes (novas abstrações)  novas fontes de erros © LES/PUC-Rio
21 1. Usando Agentes para testar Agentes: MockAgent (ou Agente Falso):
Ideias Principais 1. Usando Agentes para testar Agentes: MockAgent (ou Agente Falso): adaptação do conceito de mock objects para agentes simular um agente real do sistema envia mensagens para um agente em teste (AUT) e verifica a resposta: conteúdo, tempo de resposta, tipo, ordem. © LES/PUC-Rio
22 2. Monitorando os Agentes:
Ideias Principais 2. Monitorando os Agentes: Agentes são autônomos O desenvolvedor precisa conhecer o estado dos agentes Ex.: para responder: saída == saída esperada? Monitor Aspect observa e armazena informações sobre o estado de transição dos agentes (ex.: running, dead). © LES/PUC-Rio
23 2. Monitorando os agentes: (cont.)
Ideias Principais 2. Monitorando os agentes: (cont.) A máquina de estado do agente é uma abstração transversal; "espalhada" sobre a aplicação e os módulos da plataforma; Pode ser representada como um aspecto (XPI); public aspect AgentStateMachine { pointcut created():call(public ContainerController.createNewAgent(..)); pointcut from_created_to_running(Agent o): execution(protected void Agent.setup()) && target(o); pointcut from_running_to_dead (Agent o): execution(public void Agent.doDelete()) ... } running created waiting dead © LES/PUC-Rio
24 2. Monitorando os agentes: (cont.)
Ideias Principais 2. Monitorando os agentes: (cont.) privileged public aspect Monitor { ... before(Agent o): AgentStateMachine.from_created_to_running(o){ includeInRunningAgents(o); } public void waitUntilAgentIsDead (String mockAgentID){ while (!isDead(mockAgentID) && (MAXTIMEOUT > timeSpent)){ wait(20000); © LES/PUC-Rio
25 Ideias Principais 3. Sincronizando MockAgents
MockAgents implementam parcialmente um cenário de teste Precisamos definir a ordem em que os Agentes Mocks devem interagir com o AUT. Mock Agents Synchronizer © LES/PUC-Rio © LES/PUC-Rio
26 Elementos para controlar o input (cont.):
Ideias Principais Elementos para controlar o input (cont.): Aspecto Synchronizer: Assim como um maestro define a ordem de cada instrumento, este elemento define a ordem em que cada MockAgent deve interagir com o AUT. Monta o script de testes: dividido partes no behavior de cada Mock. 25/03/2017 © LES/PUC-Rio
27 JAT Framework: A Arquitetura
JADE Middleware JUnit Framework <<crosscuts>> <<crosscuts>> A Aspects <<uses>> <<crosscuts>> M <<crosscuts>> S JAT Framework Legend: M Monitoring Concern A Agent State Machine Concern S Synchronization Concern © LES/PUC-Rio
28 JAT Framework: Dinâmica
AgentStateMachineXPI © LES/PUC-Rio
29 JAT Framework: Dinâmica
AgentStateMachineXPI 1 © LES/PUC-Rio
30 JADETestCase: Exemplo de Código
public class BookTradingTesteCase extends JADETestCase { public void testBookTradingScena1(){ //Load Data Repositories … startAUT("seller","BookSeller"); startMockAgent("buyer1","BookBuyerMockAgent",FIRST); startMockAgent("buyer2","BookBuyerMockAgent",SECOND); //Blocks until interaction finishes Monitor.aspectOf(). waitUntilTestHasFinished("buyer1"); Monitor.aspectOf(). waitUntilTestHasFinished("buyer2"); //Check Expected Result: assertInteractionOK("buyer1"); assertInteractionOK("buyer2"); Object belief= getBelief("seller","catalogue"); assertEquals(expectedBelief,belief); } ... © LES/PUC-Rio
31 JAT Framework: Dinâmica
Monitoring DataRepository :Synchronizer :Monitor JADETestCase : JADEMockAgent : AUT: JADEAtent 1. testMethod () 2. loadInteraction Order( ) 3. start(params ) 4. start(params ) 5. state = crosscuts ( ) 6. add(state) 7. waitUntilTestFinishes ( ) 8. send(msg ) 9. send(msg ) 10.check(msg) 11. setResult ( ) 12. state = crosscuts ( ) 13. add(state) 14. notifyTestFinished () 16. assertions( ) Legend: join point intercepted join point intercepted object by Monitor aspect by Synchronizer aspect aspect © LES/PUC-Rio
32 Construir testes automatizados para o BookTrading.
Usando a Ferramenta Nosso Objetivo: Construir testes automatizados para o BookTrading. Descrição do Sistema: Sistema de venda e compra de livros. Possui 2 agentes: BookSeller: representa usuário que deseja vender livros. BookBuyer: representa usuário que deseja comprar livros dos agentes vendedores disponíveis no sistema. 25/03/2017 © LES/PUC-Rio
33 Usando a Ferramenta Caso de testes exemplo - descrição simplificada:
Agente testado (AUT) BookSeller Cenário Resultado esperado Dois agentes compradores querem comprar o mesmo livro vendido por um BookSeller, mas só existe uma copia do livro disponível. O agente vendedor deve vender o livro para o primeiro agente que solicitar o livro, e rejeitar a venda ao outro agente. 25/03/2017 © LES/PUC-Rio
34 Assim como no JUnit, podemos construir testes em diferentes níveis:
Usando a Ferramenta Assim como no JUnit, podemos construir testes em diferentes níveis: Unidade: Objetivo: avaliar o comportamento de 1 único agente real Como: criar 1 agente real e mocks que interagem com ele Integração: Objetivo: avalia a interação entre 2 ou mais agentes reais Como: criar os agentes reais e outros mocks (se necessário) Sistema: Objetivo: verificamos se uma tarefa a ser desempenhada por um conjunto de agentes foi bem sucedida Como: criar o conjunto de agentes reais e ao final da interação entre eles verificar se o ambiente foi afetado como esperado 25/03/2017 © LES/PUC-Rio
35 Limitações e Futuras extensões
Usar informações de cobertura: como uma resposta para melhorar a eficácia dos casos de teste Geração de casos de teste Gerar JADETestCases (e.g. Parasoft JTest). Aplicar o Framework em casos de estudos reais 25/03/2017 © LES/PUC-Rio