资源描述
《软件工程》课程设计
小组报告
课程设计题目:网上书店
专业: 班级:2**4级
组长:
完成起止日期:2015-10-6至2015-12-25
小组完成任务情况统计表(占用一页)
学号
姓名
项目角色
任务完成情况简评
组内评分
签字
联系
方式
1301170437
主程序员
完成情况好,协调小组工作进程
1302270503
辅助程序员
能较快完成工作,完成情况好
1301170504
辅助程序员
工作认真,完成情况好
1301061439
素材文档员
能较好的完成实验报告以及文档保管工作
网页设计员
进行网页的设计
一、课程设计概述(目的、任务及分工情况、开发环境、参考资料)
1、目的
通过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。
具体如下:
1. 学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编码和测试方面的知识;
2. 熟悉自动化的软件开发工具Rational Rose,并将其运用于软件开发的全过程;
3. 进一步加强和提高软件工程文档的编写能力;
4. 培养协作能力和团队精神。
该系统管理员可以维护客户注册信息、维护图书信息、处订定单信息、维护系统公告、网上售书。查看图书调查报告、游客可以在线注册为会员、投票、购书。本系统的设计目标将最终定位于完成以上所述的系统主要业务的基本模型上。
2、任务及分工情况
任务:采用不同的软件开发技术,完成对软件开发项目的需求分析过程,给出系统的
逻辑功能模型,数据字典以及规格说明书。
分工情况:每人分担不同的任务,组长作为主程序员全面协调小组工作,负责整个项目开发工作、网站需求分析、系统测试与调试和小组文档核查等工作;**,***作为辅助程序员主要负责网站结构设计与前台程序的开发等工作,以及负责网站数据库设计与后台程序的开发等工作;***文档管理员主要负责完成课程设计小组最终报告、小组电子文档管理和帮助系统开发等工作;**涛作为网页设计员主要负责美工、网页设计与实现等工作。
3、开发环境
系统名称:《网上书店管理系统》
需求背景分析:随着互联网的迅速发展以及我国经济的稳定平衡发展,人们对于知识的追求也越来越高,因而市场场上出现了各类的图书,但由于各种各样的原因使得消费者在选购图书的时候不能找到自己合意的书籍,同时由于网络经济的迅速发展激生出了网上卖书的现象,由于网上书店里面的图书相当丰富,且价格较市场上的书店里的便宜,以致于越来越多的人上网购书,同时也使得越来越多的人在网上开设自己的书店,本系统即是在以上各种条件成熟的条件下,建立的一个可以让消费者登录本系统购买他们的图书的一个网上书店管理系统、
系统用途:本系统利用网络平台,使得消费者和销售者足不出户即可实现买书和卖书的行为,同时大大减少的人员的参与。
系统使用范围:网上想买书者。
4、参考资料
①《实用软件工程》(第二版)陆慧恩 张成姝 编著 清华大学出版社
②《软件工程设计》吕云翔 刘浩 王希鹏 周建 编著 机械工业出版社
③《ASP.NET网络应用开发例学与实践》郭常圳 李云锦 编著 清华大学出版社
④《ASP.NET2.0(C#)基础教程》李勇平 编著 清华大学出版社
二、项目的需求分析过程及需求模型
1、可行性分析
可行性研究是系统分析阶段的第二项活动。此活动的主要目标是:进一步明确系统的目标、规模与功能,对系统开发背景、必要和意义进行调查分析并根据需要和可能提出开发系统的初步方案与计划。可行性研究是对系统进行全面、概要的分析。通过调查分析,新系统设计方案有以下三个可行性:
1.技术可行性:本系统采用 Windows 作为操作平台。数据库系统选用 SQL server2005,该数据库管理系统提供数据库之间的数据复制功能,可代替现有系统单据数据的手工传递工作,降低出错率,提高数据的可用性。本系统的开发平台选用 visual studio 2005,这是目
前 web数据库应用软件的主流开发平台。
2.经济可行性:采用新的网上书店可取代原系统的工作,减少人工开支,节省资金,并且可大大提高信息量的取得,缩短信息处理周期提高员工信息的利用率,使销售质量更上一个台阶。
3.营运可行性(1).本系统操作简单,易于理解,只需通过简单培训,上手较快,营运环境要求低。(2).面对于系统设计还应该以“标准性、安全性、高效性、保密性、可维护性”为标准,在着眼于当前实用的基础上,为将来系统的扩展,升级留有余地。软件的开发应能在较长时间内满足学校的发展需要。
2、系统需求分析
1. 总体需求
建立对图书提供全面管理信息的系统对所有的图书,客户提供全面管理对图书详细信息提供管理。
2. 功能需求
在Internet,客户可通过IE或其他浏览器浏览书目信息;在互联网,可提交订单;具有购物车功能;客户能通过书名来检索书籍;客户可在网上进行注册,成为会员;客户能查看当前订单和以往订单;书店员工能查找客户联系信息;书店员工在发货后能改写订单中的发货日期。
3. 性能需求
网上书店系统与相关单位的链接;系统可以对图书的库存进行统计;易于维护和扩充;系统界面设计友好,操作方便、灵活; 具有高可靠性和冗错能力,不允许系统在工作时间停机,不允许系统丢失图书信息,不允许在运行期间出现故障和错误;具有安全检查机制,非法用户不能使用系统,不能偷看系统信息,不能修改图书,防止随意删改,同时提供信息备份的服务; 具有保密机制,各级使用者只能看到允许查看的系统信息;
三、项目设计模型(包括总体设计和详细设计),重点阐述采用的主要方法与技术
1、总体设计
项目规划:
网上书店管理系统是一个典型的 web 数据库开发应用程序,由前台图书展示及销售、后台管理两部分组成。
1.1、前台商品展示及销售:该部分主要包括新书上架、购物车、
会员管理、图书公告及订单查询、图书查询等。
1.2、后台管理:该部分主要对商城内的一些基础数据进行有效管
理,包括图书管理、会员管理、订单管理、公告管理等。
运行环境规定
程序版本
项目
详细
操作系统
Windows XP
数据引擎
Microsoft Sql Server 2005
权限要求
对 Sql Server 数据库具
有建表、备份的权限 对
SqlServer 数据库具有建
表、备份的权限
硬件要求
双 XEON2.4GCPU 1G
内存 RAID5 数据冗余
磁盘阵列或更高
开发工具:
数据库
Microsoft Sql Server 2005
开发工具
Visual studio 2005
2、概要设计
2.1功能分析层次图:
网上书店管理系统
首页
购物车
订单管理
会员管理
收银台
图书展台
会 员 注 册
填写订 单信 息
移出 购 物 车
添加至购物车
图 书分类 浏览
新 书 上 架
书上架
清 空购 物 车
购 书 结 账
会 员 登 录
会员 登录修改
订 单 查 询
查 看 购 物 车
2.2数据库结构设计
网上书店管理系统从管理员,用户(会员)出发,通过注册会员实现对图书的购买及款项的交付。其中通过对图书的分类查询来获取自己需要的图书,因而确定图书的分类表,通过对图书的分类,可以实现对实际图书的管理,进而确定有了图书的详细介绍表即图书表;但在消费者买书的时候需要将自己的订单整理好放到订单表中,故而有了用户的订单表,这是在确定订单的时候用的表,而之前则有一个购物车表,使得用户在网站浏览的时候能将自己喜欢的图书暂时保存在自己的购物车表中,将确定是否购买时,可以将自己不购买的图书随时移出购物车。还有就是在消费者买完图书后,卖家为了获得消费者们的评价,以及是否还需要在进这种书时,专门有一个用户评价的表格来表明消费者们对哪类书感兴趣,进而随时改变销售策略。
3、表的详细设计:
书籍的类别表:Category
书籍的详细信息列表:
消费者的注册信息列表:
消费者的订单列表:
消费者的订单书籍详细信息列表:
消费者的购物车信息列表:
消费者对于购买的书籍的评价列表:
它们的数据之间的关系如图所示:
通过对以上设计图的步骤分析,可以使购买者快速方便的学会在网上购书的流程。
3、设计测试方案:
为保证系统的数据安全性,进入本系统购书时需要使用自己的账号,密码,这样在以后的购书过程中就无需再输入账号或密码了,节省了很多时间。本系统功能模块主要有三个:游客注册成为会员,将购买的书籍放进自己的购物车,结账等待收书。
4、用例图
a、管理者用例:
1.登录:管理员登录。
图表 a.1管理者登录用例图
2.订单管理:包括对订单的增加删除以及查询订单功能。
图表 a.2管理者对订单管理用例图
3.图书管理:对图书的查询(通过年份、书名、作者查询)、删除、添加以及对图书的修改。
图表 a.3管理者对图书管理用例图
4.用户管理:对用户的查询,删除用户。
图表 a.4管理者对用户管理用例图
b、 客户用例图
1.登录:用户登录。
图表 b.1客户登录用例图
2.订单管理:让用户可以对自己订单进行查看、撤销、订单的查询、订单的日期查询、修改订单等等。
图表 b.2客户对订单管理用例图
3.图书选购:通过刘丹图书的信息,当需要购买时创建购物车,通过购物车来进行对图书进行浏览、删除以及订单的生成和数量的修改等等。
图表 b.3客户图书选购用例图
4.注册:用户的注册。
图表b.4客户注册用例图
5、详细设计
5.1系统界面设计
①进入网站显示的界面当用户在URL中输入本网站管理系统的地址后,进入到本网站首页,若不想买书只是看看则是作为游客身份,这时可以看到网站推荐的最新书籍的信息,以及其他图书的信息。然而只能浏览,不能购买。若想买书则需要注册成为会员身份。
②注册登陆界面
注册登陆界面的主要功能就是让购书者将自己的信息写入数据库存储起来,当用户确认买书时,售书者根据用户的注册信息将用户所购买的书籍发送到用户注册的地址。
③书籍列表界面及详细详细书籍介绍界面
此界面通过对书籍的详细介绍使得用户对自己购买的书籍有一详细的了解 。同时可以扩大自己对其他图书的了解,进一步购买做准备。
④购物车页面:
此模块的主要功能是充当一个仓库,不过此仓库装的是想要购买的书籍,用户在网站浏览时可以随时将自己喜欢的图书放进进购物车,最后付账时可以将自己不买的图书移除购物车。
⑤账户页面
此页面主要是记录了会员购买的图书的列表,以及自己的总花费。可以让会员实时的知道自己的账单。
⑥查找页面
此模块的主要功能是方便用户快速的找到自己需要的书籍,不必未来会寻找而烦心。
⑦评论页面
此模块的主要功能为用户对自己购买的书籍作出评价,一方面让网站管理人员知道自己卖的书籍的好坏,一方面扩大自己网站的知名度。
5.2测试用例设计
每个系统都要有一定数量的测试用例来测试系统是否符合用户的要求,此书店管理系统也不例外。网上书店管理系统采用管理员admin极普通会员作为测试用例。
四、实现项目的过程与步骤
整个开发过程经历两个阶段,即两次迭代:
第一阶段:设计并实现网上书店系统;
第二阶段:根据第一阶段的经验,设计并实现书店管理系统;
1 第一阶段计划
工作内容
起止时间
工作量(人天)
人员分工
说明
<任务1>阶段一之前期调研阶段
2015-10-06至
201-10-12
5×6
全组
画出用例图,确定需求,尤其是重要需求
<任务2>阶段一之需求分析
2015-10-13至2015-10-20
5×7
全组
根据已经确定的需求,展开分析。确定模块划分。
<任务3>阶段一之总体设计
2015-10-22至
2015-10-29
5×7
全组
模块的总体设计
<任务4>阶段一之详细设计
2015-11-3至
2015-11-10
5×7
全组
根据总体设计进行详细设计,包括数据库设计
<任务5>阶段一之编码及模块测试
2015-11-15至
2015-11-25
5×10
全组
所有模块以及数据库的编码和模块测试
<任务6>阶段一之集成测试
2015-12-02至
2015-12 -17
5×15
全组
继承测试,整理工作产品并提交
2 第二阶段计划
待定
3 风险估计
由于组员还是学生,有各自的日常工作以及其他课程,因此在网上书店项目的的投入时间十分有限,这是本项目的最大风险,必须加以注意。
4预算
软件资金投入较少,具体预算分配简略。
5 支持条件
计算机 Windows XP
MicroSoft Visual 2005
五、遇到的困难与获得的主要成果
1主要问题:
①网站的安全性:
保证管理者和注册用户的密码安全,分权限管理,数据库访问控制;管理员应具有一定网络安全及防黑知识。
②网站可维护性:
网站管理者须懂得一定的服务器应用、ACCESS数据库应用、硬件维护、IIS配置等方面的技能。
③网站的灵活性:
系统应该具有良好的功能可扩充性,以应对未来用户的更高的要求。
④故障处理:
系统运行中难免出现一些故障,对此我们提出以下建议和要求:
l 对用户提交的重要资料及时备份。(如:当用户修改注册资料时要及时更新系统资料备份,以便于系统崩溃后资料的正确恢复。)
l 做好数据库和服务器的日常维护工作,出现故障时可与我们联系由我们帮助解决。
2主要成果:
游客进入系统使得首页
如图所示:
public partial class BookList : System.Web.UI.Page
{ protected void Page_Load(object sender, EventArgs e)
{ if (string.IsNullOrEmpty(BookTypeID))
return;
if (!IsPostBack)
BookList1.PageIndex = 1;
BindBookList(BookTypeID,BookOrderByFields.DateAdded);
BookList1.LblSearchCondition.Text = "搜索类别:" + BookTypeName;
} }
private string BookTypeID
get
{ if(BookTypeTreeNavigationExpanded1._SelectedNode==null)
if (Request.QueryString["BookTypeID"] == null)
return null;
return Request.QueryString["BookTypeID"].ToString();
} else
{ return BookTypeTreeNavigationExpanded1._SelectedNode.Value
} } }
private string BookTypeName
{ get { if (Request.QueryString["BookTypeName"] == null)
return null;
returnUri.UnescapeDataString( Request.QueryString["BookTypeName"].ToString());} }
2会员的登录注册信息
如图所示:
主要代码如下:
protected void RegisterClick(object sender, EventArgs e)
{ if (!Page.IsValid)
return; BookShopOnline.Model.User user = new User();
user.RoleID =(int) Role.RegisterUser; //必填项
user.UserName = RegisterUser1.TxtUserName.Text;
user.UserPwd = RegisterUser1.TxtUserPwd.Text;
user.Email = RegisterUser1.TxtEmail.Text; //选填项
user.RealName = RegisterUser1.TxtRealName.Text;
user.PostalCode = RegisterUser1.TxtPostalCode.Text;
user.Phone = RegisterUser1.TxtPhone.Text;
user.Address = RegisterUser1.TxtAddress.Text;
int result = new UserBll().InsertUser(user);
if (result == -2) { RegisterUser1.LblMsg.Text = "注册失败!该用户名已存在。"; return; }
if (result == -3) { RegisterUser1.LblMsg.Text = "注册失败!该Email已存在。"; return; if (result==1) { Response.Redirect("RegisterResult.aspx?BackUrl=" + hyperFromUrl.NavigateUrl); } }
else { RegisterUser1.LblMsg.Text = "注册失败!检查输入并重
试。"; } }
3图书分类及列表信息:如图所示:
主要代码如下:
protected void Page_Load(object sender, EventArgs e)
{ if (string.IsNullOrEmpty(BookTypeID)) return;
if (!IsPostBack) { BookList1.PageIndex = 1;
BindBookList(BookTypeID,BookOrderByFields.DateAdded);
BookList1.LblSearchCondition.Text = "搜索类别:" + BookTypeName; } } private string BookTypeID
{ get { if(BookTypeTreeNavigationExpanded1._SelectedNode==null)
{ if (Request.QueryString["BookTypeID"] == null) return null; return Request.QueryString["BookTypeID"].ToString();} else { returnBookTypeTreeNavigationExpanded1._SelectedNode.Value; }
}
} private string BookTypeName
{ get (if (Request.QueryString["BookTypeName"] == null)
return null;
return Uri.UnescapeDataString( Request.QueryString["BookTypeName"].ToString());
}
以下为图示的详细信息页面:
4查找图书页面如下:
主要代码为:
protected void Page_Load(object sender, EventArgs e)
{ BookDB bookDB = new BookDB();
MyList.DataSource =
bookDB.SearchProductDescriptions(Request.Params["txtSearch"]);
MyList.DataBind();
if (MyList.Items.Count == 0)
{ ErrorMsg.Text = "No items match your query"; }
此文档仅描述以上几个页面,其他的在运行系统时可以一一调试运行显示。
六、测试与运行记录(要求针对某个功能利用某种测试方法进行全面的测试)
测试用例设计原则:
1.测试用例的代表性:能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据、操作和环境设置等。
2.测试结果的可判定性:即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。
3.测试结果的可再现性:即对同样的测试用例,系统的执行结果应当是相同的。
1测试用例设计网上书店--等价类划分方法
一.方法简介:
1.定义
是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。
2.划分等价类:
等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。
1)有效等价类
是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
2)无效等价类
与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。
设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。
3.划分等价类的标准:
1)完备测试、避免冗余;
2)划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;
3)并是整个集合:完备性;
4)子集互不相交:保证一种形式的无冗余性;
5)同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到"相同的执行路径"。
4.划分等价类的方法:
1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
2)在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和一个无效等价类;
3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则);
6)在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。
5.设计测试用例:
在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件:有效等价类、无效等价类,然后从划分出的等价类中按以下三个原则设计测试用例:
1)为每一个等价类规定一个唯一的编号;
2)设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;
3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
二.实战演习:
输入条件
有效等价类
无效等价类
用户名:Username
首字符
字母 (1)
非字母 (2)
其他字符组成
字母或数字 (3)
非字母或数字 (4)
字符数
4~10个 (5)
<4个(6),>10个(7)
密码:Password
字符组成
字母或数字 (8)
非字母或数字 (9)
字符数
6~15个 (10)
<6个(11),>15个(12)
××编号/××数量:
ID_××/Count_××
字符组成
数字 (13)
非数字 (14)
位数
1~10位 (15)
0位 (16),>10位 (17)
××日期:Date_××
字符组成
四位数字 "-" 两位数字 "-" 两位数字 (18)
非前述组成 (19)
月部分数值
在1~12之间 (20)
0或>12 (21)
日部分数值
在1~31之间 (22)
0或>31 (23)
原价/售价/总价/×金:
Price/Cost/TotalCost
/Money_××/Finance_××
字符组成
数字("."数字) (24)
非前述组成 (25)
小数点后位数
0~2位 (26)
>2位 (27)
书名/出版商/作者:
BookName/Publisher
/Author
字符数
0~100 (28)
>100 (29)
图片路径: PicturePath
字符数
0~200 (30)
>200 (31)
内容简介: Comment
字符数
0~500 (32)
>500 (33)
推荐程度: RecomLevel
字符组成
数字 (34)
非数字 (35)
数值
0~5 (36)
非0~5 (37)
分类: classify
字符组成
数字 (38)
非数字 (39)
数值
0~4 (40)
非0~4 (41)
输入条件
有效等价类
无效等价类
用户名:Username
首字符
字母 (1)
非字母 (2)
其他字符组成
字母或数字 (3)
非字母或数字 (4)
字符数
4~10个 (5)
<4个(6),>10个(7)
密码:Password
字符组成
字母或数字 (8)
非字母或数字 (9)
字符数
6~15个 (10)
<6个(11),>15个(12)
××编号/××数量:
ID_××/Count_××
字符组成
数字 (13)
非数字 (14)
位数
1~10位 (15)
0位 (16),>10位 (17)
××日期:Date_××
字符组成
四位数字 "-" 两位数字 "-" 两位数字 (18)
非前述组成 (19)
月部分数值
在1~12之间 (20)
0或>12 (21)
日部分数值
在1~31之间 (22)
0或>31 (23)
原价/售价/总价/×金:
Price/Cost/TotalCost
/Money_××/Finance_××
字符组成
数字("."数字) (24)
非前述组成 (25)
2测试用例设计网上书店--边界值分析方法
一.方法简介:
1.定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
2.与等价划分的区别
1)边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。
3.边界值分析方法的考虑:
长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。
使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。
4.常见的边界值
1)对16-bit 的整数而言 32767 和 -32768 是边界
2)屏幕上光标在最左上、最右下位置
3)报表的第一行和最后一行
4)数组元素的第一个和最后一个
5)循环的第 0 次、第 1 次和倒数第 2 次、最后一次
5.边界值分析
1)边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。
例:测试计算平方根的函数
--输入:实数
--输出:实数
--规格说明:当输入一个0或比0大的数的时候,返回其正平方根;当输入一个小于0的数时,显示错误信息"平方根非法-输入值小于0"并返回0;库函数Print-Line可以用来输出错误信息。
2)等价类划分:
I.可以考虑作出如下划分:
a、输入 (i)<0 和 (ii)>=0
b、输出 (a)>=0 和 (b) Error
II.测试用例有两个:
a、输入4,输出2。对应于 (ii) 和 (a) 。
b、输入-10,输出0和错误提示。对应于 (i) 和 (b) 。
3)边界值分析:
划分(ii)的边界为0和最大正实数;划分(i)的边界为最小负实数和0。由此得到以下测试用例:
a、输入 {最小负实数}
b、输入 {绝对值很小的负数}
c、输入 0
d、输入 {绝对值很小的正数}
e、输入 {最大正实数}
4)通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、重量、大小、速度、方位、尺寸、空间等。
5)相应地,以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、 最短/最长、 空/满等情况下。
6)利用边界值作为测试数据
项
边界值
测试用例的设计思路
字符
起始-1个字符/结束+1个字符
假设一个文本输入区域允许输入1个到255个 字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,这几个数值都属于边界条件值。
数值
最小值-1/最大值+1
假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的 数值来作为边界条件。
空间
小于空余空间一点/大于满空间一点
例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。
7)内部边界值分析:
在多数情况下,边界值条件是基于应用程序的功能设计而需要考虑的因素,可以从软件的规格说明或常识中得到,也是最终用户可以很容易发现问题的。然而,在测试用例设计过程中,某些边界值条件是不需要呈现给用户的,或者说用户是很难注意到的,但同时确实属于检验范畴内的边界条件,称为内部边界值条件或子边界值条件。
内部边界值条件主要有下面几种:
a)数值的边界值检验:计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制。
项
范围或值
位(bit)
0 或 1
字节(byte)
0 ~ 255
字(word)
0~65535(单字)或 0~4294967295(双字)
千(K)
1024
兆(M)
1048576
吉(G)
1073741824
b)字符的边界值检验:在计算机软件中,字符也是很重要的表示元素,其中ASCII和Unicode是常见的编码方式。下表中列出了一些常用字符对应的ASCII码值。
字符
ASCII码值
字符
ASCII码值
空 (null)
0
A
65
空格 (space)
32
a
97
斜杠 ( / )
47
Z
90
0
48
z
122
冒号 ( : )
58
单引号 ( ‘ )
96
@
64
c)其它边界值检验
6.基于边界值分析方法选择测试用例的原则
1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
例如,如果程序的规格说明中规定:"重量在10公斤至50公斤范围内的邮件,其邮费计算公式为……"。作为测试用例,我们应取10及50,还应取10.01,49.99,9.99及50.01等。
2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。
比如,一个输入文件应包括1~255个记录,则测试用例可取1和255,还应取0及256等。
3)将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。
例如,某程序的规格说明要求计算出"每月保险金扣除额为0至1165.25元",其测试用例可取0.00及1165.24、还可取一0.01及1165.26等。
再如一程序属于情报检索系统,要求每次"最少显示1条、最多显示4条情报摘要",这时我们应考虑的测试用例包括1和4,还应包括0和5等。
4)如果程序的规格说明
展开阅读全文