Mudanças entre as edições de "Biblioteca 1.45.0.0"

De MSTECH wiki
Ir para: navegação, pesquisa
(Observação do teste)
(Análise do teste)
Linha 23: Linha 23:
 
=== Análise do teste ===
 
=== Análise do teste ===
  
Em verificação.
+
O sistema realiza um série que requisições que ficam salvas no log do ARR, consumindo assim uma grande quantidade do disco, chegando a utilizar mais de 50% do disco com menos de 550 usuários. Devido a quantidade de resquest, em geral muitos gets para um post, resultam em um arquivo muito grande não possibilitando a leitura do mesmo.
 +
 
 +
A média de fila em disco entra-se dentro do aconselhado. O tempo médio de resposta das requisições manteve-se no limite estabelecido, exceto ao ser utilizado por 350 usuários e o request para incluir um novo exemplar.
 +
 
 +
Durante os testes ocorreram erros na 'ddlBiblioteca', tblAuxiliar, deadlock nas movimentações e timeout. O timeout ocorre durante as movimentações do sistema e na tela de reserva, os requests relacionados a mesma não ficam presos em loop no ARR e nos servidores web. Devido a quantidade de erros não foi possível continuar a realizar os teste.
 +
 
 +
Abaixo seguem alguns dos logs de erros:
 +
 
 +
* Deadlock
 +
''Exception Type: System.Data.SqlClient.SqlException
 +
''Exception: Transaction (Process ID 207) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
 +
''Source: .Net SqlClient Data Provider
 +
