2. 测试概要
2.1 测试采用的标准及技术
如表1、表2、表3所示。
表1 开始/中断/完成测试
开始/中断/完成测试 |
标准说明 |
开始测试标准
|
硬件环境可用且系统软件正确安装完成 |
中断测试标准 |
安装无法完成或程序的文档有相当多的失误或系统异常 |
完成测试标准 |
完成测试计划中的测试规划并达到测试质量的目标,并由胡良,李红亮确认 |
表2 测试技术
测试技术 |
说明 |
编写测试用例
|
在产品编码阶段编写测试用例 |
单元测试 |
对具体模块或函数进行测试 |
集成测试 |
检测模块集成后的系统是否达到需求 |
系统测试 |
对业务流程及数据流的处理是否符合标准,系统对业务流的处理是否存在逻辑不严谨和错误以及是否存在不合理的标准及要求 |
表3 测试类型
开始/中断/完成测试 |
标准说明 |
功能测试
|
根据《图书销售系统需求规格说明书》和《图书销售系统系统设计说明书》,检查产品是否正确实现了功能 |
边界值测试 |
选择边界数据进行测试,确保系统功能正常,程序无异常 |
界面测试 |
检查界面是否美观合理 |
文档测试 |
检查文档是否足够、描述是否合理 |
2.2 单元测试(各类函数)
利用Visual Studio 2012中自带的单元测试功能进行单元测试,测试各个类中的函数。按要求输入,测试与预期结果是否吻合,如果不吻合,则单元测试结果,将显示失败或其他错误信息,若成功则单元测试结果将显示“通过”,如表4所示。
表4 单元测试
序号 |
测试函数名 |
函数功能 |
是否成功 |
是否更正 |
1 |
AddButton_OnLButtonUp |
添加管理员对话框的确认按钮按下后,系统获取用户输入的账号以及密码文本,并向管理员列表中添加新的记录 |
是 |
/ |
2 |
LoginButton_OnLButtonUp |
登陆窗体对话框的登陆按钮被按下后,系统会更具登陆类型(管理员或者用户)自动检测和匹配用户输入账号以及密码,成功则执行登陆操作,错误则给出提示 |
是 |
/ |
3 |
OnInitControl |
程序初始化函数,系统启动时加载本地计算机信息时初始化载入动画,并对所有的工作页面进行隐藏和初始化 |
是 |
/ |
4 |
OnActiveTabChanged |
工作页面切换函数,通过用户选择的页面按钮,激活按钮对应的工作区域和页面 |
否 |
是 |
5 |
intrueBut_OnLButtonUp |
库存调拨函数,当库存调拨窗体的确认按钮被按下时,系统检测用户输入的调拨数量文本,搜索和匹配仓库列表中的入库图书信息,在起始仓库以及目标仓库之间进行库存调拨,更新调拨后的库存数据 |
是 |
/ |
6 |
updateprice_button_OnLButtonUp |
图书调价函数,当图书调价窗体的确认按钮被按下时,系统自动检测用户输入的新的销售价格,搜索和匹配柜台图书列表中对应的Item并对其的销售价格进行修改 |
是 |
/ |
2.3 集成测试
本系统的集成测试重点是工作页面的跳转和切换是否正确,以及页面间参数的传送是否正确。
对于页面间的跳转测试,主要测试点击本系统中的各个主功能按键的时候是否跳转和切换到指定的页面。对于参数的传递,主要测试页面间传递参数所产生的结果是否正确。
2.4 系统测试
针对图书销售系统,按照《图书销售系统需求规格说明书》中的功能模块设计,为系统的各项功能设计测试方案,其中对数据要求不高的功能只是提出了大致的测试要求,但对于几项数据正确性要求比较高的功能我们按照等价类划分的方法,设计了测试用例。对于每个测试用例,均以清晰的表格形式记录了测试结果(通过或者不通过)、发现问题、测试人员及测试时间。
对于性能测试、按照《图书销售系统需求规格说明书》对性能的要求,设计了性能测试的表格。按照这个表格对系统中比较重要的几项性能需求进行了测试。每项测试同功能测试一样均记录了发现问题、测试结果、测试人员及测试时间。
3. 单元测试
3.1 管理员添加函数测试
测试添加管理员事件处理代码文件AddAdminWnd.lua下的函数AddButton_OnLButtonUp(self)
AddAdminWnd.lua事件处理代码在\View\layout目录下的文件夹中
函数声明如下:function AddButton_OnLButtonUp(self)
函数预期实现的功能:添加管理员对话框的确认按钮按下后,系统获取用户输入的账号以及密码文本,并向管理员列表中添加新的记录。
输入:运行图书销售系统,点击上层主要功能按钮进入基础信息管理页面,在切换的工作区间中点击下层功能按钮“管理员信息”,点击切换的三层子功能按钮“添加管理员”,在弹出的管理员添加窗体中输入管理员的账号以及密码。
local ID = self:GetOwner():GetUIObject("Admin_ID_text"):GetText()
local PSW = self:GetOwner():GetUIObject("Admin_PSW_text"):GetText()
期望输出:
如果不存在相同账号名的管理员账号,则添加成功,更新管理员信息列表:
AdminInfoItem:GetControlObject("Admin_ID"):SetText("管理员账号: "..ID)
AdminInfoItem:GetControlObject("Admin_PSW"):SetText("管理员密码: "..PSW)
如果账号名重复,则输出异常信息:
XLMessageBox("账号已存在,请重新输入")
测试结果:通过
3.2 系统登陆函数测试
测试用户或者管理员进行系统登陆的事件处理代码文件LoginWnd.lua下的函数LoginButton_OnLButtonUp(self)
LoginWnd.lua事件处理代码在\View\layout目录下的文件夹中
函数声明如下:function LoginButton_OnLButtonUp(self)
函数预期实现的功能:登陆窗体对话框的登陆按钮被按下后,系统会更具登陆类型(管理员或者用户)自动检测和匹配用户输入账号以及密码,成功则执行登陆操作,错误则给出提示。
输入:运行图书销售系统,点击主界面下方工作区的右侧用户账号信息、本地计算机系统信息以及时钟综合显示区域中的系统登陆按钮,在弹出的系统登陆窗体中选择登陆的类型(管理员登陆或者用户登陆),待界面以及登陆模式切换完成后,输入对应类型的账号密码。
listbox4_itemLayout:GetChildByIndex(var -1):GetControlObject("Adm
in_ID"):GetText():match(" (.*)")
listbox4_itemLayout:GetChildByIndex(var - 1):GetControlObject("Adm
in_PSW"):GetText():match(" (.*)")
Listbox5_itemLayout:GetChildByIndex(var -1):GetControlObject("Use
r_ID"):GetText():match(" (.*)")
Listbox5_itemLayout:GetChildByIndex(var - 1):GetControlObject("Use
r_PSW"):GetText():match(" (.*)")
期望输出:
系统根据用户登陆类型,检索对应的管理员或者用户账号列表,匹配成功则登陆成功: Login_type_flag:SetTextureID("Logining_app_admin")
Login_info_type:SetText("账号类型:管理员")
Login_info_name:SetText("账 号:"..ID_text)
Login_type_flag:SetTextureID("Logining_app_user")
Login_info_type:SetText("账号类型:用户")
Login_info_name:SetText("账 号:"..ID_text)
匹配失败,则输出异常信息:
XLMessageBox("管理员账号或者密码错误")
测试结果:通过,界面数据信息更新显示成功
3.3 系统初始化函数测试
测试图书销售系统运行初始化事件处理代码文件MainWnd.xml.lua下的函数OnInitControl(self)
MainWnd.xml.lua事件处理代码在\View\layout目录下的文件夹中
函数声明如下:function OnInitControl(self)
函数预期实现的功能:程序初始化函数,系统启动时加载本地计算机信息时初始化载入动画,并对所有的工作页面进行隐藏和初始化。
输入:运行图书销售系统,在主界面显示之前系统自动获取本地计算机的基础信息,将得到的信息进行初始化,将计算机基础信息以及时钟信息显示到主界面工作区的右侧信息集合区域中。数据输入动作由C#端的程序代码(MyClass.cs)与LUA脚本交互执行。
C#端:
public string GetComputerName()
public string GetSystemType()
public string GetCpuID()
public string GetTotalPhysicalMemory()
public string GetNetCardIP()
public string GetDate()
LUA端:
local myClassFactory = XLGetObject("HelloBolt.NET.MyClass.Factory")
local myClass = myClassFactory:CreateInstance()
local computername = myClass:GetComputerName()
local systemtype = myClass:GetSystemType()
local cpuid = myClass:GetCpuID()
local physicalmemory = myClass:GetTotalPhysicalMemory()
local netcardip = myClass:GetNetCardIP()
local dateinfo = myClass:GetDate()
期望输出:
软件系统对应区域的数据更新以及显示:
computername_control:SetText("计算机名:"..computername)
systemtype_control:SetText("系统型号:"..systemtype)
cpuid_control:SetText("cpu序列号:"..cpuid)
physicalmemory_control:SetText("物理内存:"..physicalmemory.." B")
测试结果:通过,界面数据信息显示成功
3.4 功能按钮激活函数测试
测试主要功能按钮响应事件处理代码文件MainWnd.xml.lua下的函数OnActiveTabChanged(self)
MainWnd.xml.lua事件处理代码在\View\layout目录下的文件夹中
函数声明如下:function OnActiveTabChanged(self)
函数预期实现的功能:工作页面切换函数,通过用户选择的页面按钮,激活按钮对应的工作区域和页面。
输入:运行图书销售系统,点击上层主要功能按钮进入各个不同的工作区域和页面管理。
local baseinfoButton = ownerTree:GetUIObject("baseinfo.button")
l