O que é o tipo dynamic?

Trabalhando com alguns projetinhos pessoais, encontrei em diversos locais a sugestão de usar um tal de tipo dinâmico no C#, para recuperar resultados de APIs, por exemplo. Como boa fã de tipagem forte, não botei muita fé, mas acabei usando na resolução de um problema e confesso que, agora, estudando melhor para fazer esse post, até que vi vantagem. No meu post anterior, a última parte de um tutorial sobre Twitter API e C#, eu prometi escrever mais sobre ele, com mais detalhes e embasamento. E aqui está: afinal de contas, o que é o tipo dynamic, no C#?

Uma garotinha loira, de maria chiquinhas, chacoalhando a cabeça com os braços levantados.
Onde vive? Do que se alimenta? Hoje, no Olivia Repórter!
Continuar lendo O que é o tipo dynamic?

Um novo projeto pessoal: o Hey, Pepita bot!

Desde o começo do ano, eu estava com alguns dias de férias marcados agora em Julho. Altas expectativas, viagens planejadas, meus pais viriam me visitar… mas o Covid-19 decidiu estragar tudo. 😢 Conclusão: as férias chegaram e eu fiquei em casa. Decidi fazer o quê? Primeiro, dar uma descansada, porque eu não sou de ferro. 😆 Depois, decidi sentar e finalizar um projeto pessoal que eu estava muitíssimo empolgada quando comecei e depois acabou ficando um pouco de lado por conta da correria da vida: o bot Hey, Pepita no Telegram!

Kermit, o sapo, comemorando sentado em cima de uma escrivaninha.
Continuar lendo Um novo projeto pessoal: o Hey, Pepita bot!

Testes automatizados com C# e Selenium – parte 2

E aí! Vamos (finalmente!) escrever aquele teste com Selenium!

Oprah com um microfone gritando e apontando para a platéia

🔙 Caso você não tenha visto a parte 1 desse post, com todas as configurações para fazer esse teste, corre lá!

⚠️ Lembrando: estamos criando um projeto de teste solo e vamos testar algo bem básico; no caso, vamos pesquisar algo no Google e conferir se o primeiro resultado vem preenchido. Também quero recordar que estou usando e passando somente os conhecimentos que estão dentro da minha alçada, ou seja: .NET Framework e IEDriver como navegador para o Selenium.

Continuar lendo Testes automatizados com C# e Selenium – parte 2

Testes automatizados com C# e Selenium – parte 1

Quem nunca quis morrer por conta de um sistema legado, que atire a primeira pedra! Esse era exatamente o sentimento que eu tinha há algum tempo, com o atual sistema que trabalho. Ele é um senhorzinho que funciona muitíssimo bem, mas que aos poucos está sendo atualizado e, junto com isso, veio a oportunidade de aplicar alguns testes automatizados nele.

Mas é claro que nada é tão simples assim…

Elmo dando de ombros

Por conta da maneira que ele estava desenvolvido, a única automação de teste possível seria com o Selenium – ou seja, desenvolver um projeto de testes que simulasse o usuário utilizando o sistema e suas inúmeras possibilidades de fluxos. Já é alguma coisa, não?

Eu nunca tinha trabalhado com o Selenium puro, somente com o SpecFlow, que eu vejo como uma ferramenta facilitadora: ele faz com que seja mais fácil incluir a gerência no processo de desenvolvimento de casos de teste, por exemplo.

Dada essa introdução, vim fazer um mini-tutorial (em partes) de como fazer seu primeiro teste automatizado com Selenium e C#!

Continuar lendo Testes automatizados com C# e Selenium – parte 1

Como mudar o número de usuários máximo do seu teste de carga de maneira fácil

Recentemente, fiquei responsável na minha equipe por desenvolver testes automatizados e de carga no sistema. Foi um desafio novo: por mais que eu já tivesse feito alguns testes automatizados antes, começar tudo do zero era algo que eu nunca tinha feito; especialmente os testes de carga, que eu nem sabia que eram possíveis de serem feitos tão fácil pelo Visual Studio.

Depois de desenvolvidos os testes automatizados e criados vários testes de carga diferentes a partir deles (cada um deles com seu próprio .loadtest), foi me pedido uma alteração específica, nos testes de carga que eram executados por tempo: que o número máximo de browsers que fossem abertos fossem 15 (inicialmente foi programado 25).

Já irritada, pensei: vou ter que apagar todos os testes e criar de novo, porque essa é uma das informações que é definida em uma espécie de wizard de criação de testes de carga.

Print screen do wizard de criação de testes de carga do Visual Studio

Mas como eu sou brasileira e não desisto nunca, fui procurar se havia alguma maneira mais fácil de alterar os testes sem precisar apagar tudo e fazer de novo. E existe!

Continuar lendo Como mudar o número de usuários máximo do seu teste de carga de maneira fácil

Detalhes desconhecidos: como recuperar a seção applicationSettings de um arquivo App.config?

Esses dias, enquanto estava configurando um serviço em um dos projetos do trabalho, tive um momento de nervoso porque não fazia a menor ideia de como recuperar um dado da seção applicationSettings, que fica dentro do arquivo App.config.

Explico: trabalhar com os .config da vida não é algo novo para mim; praticamente todos os projetos do meu trabalho tem um. É um arquivinho deveras útil quando precisamos parametrizar certos aspectos do sistema (e não queremos que este seja recompilado para que a parametrização funcione).

Um homem negro digita em um computador enquanto uma fogueira arde ao seu lado.

Porém, eu só havia me deparado com dois cenários esse tempo todo:

1- criar uma seção de appSettings e declarar meus parâmetros ali dentro, com chave e valor:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
   <appSettings>
      <add key="NomeDoParametro" value="Valor do parâmetro" />
   </appSettings>
</configuration>

E recuperá-los via ConfigurationManager, da biblioteca System.Configuration:

using System.Configuration;

private string _recuperandoParametroArquivoConfig = ConfigurationManager.AppSettings["NomeDoParametro"];

2- criar uma seção relativa à algo específico e ali criar os parâmetros com chave e valor:

<NomeDaSecao>
      <Autenticacao>
         <add key="Username" value="Usuario" />
         <add key="Password" value="SenhaDoUsuario" />
      </Autenticacao>
      <Constantes>
         <add key="Endereco" value="ValorDoEndereco" />
      </Constantes>
</NomeDaSecao>

E recuperá-los com o NameValueCollection e ConfigurationManager:

NameValueCollection Autenticacao = (NameValueCollection)ConfigurationManager.GetSection("NomeDaSecao/Autenticacao");
NameValueCollection Constantes = (NameValueCollection)ConfigurationManager.GetSection("NomeDaSecao/Constantes");

string Url = Constantes.Get("Endereco");

Pois bem, ali estava eu, em um cenário totalmente novo: eu tinha uma tag applicationSettings e precisava do valor que ficava ali dentro dela.

    <applicationSettings>
        <Projeto.Properties.Settings>
            <setting name="NomeDaConfiguracao" serializeAs="String">
                <value>ValorDaConfiguracao</value>
            </setting>
        </Projeto.Properties.Settings>
    </applicationSettings>

Depois de uns 10 segundinhos de nervoso pensando: “como é que eu chego ali?”, fui consultar o Oráculo (Google + Stack Overflow) e a solução é MUITO mais simples do que eu podia imaginar. (Às vezes eu esqueço que o Visual Studio pode facilitar bastante a nossa vida…)

Robert Downey Jr. fazendo sinais de joinha com as mãos.
Continuar lendo Detalhes desconhecidos: como recuperar a seção applicationSettings de um arquivo App.config?