''Stack Trace:
 +
  at MSTech.Data.Common.TalkDBTransaction.setError(Exception err)
 +
  at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd)
 +
  at MSTech.Data.Common.QuerySelect.Execute()
 +
  at MSTech.Biblioteca.DAL.BIB_MovimentacaoDAO.GetSelectDataSuspensaoByLeitor(Guid pes_id, Int32 bib_id, Int32 valorParametro, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_MovimentacaoDAO.cs:line 854
 +
  at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.GetSelectDataSuspensaoByLeitor(Guid pes_id, Int32 bib_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1946
 +
  at Movimentacao_Devolucao_Cadastro.CarregaGrid() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 792
 +
  at Movimentacao_Devolucao_Cadastro.UCComboBiblioteca__IndexChanged() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1497
 +
''\r\n
 +
 
 +
 
 +
* Erro dllBiblioteca
 +
''Exception Type: System.ArgumentOutOfRangeException
 +
''Exception: 'ddlBiblioteca' has a SelectedValue which is invalid because it does not exist in the list of items.
 +
''Parameter name: value
 +
''Source: System.Web
 +
''Stack Trace:
 +
  at System.Web.UI.WebControls.ListControl.set_SelectedValue(String value)
 +
  at Movimentacao_Devolucao_Cadastro._RetornaMatricula(Guid pes_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1556
 +
''\r\n
 +
 
 +
 
 +
* Erro tblAuxiliar
 +
''Exception Type: System.Data.SqlClient.SqlException
 +
''Exception: Cannot drop the table '#tblAuxiliar', because it does not exist or you do not have permission.
 +
''Source: .Net SqlClient Data Provider
 +
''Stack Trace:
 +
  at MSTech.Data.Common.TalkDBTransaction.setError(Exception err)
 +
  at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd)
 +
  at MSTech.Data.Common.QuerySelect.Execute()
 +
  at MSTech.Biblioteca.DAL.BIB_MovimentacaoDAO.GetSelectDataSuspensaoByLeitor_lista(Guid pes_id, Int32 bib_id, Int32 valorParametro, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_MovimentacaoDAO.cs:line 2294
 +
  at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.GetSelectDataSuspensaoByLeitor_lista(Guid pes_id, Int32 bib_id, Guid ent_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1980
 +
  at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.usuarioSuspensoBiblioteca(Int32 bib_id, Guid pes_id, DateTime data, Guid ent_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1921
 +
  at Movimentacao_Devolucao_Cadastro.validaSuspensaoAutomatica(Int32 bib_id, Guid pes_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1656
 +
  at Movimentacao_Devolucao_Cadastro.CarregaGrid() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 861
 +
  at Movimentacao_Devolucao_Cadastro.UCComboBiblioteca__IndexChanged() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1497
 +
''\r\n
 +
 
 +
 
 +
* Timeout
 +
''Inner Exception Type: System.ComponentModel.Win32Exception
 +
''Inner Exception: The wait operation timed out
 +
''Inner Source:
 +
''Exception Type: System.Data.SqlClient.SqlException
 +
''Exception: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
 +
''Source: .Net SqlClient Data Provider
 +
''Stack Trace:
 +
  at MSTech.Data.Common.TalkDBTransaction.setError(Exception err)
 +
  at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd)
 +
  at MSTech.Data.Common.QuerySelect.Execute()
 +
  at MSTech.Biblioteca.DAL.BIB_ListaReservaDAO.Busca_ReservasAcervo(Int32 bib_id, String ace_titulo, Int16 ace_tipoBusca, String exm_tombo, DateTime data, Byte lre_situacao, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_ListaReservaDAO.cs:line 371
 +
  at MSTech.Biblioteca.BLL.BIB_ListaReservaBO.Busca_ReservasAcervo(Int32 bib_id, Int16 ace_tipoBusca, String ace_titulo, String exm_tombo, DateTime data, Byte lre_situacao) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_ListaReservaBO.cs:line 165
 +
  at Movimentacao_Devolucao_Cadastro.Salvar() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 590
 +
''\r\n
  
 
=== Cenários de uso ===
 
=== Cenários de uso ===

Edição das 17h17min de 19 de julho de 2016

Sistemas Verificados

  • Biblioteca, versão 1.45.0.0

Verificação de Segurança

Em verificação.


Verificação de Desempenho

Observação do teste

Para a execução dos testes foram utilizados:

  • 1 Servidor de banco de dados.
  • 2 Servidores web.
  • 2 Test Agent

Durante os testes foi observada a necessidade da execução de uma bateria de testes funcionais no sistema, devido a bugs encontrados na construção do cenários de testes, sendo que alguns deles impediam a utilização do sistema.

A equipe responsável atualmente pelo projeto atualizou o ambiente de teste e o de demonstração, devido aos mesmos estarem com versões legadas.

Análise do teste

O sistema realiza um série que requisições que ficam salvas no log do ARR, consumindo assim uma grande quantidade do disco, chegando a utilizar mais de 50% do disco com menos de 550 usuários. Devido a quantidade de resquest, em geral muitos gets para um post, resultam em um arquivo muito grande não possibilitando a leitura do mesmo.

A média de fila em disco entra-se dentro do aconselhado. O tempo médio de resposta das requisições manteve-se no limite estabelecido, exceto ao ser utilizado por 350 usuários e o request para incluir um novo exemplar.

Durante os testes ocorreram erros na 'ddlBiblioteca', tblAuxiliar, deadlock nas movimentações e timeout. O timeout ocorre durante as movimentações do sistema e na tela de reserva, os requests relacionados a mesma não ficam presos em loop no ARR e nos servidores web. Devido a quantidade de erros não foi possível continuar a realizar os teste.

Abaixo seguem alguns dos logs de erros:

  • Deadlock
Exception Type: System.Data.SqlClient.SqlException
Exception: Transaction (Process ID 207) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Source: .Net SqlClient Data Provider
Stack Trace: 
  at MSTech.Data.Common.TalkDBTransaction.setError(Exception err)
  at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd)
  at MSTech.Data.Common.QuerySelect.Execute()
  at MSTech.Biblioteca.DAL.BIB_MovimentacaoDAO.GetSelectDataSuspensaoByLeitor(Guid pes_id, Int32 bib_id, Int32 valorParametro, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_MovimentacaoDAO.cs:line 854
  at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.GetSelectDataSuspensaoByLeitor(Guid pes_id, Int32 bib_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1946
  at Movimentacao_Devolucao_Cadastro.CarregaGrid() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 792
  at Movimentacao_Devolucao_Cadastro.UCComboBiblioteca__IndexChanged() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1497
\r\n


  • Erro dllBiblioteca
Exception Type: System.ArgumentOutOfRangeException
Exception: 'ddlBiblioteca' has a SelectedValue which is invalid because it does not exist in the list of items.
Parameter name: value
Source: System.Web
Stack Trace: 
  at System.Web.UI.WebControls.ListControl.set_SelectedValue(String value)
  at Movimentacao_Devolucao_Cadastro._RetornaMatricula(Guid pes_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1556
\r\n


  • Erro tblAuxiliar
Exception Type: System.Data.SqlClient.SqlException
Exception: Cannot drop the table '#tblAuxiliar', because it does not exist or you do not have permission.
Source: .Net SqlClient Data Provider
Stack Trace: 
  at MSTech.Data.Common.TalkDBTransaction.setError(Exception err)
  at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd)
  at MSTech.Data.Common.QuerySelect.Execute()
  at MSTech.Biblioteca.DAL.BIB_MovimentacaoDAO.GetSelectDataSuspensaoByLeitor_lista(Guid pes_id, Int32 bib_id, Int32 valorParametro, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_MovimentacaoDAO.cs:line 2294
  at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.GetSelectDataSuspensaoByLeitor_lista(Guid pes_id, Int32 bib_id, Guid ent_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1980
  at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.usuarioSuspensoBiblioteca(Int32 bib_id, Guid pes_id, DateTime data, Guid ent_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1921
  at Movimentacao_Devolucao_Cadastro.validaSuspensaoAutomatica(Int32 bib_id, Guid pes_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1656
  at Movimentacao_Devolucao_Cadastro.CarregaGrid() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 861
  at Movimentacao_Devolucao_Cadastro.UCComboBiblioteca__IndexChanged() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1497
\r\n


  • Timeout
Inner Exception Type: System.ComponentModel.Win32Exception
Inner Exception: The wait operation timed out
Inner Source: 
Exception Type: System.Data.SqlClient.SqlException
Exception: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
Source: .Net SqlClient Data Provider
Stack Trace: 
  at MSTech.Data.Common.TalkDBTransaction.setError(Exception err)
  at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd)
  at MSTech.Data.Common.QuerySelect.Execute()
  at MSTech.Biblioteca.DAL.BIB_ListaReservaDAO.Busca_ReservasAcervo(Int32 bib_id, String ace_titulo, Int16 ace_tipoBusca, String exm_tombo, DateTime data, Byte lre_situacao, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_ListaReservaDAO.cs:line 371
  at MSTech.Biblioteca.BLL.BIB_ListaReservaBO.Busca_ReservasAcervo(Int32 bib_id, Int16 ace_tipoBusca, String ace_titulo, String exm_tombo, DateTime data, Byte lre_situacao) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_ListaReservaBO.cs:line 165
  at Movimentacao_Devolucao_Cadastro.Salvar() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 590
\r\n

Cenários de uso

Cenário de uso #1 - Login
Ação realizada Think Time (segundos)
1 - Acessar tela de login 3
1 - Realizar login 7
1 - Selecionar sistema Transporte Escolar 5


Cenário de uso #2 - Cadastro de título (Fluxo 1)
Ação realizada Think Time (segundos)
2 - Acessar tela de consulta de título 4
2 - Clicar em "Incluir título" 3
2 - Preencher campo "Autor" 4
2 - Preencher campo "Grupo de assunto" 3
2 - Preencher campo "Assunto" 3
2 - Preencher campo "Gênero do assunto" 3
2 - Preencher campo "Editora" 3
2 - Marcar checkbox "Não possui ISBN" 2
2 - Salvar cadastro 7
2 - Acessar tela de consulta de exemplar 4
2 - Clicar em "Incluir exemplar" 3
2 - Pesquisar título 6
2 - Selecionar título 4
2 - Preencher campo "Qtde. de tombo" 4
2 - Salvar cadastro 7
2 - Logout 5


Cenário de uso #3 - Cadastro de título (Fluxo 2)
Ação realizada Think Time (segundos)
3 - Acessar tela de consulta de título 4
3 - Clicar em "Incluir título" 3
3 - Preencher "Tipo" 3
3 - Preencher campo "Autor" 4
3 - Preencher campo "Grupo de assunto" 3
3 - Preencher campo "Assunto" 3
3 - Preencher campo "Gênero do assunto" 3
3 - Preencher campo "Editora" 3
3 - Marcar checkbox "Não possui ISBN" 2
3 - Salvar cadastro e gerar exemplar 7
3 - Preencher campo "Qtde. de tombo" 4
3 - Salvar cadastro 7
3 - Logout 5


Cenário de uso #4 - Cadastro de exemplar
Ação realizada Think Time (segundos)
4 - Acessar tela de consulta de exemplares 3
4 - Clicar em "Incluir exemplares" 3
4 - Pesquisar título 5
4 - Selecionar título 3
4 - Preencher campo "Qtde. de tombos" 4
4 - Salvar cadastro 7
4 - Logout 5


Cenário de uso #5 - Cadastro de memória documental
Ação realizada Think Time (segundos)
5 - Acessar tela de consulta de memória documental 4
5 - Clicar em "Incluir memória técnica documental" 4
5 - Preencher campo "Tipo de acervo" 5
5 - Preencher campo "Idioma" 5
5 - Preencher campo "Autor" 5
5 - Preencher campo "Tipo de anexo" 5
5 - Salvar cadastro 7
5 - Logout 5


Cenário de uso #6 - Cadastro de leitor munícipe
Ação realizada Think Time (segundos)
6 - Acessar tela de consulta de leitor 4
6 - Clicar em "Incluir leitor" 4
6 - Preencher campo "Categoria de leitores" 3
6 - Preencher campo "CPF" 10
6 - Preencher campo "CEP" 9
6 - Salvar cadastro 12
6 - Logout 5


Cenário de uso #7 - Realizar empréstimo
Ação realizada Think Time (segundos)
7 - Acessar tela de consulta de leitores 4
7 - Pesquisar leitor 6
7 - Selecionar leitor 3
7 - Preencher campo "Biblioteca" 8
7 - Clicar no ícone de pesquisa de título 3
7 - Pesquisar título 15
7 - Selecionar título 4
7 - Clicar em "Confirmar" 3
7 - Salvar movimentação 10
7 - Logout 5


Cenário de uso #8 - Realizar devolução
Ação realizada Think Time (segundos)
8 - Acessar tela de consulta de devolução 4
8 - Pesquisar leitor 8
8 - Selecionar leitor 4
8 - Preencher campo "Biblioteca" 8
8 - Marcar checkbox "Selecionar todas as devoluções" 3
8 - Salvar movimentação 10
8 - Logout 5


Cenário de uso #9 - Realizar renovação
Ação realizada Think Time (segundos)
9 - Acessar tela de renovação 4
9 - Pesquisar leitor 8
9 - Selecionar leitor 5
9 - Preencher campo "Biblioteca" 8
9 - Selecionar opção "Renovação" 4
9 - Salvar movimentação 10
9 - Logout 5


Cenário de uso #10 - Realizar reserva
Ação realizada Think Time (segundos)
10 - Acessar tela de reserva 4
10 - Pesquisar leitor 8
10 - Selecionar leitor 5
10 - Preencher campo "Biblioteca" 8
10 - Clicar no ícone de pesquisa 4
10 - Pesquisar exemplar 12
10 - Selecionar exemplar 5
10 - Confirmar seleção 3
10 - Salvar reserva 10
10 - Logout 5


Cenário de uso #11 - Consulta externa
Ação realizada Think Time (segundos)
11 - Acessar tela de consulta externa 4
11 - Pesquisar título 10
11 - Logout 5

Resultado dos testes

Nesta seção serão apresentados os resultados obtidos da execução dos testes.

  • Porcentagem de tempo do processador
Descrição: Mede a saturação do processador e mostra a quantidade de tempo despendida para processar as threads por todas as CPUs.
Limite recomendado: Abaixo de 75 %.
Análise: A aplicação demonstrou desempenho esperado até atingir 550 usuários simultâneos, onde apenas o servidor WEB01 sofre um pico e os demais servidores não utilizam tanto processamento. Este comportamento esta relacionado a quantidade de erros gerados pela aplicação.
2016-07-19 Biblioteca TempoProcessador.png


  • Porcentagem de memória utilizada
Descrição: Indica a porcentagem de memória utilizada para uso dos processos.
Limite recomendado: Abaixo de 75 %.
Análise: Em dois momentos o WEB01 sofreu uma queda na utilização da memória. Os demais servidores mantiveram-se estáveis quanto a utilização de memória.
2016-07-19 Biblioteca MemoriaUtilizada.png


  • Kbytes totais pela interface de rede
Descrição: Indica quantos Kbytes foram enviados e recebidos a cada segundo pela interface de rede.
Limite recomendado: Menor que 5 Mbytes para uma rede de 100Mbps, menor que 50 Mbytes para uma rede de 1000 Mbps. (Quanto menor melhor).
Análise: Foi observado que quanto maior a quantidade de erros de dll salvas menor a quantidade de Kbytes enviados e recebidos.
2016-07-19 Biblioteca InterfaceDeRede.png


  • Tempo médio de resposta das requisições
Descrição: Indica o tempo médio de resposta das requisições.
Limite recomendado: 5 segundos.
Análise: A partir de 300 usuários simultâneos até 400 usuários ocorre uma alta no tempo de resposta da aplicação, tendo um pico com 350 usuários simultâneos.
2016-07-19 Biblioteca TempoDeResposta.png
2016-07-19 Bibliote TempoDeResposta Leg1.png
2016-07-19 Bibliote TempoDeResposta Leg2.png


  • Tempo de vazão
Descrição: Indica a quantidade total de request por segundo.
Limite recomendado: Quanto maior melhor.
Análise: A aplicação teve apenas um desvio quando utilizada por 350 usuários.
2016-07-19 Biblioteca Vazao.png


  • Porcentagem de erro
Descrição: Indica a porcentagem de erro.
Limite recomendado: Quanto menor melhor.
Análise: A aplicação possui erros funcionais que não retornam mensagem na tela para o usuário, os mesmos são apenas salvos em logs de erros.
2016-07-19 Biblioteca Erros.png