MMS医药管理系统
项目介绍
1.1 编写目的
本需求规格说明书目的在于阐述该系统的主要功能、性能及外部接口需求,读者范围为项目组所有成员,包括开发工程师、测试工程师、用户及可能存在的潜在读者。
1.2 背景
本系统由XXXX软件有限公司面向广大民营药店、县区级医院、个体诊所等群体的药品和客
户等信息的管理需求,采用Spring+SpringMVC+Mybatis+Easyui架构实现,为单体药店、批发企业、零售连锁企业,提供有针对性的信息数据管理方案。
1.3 软件概述
本系统目标定位于医院、药店等部门进行病人客户、药品经办人、药品信息的集中管理,
按照国家医药药品安全管理GSP要求,包含上万条药品可实时查询药品信息,方便客户药
品信息录入。系统提供包括查询模块、录入模块、删除模块、修改模块、浏览模块、打印
模块和用户管理模块等七大功能模块,实现药品、经办人、医院病员客户全程信息化管
理,达到资源最优化,利用率最高等目标。系统只有一个超级管理员,可以创建系统用户
并进行权限管理,其他用户没有用户管理权限,只有其他权限。不同的用户可以进入不同
的模块进行相应操作。
一、项目需求分析
拿到项目需要对项目进行分析,对需求规格说明书进行解读,对有疑惑的模块在评审会议上做记录并且可以向产品经理、开发提出需求的疑惑点,接下来根据测试组长划分给自己的功能,按照需求规格说明书进行业务流程熟悉,可以对需测模块做出相应的规划
二、项目过程
根据需求说明书考虑到隐形需求和显性需求,我主要测试了三个模块:登录模块、信息查询模块、信息录入模块。
1.写出测试点
2.编写测试用例
首先需要在禅道建立项目,然后导出测试用例的模板
在excel中编写各模块的测试用例
写好后需要将模板上传到禅道
接下来根据用例进行执行,并且转为bug
3.MMS环境部署
安装jdk
- tar -zxvf jdk-8u11-linux-x64.tar.gz -C java/
- 配置环境变量
- 配置文件:/etc/profile
- export JAVA_HOME=/opt/java/jdk1.8.0_11(/home/gmq/homework/work_1/opt/java/jdk1.8.0_11)
- export CLASSPATH=JAVA_HOME/lib/bt.jarJAVA_HOME/lib/tools.jar
- export PATH=JAVA_HOME/binPATH
- 刷新配置文件生效
- source /etc/profile
- 验证
- java -version
- javac
安装tomcat
-
解压
- unzip xx.zip -d 目录
-
移动war包到解压包中
- tomcat/webapps/
-
启动tomcat
-
需要执行权限
-
-
sh ./startup.sh
-
-
-
验证
- 在物理机上通过浏览器访问http://虚拟机ip:8080
- 关闭防火墙
-
tomcat启动之后,war包会自动解压
配置数据库
在线安装
-
安装wget工具:yum -y install wget
-
下载mysql5.7的安装源:
-
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
-
安装源
-
rpm -ivh mysql-community-release-el7-5.noarch.rpm
-
安装mysql-server
- yum -y install mysql-server
-
检查是否安装好
- rpm -qa | grep mysql
-
启动mysql
- systemctl start mysqld
-
登录数据库
-
默认没有密码
- mysql -uroot -p直接回车
-
创建数据库
- create database mms charset=‘utf8’;
-
切换到mms数据库
- use mms;
-
执行sql文件
- source mms.sql
修改配置文件
- source mms.sql
-
重启tomcat服务
-
进入tomcat/bin
-
关闭tomcat:sh ./shutdown.sh
-
启动tomcat:sh ./startup.sh
-
-
再次通过浏览器访问:
- http:/虚拟机的ip:8080/mms
-
缺陷管理
三、 总结
这次项目的测试是在Linuxs部署的,然而在部署过程中我也遇到了一些问题,比如访问网址时报出访问失败的错误,当时部署完之后没有头绪,不知道是那一步出了问题,关于404错误 我还实验了好多方法,最后发现是防火墙没有关闭,还有一个严重的错误,就是在部署数据库的时候,由于我有两个数据库连接方式,一个是禅道的,一个是之前自己安装的,然后连接的端口由于两个数据库环境产生了冲突,导致mms的sql数据库无法导入,我忙百度了很久,这个错误整整卡了我两天,我设置;另一个安装的数据库,把原先配置好的环境删掉,并且在任务管理器中将这个服务停掉,但是还是无法连接禅道的数据库,后来我请教了学长,他一眼就看出了问题,是禅道的数据库的用户名和密码与所需数据库的用户名和密码不一致导致的,而且两个数据库同用一个端口冲突了,需要重新给禅道换一个端口,最后数据库配置成功了。这个项目对我来说很有意义,还有很多地方需要改进,比如测试缺陷的输出以及覆盖率等方面的问题都需要进一步做出优化。
四、基于Unittest框架做自动化测试
1 登录模块
登录成功
import unittest
from time import sleep
from selenium import webdriver
class Login_Test(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.get('http://localhost:8080/mms/')
self.driver.implicitly_wait(30)
self.imgs = []
def tearDown(self):
sleep(3)
self.driver.quit()
def test_login_sucess(self):
# 获取每个测试元素的数据
self.driver.find_element('id','username').send_keys("admir")
self.driver.find_element('id', 'password').send_keys("1234")
self.driver.find_element('xpath', "//input[@value='Login']").click()
登录失败
根据测试用例编写测试方法,一条用例就是一个方法
对于登录的测试数据,我用了数据驱动的方法将数据封装起来 提高代码的效率
import unittest
from ddt import ddt,data,unpack
from selenium import webdriver
import utils
from utils.uti import Utils
from settings import BASE_DIR
@ddt
class Login_Test(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.get('http://localhost:8080/mms/')
self.driver.implicitly_wait(30)
self.imgs = []
def tearDown(self):
self.driver.quit()
# 首先解包大括号
@data(*Utils.get_data_from_csv(BASE_DIR+r'/data/login/login_fail.csv'))
@unpack
@utils.uti.Utils.loginci
def test_login_fail(self,username,password,expect_result):
# 获取每个测试元素的数据
self.driver.find_element('id', 'username').send_keys(username)
self.driver.find_element('id', 'password').send_keys(password)
self.driver.find_element('xpath', "//input[@value='Login']").click()
# 断言错误提示
err_msg = self.driver.find_element('xpath', "//div[contains(@class,'messager-body')]/div[1]").text
self.assertEqual(err_msg, expect_result)
# @utils.loginci()
# def test_failed_snapshot(self,expect_result):
# err_msg = self.driver.find_element('xpath', "//div[contains(@class,'messager-bady')]/div[1]").text
# self.assertEqual(err_msg, expect_result)