Pesquisar este blog
sábado, 16 de fevereiro de 2013
Processo de Teste com TestLink + Scrum + Bugzilla
Ultimamente tive a necessidade de trabalhar com processo de teste com metodologia ágil, tive que montar uma apresentação do processo de teste com testlik + scrum + Bugzilla, segue abaixo o link da apresentação para quem quiser conhecer mais sobre teste.
Recently I needed to work with the testing process with agile methodology, I had to mount a presentation of the testing process with Testlik + Scrum + Bugzilla, below is the link of the presentation for anyone wanting to know more about the test.
sexta-feira, 18 de janeiro de 2013
Comandos Linux Uteis
Dar Permissão em Pasta e Arquivo:
Sudo chmod [opções] modo[,modo] arquivo1 [arquivo2 ...]
Permissão total:
chmod 777 + (nome do arquivo ou pasta)
ex. chmod 777 teste.xls
Outra forma fácil no ubuntu é
Passos:
1.Selecionar um arquivo
2. Clicar no botão direito
3. Selecionar a opção propriedades
4. Selecione a aba permissões
5. Mude as permissões como queira.
Numerical permissions
| # | Permission | rwx |
|---|---|---|
| 7 | full | 111 |
| 6 | read and write | 110 |
| 5 | read and execute | 101 |
| 4 | read only | 100 |
| 3 | write and execute | 011 |
| 2 | write only | 010 |
| 1 | execute only | 001 |
| 0 | none | 000 |
Sabe mais:
http://pt.wikipedia.org/wiki/Chmod
http://en.wikipedia.org/wiki/Chmod
Instalar SNMP - protocolo SNMP (do inglês Simple Network Management Protocol - Protocolo Simples de Gerência de Rede.
sudo apt-get install snmp
quinta-feira, 27 de dezembro de 2012
Montar HD no linux dividido em duas partições.
Ao tentar montar um HD que tem duas partições no Linux distribuição Ubuntu, tive dificuldades, no entanto um amigo me ajudou realizando as operações abaixo no terminal do linux.
Passos:
cd Área\ de\ Trabalho/
mkdir part1
mkdir part2
sudo mount /dev/sdb1 part1
sudo mount /dev/sdb2 part2
Desmontar Partições:
sudo umount /dev/sdb1 part1
sudo umount /dev/sdb2 part2
Passos:
cd Área\ de\ Trabalho/
mkdir part1
mkdir part2
sudo mount /dev/sdb1 part1
sudo mount /dev/sdb2 part2
Desmontar Partições:
sudo umount /dev/sdb1 part1
sudo umount /dev/sdb2 part2
segunda-feira, 24 de dezembro de 2012
Exemplo de Cadastro de Dados usando o Selenium RC no Eclipse.
Precisei automatizar um processo lento de cadastro de MAC em um sistema Web, estava me custando bastante tempo para realização do mesmo, bom primeiro ele remove o MAC se estiver cadastrado em um lista e inseri em uma nova lista já cadastrada, isso obedece um conjunto de passos até realizar a operação. Segue abaixo os passos de forma genérica, para criação do mesmo em qualquer sistema Web.
Passos:
1. Abrir o Eclipse2. Instalar o Selenium RC
3. Instalar a biblioteca POI
4. Instalar Selenium IDE
5. Exportar a gravação da operação que deseja realizar
6. Criar um projeto no Eclipse em seguida a classe.
7. Importar o código gerado pelo Selenium IDE.
8. Adaptar o código para pegar os valores que iram mudar cadastrados na Planilha.
9. Fazer os Loops ou IFs necessários.
10. Executar o Código.
Código Fonte do nosso Script em Java + Selenium
------------------------------------------------------------------------------------------------------
package com.example.tests;
import static org.junit.Assert.*;import com.thoughtworks.selenium.*;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.io.FileInputStream;
import java.util.regex.Pattern;
public class ScriptIAP extends SeleneseTestCase {
public String url="http://1.0.0.0:8080/";
@Before
public void setUp() throws Exception {
selenium = new DefaultSelenium("localhost", 4444, "*chrome", url);
selenium.start();
selenium.windowMaximize();
selenium.windowFocus();
//selenium.setSpeed("1000");
}
@Test
public void testMacCad() throws Exception {
selenium.setSpeed("1000");
selenium.open("/iap-provisioning/loginForm.jsp");
selenium.type("name=userName", "xxxx");
selenium.type("name=password", "yyyy");
selenium.click("css=input[type=\"submit\"]");
FileInputStream arquivoexcel_lote = new FileInputStream("C:\\Nome.xls");
selenium.waitForPageToLoad("90000");
HSSFWorkbook excel = new HSSFWorkbook(arquivoexcel_lote);
HSSFSheet topSheet = excel.getSheetAt(0);
/* Faz um for pegando a informação da linha do Arquivo do Excel.O primeiro for pega automatico a quantidade de linhas e no segundo é inserido de forma manual
*/
//for (int i = 0; i < topSheet.getPhysicalNumberOfRows(); i++) { //for para incrementar 1 em 1 nas linhas// Faz um for pela quantidade especificada no caso 10 linhas.
for (int i = 0; i < 10; i++) {
HSSFRow thirdRow = topSheet.getRow(i); //linhas da planilha
HSSFCell caminho_lote = thirdRow.getCell(1); //definindo a coluna 2
HSSFCell user = thirdRow.getCell(0); //definindo a coluna 1
selenium.click("link=Search");
selenium.waitForPageToLoad("130000");
selenium.type("xpath=(//input[@name='search'])[6]", caminho_lote.getStringCellValue());
selenium.click("xpath=(//input[@value='Search'])[6]");
selenium.waitForPageToLoad("130000");
if (selenium.isElementPresent("link=exact:"+ caminho_lote.getStringCellValue())){
selenium.click("link=exact:"+ caminho_lote.getStringCellValue());
selenium.waitForPageToLoad("130000");
selenium.click("link=View subscriber");
selenium.waitForPageToLoad("130000");
selenium.click("link=exact:"+caminho_lote.getStringCellValue());
selenium.waitForPageToLoad("130000");
selenium.click("link=Delete equipment");
assertTrue(selenium.getConfirmation().matches("^Are you sure you want to delete this equipment[\\s\\S]quot;));
}
selenium.click("link=Search");
selenium.waitForPageToLoad("130000");
selenium.type("name=search",user.getStringCellValue());
selenium.click("css=input[type=\"submit\"]");
selenium.waitForPageToLoad("130000");
selenium.click("link="+user.getStringCellValue());
selenium.waitForPageToLoad("130000");
selenium.click("link=New equipment");
selenium.waitForPageToLoad("130000");
selenium.type("xpath=(//input[@name='id'])[2]", caminho_lote.getStringCellValue());
selenium.type("name=macAddress", caminho_lote.getStringCellValue());
selenium.type("name=name", caminho_lote.getStringCellValue());
selenium.select("name=defaultUserId", "label="+user.getStringCellValue());
selenium.click("name=/plainBootstrap[1]");
selenium.click("name=/plainBootstrap[1]/deviceSettings[1]");
selenium.click("name=/plainBootstrap[1]/deviceSettings[1]/authentication[1]");
selenium.type("name=/plainBootstrap[1]/deviceSettings[1]/authentication[1]/@id", user.getStringCellValue());
selenium.type("name=/plainBootstrap[1]/deviceSettings[1]/authentication[1]/@password", "1234");
selenium.click("name=/plainBootstrap[1]/noAuthentication[1]");
selenium.click("css=#radioButtonFalse > input[name=\"/plainBootstrap[1]/blocked[1]\"]");
selenium.click("css=input[type=\"submit\"]");
selenium.waitForPageToLoad("130000");}
}
@After
public void tearDown() throws Exception {
selenium.stop();
}
}
Passos:
1. Abrir o Eclipse2. Instalar o Selenium RC
3. Instalar a biblioteca POI
4. Instalar Selenium IDE
5. Exportar a gravação da operação que deseja realizar
6. Criar um projeto no Eclipse em seguida a classe.
7. Importar o código gerado pelo Selenium IDE.
8. Adaptar o código para pegar os valores que iram mudar cadastrados na Planilha.
9. Fazer os Loops ou IFs necessários.
10. Executar o Código.
Figura 1 - Mostra o Selenium IDE, aonde vai ser gravado o esqueleto do Script, depois de gravado os passos das atividades, será realizado a exportação para o Eclipse, no nosso caso "Java / Junit 4 / Remote Control".
A figura 2 - Mostra a criação de um projeto e uma classe chamada macCad.java, e também mostra as bibliotecas usadas.
A figura 3 - Mostra o Arquivo Excel contendo o Nome da Nova Lista e o MAC a ser cadastrado.
Código Fonte do nosso Script em Java + Selenium
------------------------------------------------------------------------------------------------------
package com.example.tests;
import static org.junit.Assert.*;import com.thoughtworks.selenium.*;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.io.FileInputStream;
import java.util.regex.Pattern;
public class ScriptIAP extends SeleneseTestCase {
public String url="http://1.0.0.0:8080/";
@Before
public void setUp() throws Exception {
selenium = new DefaultSelenium("localhost", 4444, "*chrome", url);
selenium.start();
selenium.windowMaximize();
selenium.windowFocus();
//selenium.setSpeed("1000");
}
@Test
public void testMacCad() throws Exception {
selenium.setSpeed("1000");
selenium.open("/iap-provisioning/loginForm.jsp");
selenium.type("name=userName", "xxxx");
selenium.type("name=password", "yyyy");
selenium.click("css=input[type=\"submit\"]");
FileInputStream arquivoexcel_lote = new FileInputStream("C:\\Nome.xls");
selenium.waitForPageToLoad("90000");
HSSFWorkbook excel = new HSSFWorkbook(arquivoexcel_lote);
HSSFSheet topSheet = excel.getSheetAt(0);
/* Faz um for pegando a informação da linha do Arquivo do Excel.O primeiro for pega automatico a quantidade de linhas e no segundo é inserido de forma manual
*/
//for (int i = 0; i < topSheet.getPhysicalNumberOfRows(); i++) { //for para incrementar 1 em 1 nas linhas// Faz um for pela quantidade especificada no caso 10 linhas.
for (int i = 0; i < 10; i++) {
HSSFRow thirdRow = topSheet.getRow(i); //linhas da planilha
HSSFCell caminho_lote = thirdRow.getCell(1); //definindo a coluna 2
HSSFCell user = thirdRow.getCell(0); //definindo a coluna 1
selenium.click("link=Search");
selenium.waitForPageToLoad("130000");
selenium.type("xpath=(//input[@name='search'])[6]", caminho_lote.getStringCellValue());
selenium.click("xpath=(//input[@value='Search'])[6]");
selenium.waitForPageToLoad("130000");
if (selenium.isElementPresent("link=exact:"+ caminho_lote.getStringCellValue())){
selenium.click("link=exact:"+ caminho_lote.getStringCellValue());
selenium.waitForPageToLoad("130000");
selenium.click("link=View subscriber");
selenium.waitForPageToLoad("130000");
selenium.click("link=exact:"+caminho_lote.getStringCellValue());
selenium.waitForPageToLoad("130000");
selenium.click("link=Delete equipment");
assertTrue(selenium.getConfirmation().matches("^Are you sure you want to delete this equipment[\\s\\S]quot;));
}
selenium.click("link=Search");
selenium.waitForPageToLoad("130000");
selenium.type("name=search",user.getStringCellValue());
selenium.click("css=input[type=\"submit\"]");
selenium.waitForPageToLoad("130000");
selenium.click("link="+user.getStringCellValue());
selenium.waitForPageToLoad("130000");
selenium.click("link=New equipment");
selenium.waitForPageToLoad("130000");
selenium.type("xpath=(//input[@name='id'])[2]", caminho_lote.getStringCellValue());
selenium.type("name=macAddress", caminho_lote.getStringCellValue());
selenium.type("name=name", caminho_lote.getStringCellValue());
selenium.select("name=defaultUserId", "label="+user.getStringCellValue());
selenium.click("name=/plainBootstrap[1]");
selenium.click("name=/plainBootstrap[1]/deviceSettings[1]");
selenium.click("name=/plainBootstrap[1]/deviceSettings[1]/authentication[1]");
selenium.type("name=/plainBootstrap[1]/deviceSettings[1]/authentication[1]/@id", user.getStringCellValue());
selenium.type("name=/plainBootstrap[1]/deviceSettings[1]/authentication[1]/@password", "1234");
selenium.click("name=/plainBootstrap[1]/noAuthentication[1]");
selenium.click("css=#radioButtonFalse > input[name=\"/plainBootstrap[1]/blocked[1]\"]");
selenium.click("css=input[type=\"submit\"]");
selenium.waitForPageToLoad("130000");}
}
@After
public void tearDown() throws Exception {
selenium.stop();
}
}
domingo, 25 de novembro de 2012
Como Evitar o Roubo de Senhas Armazenadas nos Browsers
Vídeo Aula como evitar o roubo de senhas armazenada em browsers, após um possível invasão em seu computador local, o Hacker vai procurar dados confidencias (login e senhas), possivelmente vai encontrar armazenada nos browsers ao deixar gravado a opção armazenar no menu login e senha, o que é comum entre os usuários.
Ferramentas Usadas:
CCleaner
Osforensics
Passos em Vídeo:
Vídeo Aula 01
Passos Gerais na Vídeo Aula:
1. Logar no Site e pedir pro browser armazenar a Senha.
2. Com o Osforensis pegar a senha armazenada.
3. Contramedida usar o CCleaner para remover toda vez que armazenar uma senha ao iniciar a Máquina.
Assim Evitamos o roubo de Senha armazenadas em cache pelos Browser, evitando uma possível Invasão Hacker.
quarta-feira, 29 de agosto de 2012
Particionar ou Diminuir o Disco sem Formatar
Comprei um Notebook Dell com sistema Operacional Instalado, para não perder a garantia, não é possível efetuar a reinstalação de um novo SO, tendo uma unidade de disco única, como colocar meus dados em uma volume de disco separado? segue minha solução abaixo:
Passo 1:
1. Clique no Botão "Iniciar".
2. Selecionar a opção "Computador".
3. Depois selecione a opção "Gerenciamento".
Passo 1
Passo 2
1. Em Gerenciamento do computador (local), no lado esquerdo, selecione a opção "Gerenciamento de disco".
2. Selecione a Partição que deseja diminuir, por padrão C:
3. Depois de Selecionar a partição click no botão direito do mouse, selecione a opção "Diminuir Volume".
4. No Painel digite o tamanho que deseja diminuir em MB e click no botão "Diminuir", agora só confirme.
Passo 2.1
Passo 2.2
terça-feira, 17 de julho de 2012
Vulnerabilidades testadas através das Ferramenta Sonar (PMD,PMD - Security rules plugin,FindBugs) e pela ferramenta IBM Rational AppScan.
| Segue as Vulnerabilidades são testadas através das Ferramenta Sonar (PMD,PMD - Security rules plugin,FindBugs) e pela ferramenta IBM Rational AppScan. | |||
| Vulnerabilidades Classificação | Ferramentas | Tipos de Teste de Segurança | Ambiente de Teste |
| Securitycode guidelines | PMD | Caixa Branca | Web |
| SQL injection vulnerability | PMD - Security rules plugin | Caixa Branca | Web |
| Password management vulnerability | PMD - Security rules plugin | Caixa Branca | Web |
| Error Handling and logging flaws | PMD - Security rules plugin | Caixa Branca | Web |
| Insecure direct object reference | PMD - Security rules plugin | Caixa Branca | Web |
| Hardcoded constant database password | FindBugs | Caixa Branca | Web |
| Entity database password | FindBugs | Caixa Branca | Web |
| Cookie formed from untrusted input | FindBugs | Caixa Branca | Web |
| HTTP Response spliting vulnerability | FindBugs | Caixa Branca | Web |
| Nonconstant string passed to execute method on an SQL statement | FindBugs | Caixa Branca | Web |
| A prepared statement is generated from a nonconstant String | FindBugs | Caixa Branca | Web |
| JSP reflected cross site scripting vulnerability | FindBugs | Caixa Branca | Web |
| Servlet reflected cross site scripting vulnerability in error page | FindBugs | Caixa Branca | Web |
| Servlet reflected cross site scripting vulnerability | FindBugs | Caixa Branca | Web |
| Abuse of Functionality | IBM Rational AppScan | Caixa Preta | Web |
| Application Privacy Tests | IBM Rational AppScan | Caixa Preta | Web |
| Application Quality Tests | IBM Rational AppScan | Caixa Preta | Web |
| Brute Force | IBM Rational AppScan | Caixa Preta | Web |
| Buffer Overflow | IBM Rational AppScan | Caixa Preta | Web |
| Content Spoofing | IBM Rational AppScan | Caixa Preta | Web |
| Credential/Session Prediction | IBM Rational AppScan | Caixa Preta | Web |
| Cross-site Request Forgery | IBM Rational AppScan | Caixa Preta | Web |
| Cross-site Scripting | IBM Rational AppScan | Caixa Preta | Web |
| Denial of Service | IBM Rational AppScan | Caixa Preta | Web |
| Directory Indexing | IBM Rational AppScan | Caixa Preta | Web |
| Format String | IBM Rational AppScan | Caixa Preta | Web |
| HTTP Response Splitting | IBM Rational AppScan | Caixa Preta | Web |
| Information Leakage | IBM Rational AppScan | Caixa Preta | Web |
| Insecure Indexing | IBM Rational AppScan | Caixa Preta | Web |
| Insufficient Authentication | IBM Rational AppScan | Caixa Preta | Web |
| Insufficient Authorization | IBM Rational AppScan | Caixa Preta | Web |
| Insufficient Session Expiration | IBM Rational AppScan | Caixa Preta | Web |
| LDAP Injection | IBM Rational AppScan | Caixa Preta | Web |
| Null Byte Injection | IBM Rational AppScan | Caixa Preta | Web |
| OS Commanding | IBM Rational AppScan | Caixa Preta | Web |
| Path Traversal | IBM Rational AppScan | Caixa Preta | Web |
| Predictable Resource Location | IBM Rational AppScan | Caixa Preta | Web |
| Remote File Inclusion | IBM Rational AppScan | Caixa Preta | Web |
| Session Fixation | IBM Rational AppScan | Caixa Preta | Web |
| SOAP Array Abuse | IBM Rational AppScan | Caixa Preta | Web |
| SQL Injection | IBM Rational AppScan | Caixa Preta | Web |
| SSI Injection | IBM Rational AppScan | Caixa Preta | Web |
| URl Redirector Abuse | IBM Rational AppScan | Caixa Preta | Web |
| XML Attribute Blowup | IBM Rational AppScan | Caixa Preta | Web |
| XML Entity Expansion | IBM Rational AppScan | Caixa Preta | Web |
| XML External Entities | IBM Rational AppScan | Caixa Preta | Web |
| XPath Injection | IBM Rational AppScan | Caixa Preta | Web |
Todas as Vulnerabilidades acima, tratam da Qualidade do Código e Designer da Aplicação, não tratando da lógica de negócio.
Vulnerabilidade não são Ameaças, Vulnerabilidade é uma Fraqueza ou Brecha de Segurança na Aplicação que está associado com as Ameaças.
Os testes de Caixa Branca são feitas pela Área de Desenvolvimento e os de Caixa Preta pela área de Testes.
Não foi realizado a Descrição das Vulnerabilidades, ela tem que ser feita nas Contra-medidas descrevendo detalhadamente junto com seu controle de Segurança.
As Vulnerabilidades não são as quantidades de testes realizados, são realizados 133 validações pelo Sonar de 14 classificações de vulnerabilidades e pela AppScan 33 classificações de vulnerabilidades com 1668 validações podendo ser feita de mais de um forma, não tem como mensurar os casos de testes pela AppScan, podendo ser acima de 1 milhão, dependendo da quantidade de URLs.
Assinar:
Postagens (Atom)







