Postagens

Mostrando postagens de 2017

Testes automatizados em sistemas autenticados com certificados digitais, usando Selenium e PhantomJS

Imagem
A automatização de testes é uma disciplina muito importante hoje em dia. Entre várias técnicas e ferramentas diferentes, uma das que podemos utilizar para termos um conjunto de testes funcionais que possam ser facilmente repetidos é o Selenium. O Selenium é uma ferramenta que permite que a execução de passos que uma pessoa faria em um browser web (Chrome, Edge, etc.) possa ser programada. Com isso, toda vez que for necessária a validação de uma nova versão de sistema ou correção, este grupo de testes pode ser rodado de forma automática. Ainda falando sobre a execução do Selenium, ele trabalha criando uma instância do respectivo browser e enviando comandos para ele. Dessa forma é feita a simulação de preenchimento de caixas de texto, cliques em botões, etc. Quando um teste automatizado com Selenium é rodado, pode-se ver todo o teste acontecendo. Entretanto, há um problema nesta abordagem. Caso a sessão do usuário que está executando os testes seja bloqueada, o Selenium não consegue

Impressões sobre a prova 70-532 (Developing Microsoft Azure Solutions)

Hoje passei na prova 70-532 da Microsoft, sobre desenvolvimento na plataforma Azure. Essa prova é um dos pré-requisitos para a certificação Microsoft Certified Solutions Associate: Cloud Platform. Vou aqui passar um pouco da minha experiência com a prova, como eu me preparei e algumas dicas. Estrutura da prova Já fazia algum tempo que eu não fazia uma prova de certificação da Microsoft e o formato da prova mudou um pouco. Nesta seção aqui vou explicar como é a dinâmica da prova, que provavelmente vale para outros testes de certificação da Microsoft também. Foram 48 perguntas de vários tipos para um teste de tempo limite de 150 minutos. Essas perguntas são divididas em várias seções isoladas mas que compartilham o tempo geral. Quando eu digo isolada, quer dizer que uma vez respondidas as questões da seção, não se pode voltar nelas para se alterar. Ou seja, deve-se terminar por completo uma seção para que se possa acessar a próxima. Existem dois tipos de seção: casos de es

Princípio de substituição de Liskov

Imagem
Uma das regras que ajudam a nortear o design de objetos é o Princípio de Substituição de Liskov. Esse preceito foi definido inicialmente por Barbara Liskov em 1987 mas ganhou maior divulgação ao compor o grupo de regras chamado SOLID exposto por Robert C. Martin no livro  Agile Software Development: Principles, Patterns, and Practices . Este princípio diz que se q(x) é uma propriedade demonstrável dos objetos x de tipo T . Então q(y) deve ser verdadeiro para objetos y de tipo S onde S é um subtipo de T . Um pouco confuso na primeira vez que se lê, mas que na prática atesta que eu posso substituir uma instância de uma classe por outra instância que seja de uma subclasse da primeira, sem que isso altere o comportamento do sistema. Vamos usar um exemplo para poder explicar melhor. Veja a listagem de código abaixo. Ela simula um sistema de cálculo de imposto para venda de veículos. A classe Carro contém um método chamado CalcularValorImposto que recebe o valor do veículo e

Permissão para busca em listas do SharePoint com acesso anônimo

Um problema recente que tivemos com um portal baseado em SharePoint foi a falta de retorno de registros do mecanismo de busca nativo para usuários anônimos. Haviam listas personalizadas que continham informações e que quando um usuário autenticado fazia a busca, esses dados eram trazidos como resultado. Já quando a busca era feita por um usuário anônimo (no caso, na parte do portal exposta na Internet), esses dados não vinham. Após uma análise do log, descobriu-se que esses resultados eram removidos na hora de validar a segurança, ou seja, o SharePoint via que o usuário anônimo não tinha permissão para visualizar os dados dessas listas. Para resolver este problema, foi necessário quebrar a herança de permissão das listas e dar o acesso faltante para o usuário anônimo poder visualizar os dados na busca. Para isto, foi utilizado o script PowerShell abaixo. $web = Get-SPWeb "http://urldosite" $list = $web.TryGetList("nome da lista") $list.BreakRoleInheritanc