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?

Twitter API e C#: um tutorial – parte 3

E aí, beleza? Essa é a terceira e última parte desse xodózinho que eu tenho escrito: um tutorial de como fazer uma aplicação simples com a Twitter API e C#. Na parte 1, criamos nossa app na Twitter e pegamos as chaves de consumo que precisávamos e na parte 2 salvamos nossas chaves em um XML no projeto e fizemos a classe de autorização. Vamos finalizar, pegando os tweets e mostrando-os no nosso Console?

Um homem está sentado na frente do PC coçando o queixo enquanto a frase "I am a programming god!" aparece.
Eu sou um deus da programação!
Continuar lendo Twitter API e C#: um tutorial – parte 3

Twitter API e C#: um tutorial – parte 2

Oi! Seja bem vindo à segunda parte do meu singelo tutorial de como fazer uma aplicação simples com a Twitter API e C#. Na parte 1 nós criamos a nossa app no Twitter for Developers e pegamos as consumers keys que vamos precisar para conectar a nossa aplicação ao Twitter. Agora vamos de fato iniciar a programação do nosso sisteminha! Bora codar juntos?

Um gatinho bate com as patinhas freneticamente em um computador, como se estivesse digitando.
Continuar lendo Twitter API e C#: um tutorial – parte 2

Twitter API e C#: um tutorial – parte 1

Quando eu decidi fazer o bot da Pepita, percebi que não seria possível pegar os stories dela no Instagram, como eu queria desde o começo. Além disso, a API do Instagram também não me parecia muito amigável, o que me fez desistir dela bem rápido. Em compensação, encontrei muito material sobre a API e os Apps do Twitter e percebi que ali as coisas pareciam fluir muito mais fácil. Decidi ir por esse caminho e me dei bem! Por isso, decidi trazer para vocês (e também documentar para um uso futuro hehe) como fazer uma aplicação simples com a API do Twitter e C#! #bembackendela🙆

Dois logos do Twitter "conversando" entre si
Continuar lendo Twitter API e C#: um tutorial – parte 1

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!

Criando testes de carga no Visual Studio (com Selenium)

Olar!

Há algum tempo atrás, no meu trabalho, fiquei responsável por criar testes automatizados e de carga para o sistema que desenvolvemos. Em relação à testes automatizados, eu já tinha alguma ideia de como me virar – apesar de eu (ainda!) não ter nenhum conhecimento formal sobre o assunto. Agora, em relação à testes de carga… o conhecimento era zero mesmo! Eu nem imaginava que fossem possíveis de uma forma tão fácil pelo Visual Studio. E bem… digamos que EU CONSEGUI:

Mas antes de mais nada, para você é que é júnior do júnior e chegou no mundo da TI agora: o que é um teste de carga?

Os testes de carga testam se o aplicativo pode tratar de uma carga especificada de usuários para um determinado cenário e ainda atender à meta de resposta. O aplicativo é executado sob condições normais.

Testes de carga (e testes de estresse) são importantes para garantir que um aplicativo Web seja eficaz e escalonável. – Documentação da Microsoft

Estamos entendidos até aqui? Então bora: vamos montar o seu primeiro teste de carga no Visual Studio!

Continuar lendo Criando testes de carga no Visual Studio (com Selenium)

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?