一.引言
1.1 目的
为了保证超市管理系统的软件质量。首先,遵循规范和标准,开发团队应该遵循相关的软件开发规范和标准,如编码规范、设计原则和安全标准。这样可以确保开发人员采用统一的方法,减少错误和缺陷的产生,并提高代码的可读性和可维护性;其次,明确需求并进行全面的需求分析,在系统开发之前,准确定义用户需求并进行详细的需求分析是非常重要的。这可以帮助开发团队了解用户的期望和需求,避免功能偏差和需求不匹配的问题。然后,进行系统设计和架构规划,在设计阶段,开发团队应该制定合适的系统架构,并考虑系统的可扩展性、灵活性和性能等方面的需求。良好的系统设计可以提高系统的可靠性和稳定性。
接下来,实施全面的软件测试,软件测试是确保软件质量的重要环节。通过使用各种测试方法,如单元测试、集成测试和系统测试,测试人员可以发现潜在的问题和缺陷,并确保系统功能的正确性和稳定性。最后,进行持续的质量监控和改进,开发团队应建立质量监控机制,定期评估系统的性能和稳定性,并及时采取措施解决潜在的问题。此外,收集用户反馈并进行持续的改进,有助于不断提升系统的质量和用户体验。
通过遵循规范和标准、明确需求、系统设计和架构规划、全面的软件测试以及持续的质量监控和改进,可以有效地保证超市管理系统的软件质量。这将确保系统的功能完善、稳定运行,并满足用户的需求和期望。
系统的软件测试具有多个目的,包括:
发现和修复缺陷,软件测试的主要目标是通过测试活动来发现系统中的缺陷和问题。测试人员使用各种测试技术和方法,如功能测试、集成测试和系统测试,以检测软件中的潜在问题,并及时报告给开发团队,以便修复这些缺陷。
确保系统功能的正确性,软件测试旨在验证系统是否按照需求规格说明书和设计规范的要求进行开发。通过功能测试,测试人员可以验证系统的各项功能是否正常运行,并确保系统在各种使用情况下能够按照预期工作。
确保系统的性能和稳定性,性能测试旨在评估系统在不同负载条件下的性能表现,包括响应时间、吞吐量和资源利用率等。稳定性测试则用于验证系统在长时间运行或高负载情况下是否存在问题,如内存泄漏或性能下降。
验证系统的安全性,安全测试旨在检测系统中可能存在的安全漏洞和脆弱性,以确保系统对潜在的安全威胁具有足够的防护能力。通过安全测试,测试人员可以发现系统中的安全隐患,并提出相应的安全建议和改进措施。
1.2 背景
开发的软件系统是超市管理系统,超市管理系统适用于各种规模的超市和零售店铺,包括小型超市、连锁超市和大型商场等。无论是单店经营还是多店管理,该系统都能提供全面的业务管理功能,帮助管理者更好地监控和控制超市的运营。
超市管理系统是一个用于管理和运营超市业务的软件系统。它集成了各个业务模块,包括库存管理、销售管理、采购管理、会员管理、财务管理等,以提供全面的管理和监控功能。该系统能够帮助超市管理者更高效地管理库存、优化销售、提升服务质量,并提供实时的数据分析和报告,以支持决策制定。
超市管理系统具有以下优势和适用场景:
1.提高运营效率:超市管理系统可以自动化处理和跟踪超市的各项业务活动,如进货、销售、库存管理等,减少人工操作和繁琐的手工记录,提高运营效率。
2.实时库存管理:系统可以准确记录商品的库存数量和位置,及时提醒库存不足或过剩的情况,帮助管理者进行库存管理和补货决策,避免库存积压或缺货的问题。
3.优化销售和促销活动:系统可以跟踪销售数据和顾客购买行为,分析销售趋势和产品热门程度,为管理者提供数据支持,帮助他们制定有效的促销活动和定价策略。
4.会员管理和客户关系维护:系统可以管理会员信息,跟踪会员消费记录和积分,提供个性化的服务和优惠,增强与顾客的互动和忠诚度。
5.财务管理和报表分析:系统能够自动生成财务报表和业绩分析报告,提供准确的财务数据和经营指标,帮助管理者监控超市的财务状况和经营绩效。
二. 系统分析概述
2.1 系统需求分析
在系统需求分析阶段,首先要深入了解客户的需求。这包括与超市管理系统相关的功能需求、业务流程需求以及对系统性能、易用性、安全性等方面的期望。通过与客户的密切沟通和详细需求调研,我们可以获取到客户的具体需求,并将其作为系统开发的基础。
在明确客户需求后,我们需要对超市管理系统进行产品定位。产品定位是确定系统在市场中的定位和差异化竞争策略。通过市场分析和对竞争对手的了解,我们可以确定超市管理系统的特色和核心功能,以满足目标用户的需求,并与竞争对手形成差异化。
应用目标也是系统需求分析的重要内容之一。超市管理系统的应用目标是指系统的主要应用领域和目标用户群体。例如,系统可能面向各类超市和零售店铺,包括小型超市、连锁超市和大型商场等。明确系统的应用目标有助于我们界定功能范围,并为后续的系统设计和开发提供指导。
最后,我们需要定义超市管理系统的范围。范围定义是明确系统的功能边界和开发的范围。通过与客户和利益相关者的讨论和协商,我们可以确定系统开发的范围,包括所涵盖的功能模块、数据管理需求以及与其他系统的集成需求等。范围定义有助于确保系统开发过程中的目标明确,避免范围蔓延和功能冗余。
通过充分了解客户需求、明确产品定位、定义应用目标和范围,系统需求分析阶段能够为后续的系统设计和开发提供明确的指导,确保开发出满足客户需求的高质量超市管理系统。
2.2 系统功能分析
超市管理系统的功能分为客户端和后台管理两个部分。客户端包括注册、登录、查询和修改个人信息功能。后台管理包括登录、查询、添加、修改和删除功能。
1.客户端功能:
(1)注册功能:超市员工可以通过该功能进行注册,输入符合要求的信息即可完成注册,例如输入用户名、密码、工号等。
(2)登录功能:超市员工可以使用已注册的账号和密码进行登录,验证成功后可以进入系统,访问相关功能。
(3)查询功能:员工可以根据订单编号、订单供应商或是否付款下拉框等条件进行查询,以找到对应的订单。点击订单可以查看订单的详细信息。同样地,员工也可以根据供应商名称进行模糊查询,并查看供应商的具体信息。
(4)修改个人信息功能:员工可以通过该功能修改自己的登录密码,以确保账号安全。
2.后台管理功能:
(1)登录功能:管理员可以使用管理员账号和密码登录后台管理系统,以获得管理员权限。
(2)查询功能:管理员可以根据订单编号、订单商品对应的供应商或是否付款下拉框等条件进行查询,以找到对应的订单。管理员可以查看订单的信息,例如订单总价、订单对应的供应商、订单商品类别等。管理员也可以根据供应商编号、供应商名称进行模糊查询,并查看对应供应商的详细信息。此外,管理员可以根据用户名进行模糊查询,找到对应用户的信息,并查看用户的身份(管理员/普通用户)等。
(3)添加功能:管理员可以添加供应商、订单和用户。添加供应商时,需要输入供应商编码、供应商名称、联系人、联系电话、联系地址、传真和相关描述等信息,并进行一些校验。添加订单时,需要输入订单编码、商品名称、商品单位、商品数量、总金额、下拉框选择合作的供应商、选择是否付款等信息,并进行一些校验。添加用户时,需要输入用户编码、用户名称、用户密码、用户电话、下拉框选择用户性别、用户角色等信息,并进行一些校验。
(4)修改功能:管理员可以修改供应商、订单和用户的信息。在对应的位置输入需要修改的信息,并通过格式校验后,即可更新供应商、订单或用户的信息。管理员也可以修改自己的个人信息,主要涉及密码验证和修改等。
(5)删除功能:管理员可以选择需要删除的供应商,终止与该供应商的合作关系。管理员可以删除不需要的订单信息,从而清除不必要的数据。管理员还可以将某个用户从系统中移除,终止其使用系统的权限。
3.性能分析:
该系统主要面向超市员工,旨在提供便利的超市管理功能。由于系统涉及重要的超市信息,对系统的安全性要求较高。
(1)系统稳定可靠:考虑到系统将承载大量数据和重复操作,必须确保系统的稳定运行,避免出现不可靠的情况,从而影响超市的管理。需要预先准备应对系统故障等紧急情况的措施。
(2)系统安全性高:由于该系统涉及超市的进货订单和付款等与资金有关的信息,系统设计必须充分考虑信息的安全性。在系统运行时,需要采取安全技术,如防火墙和数据签名,来保证资源信息的安全。
(3)系统操作简单:系统的使用对象是超市员工,而不仅仅是专业技术人员。因此,在系统设计时要考虑到使用的便利性,操作界面应简单明了、易于上手,以方便用户使用。
(4)系统具备高度的开放性和扩展性:由于未来超市管理系统可能不断更新和发展,系统需要预留各种接口,以便增加和改进系统功能。同时,随着系统使用的增长,用户数量也会增加,因此系统的容量需要具备可扩展性,以方便日后满足不断增长的需求。
(5)高效的性能:超市管理系统需要具备高效的性能,以应对大量的数据处理和并发访问需求。系统应该能够快速响应用户的操作,保证系统的实时性和流畅性。
(6)用户友好的界面设计:为了提高用户体验,超市管理系统的界面设计应该简洁、直观,并符合用户习惯。合理的布局、清晰的标识和导航,以及易于理解和操作的界面元素,都是提升用户友好性的关键要素。
(7)迭代和持续改进:软件质量保证并不是一次性的任务,而是一个持续不断的过程。超市管理系统需要进行迭代和持续改进,及时修复和优化系统中的问题,以确保系统在长期运行中能够保持良好的质量和性能。
通过以上的软件质量保证措施,超市管理系统能够提供稳定可靠、安全高效、操作简单、具有开放性和扩展性的功能,满足超市员工对于管理需求的期望,并确保系统的质量和可靠性。
2.3 系统结构图
超市管理系统包括前台客户端模块和后台管理模块,它们相互协作实现系统的全面功能。
在前台客户端模块,超市员工可以使用注册功能进行账号注册,然后通过登录功能输入正确的账号和密码登录系统。登录成功后,员工可以使用查询功能来搜索订单。他们可以根据订单编号、订单供应商或是否付款的条件进行查询,并查看具体的订单信息。此外,员工还可以通过供应商查询功能根据供应商名称模糊查询供应商,并查看供应商的详细信息。另外,员工还可以使用修改个人信息功能来更改自己的登录密码等个人信息。
在后台管理模块,管理员可以使用登录功能输入管理员账号和密码登录系统。登录成功后,管理员可以使用查询功能来搜索订单、供应商和用户信息。他们可以根据订单编号、订单商品对应的供应商或是否付款的条件进行查询,并查看订单的详细信息,如订单总价、订单商品类别等。管理员还可以通过供应商查询功能根据供应商编号和名称进行模糊查询,并查看供应商的详细信息,如主要合作商品、供应商地址等。此外,管理员还可以通过用户查询功能根据用户名进行模糊查询,并查看用户的身份(管理员/普通用户)等详细信息。管理员还可以进行添加功能,包括添加供应商、添加订单和添加用户。他们可以输入相关信息并进行校验,通过后可以成功添加相应的供应商、订单或用户。管理员还可以进行修改功能,包括修改供应商、订单、用户和个人信息。他们可以输入需要修改的信息并进行验证后,更新相应的信息。此外,管理员还可以使用删除功能将不需要的供应商、订单或用户从系统中删除。
通过这些功能的相互配合,超市管理系统可以实现员工和管理员的需求,包括注册、登录、查询、修改、添加和删除等功能,从而提高超市管理的效率和准确性。
2.4 详细设计流程图
如图2.2所示,超市员工主要业务流程图展示了员工在超市管理系统中的操作流程。员工首先成功登录系统,然后进入系统的主界面。在主界面中,员工可以选择进行订单查询、供应商查询或个人信息管理。如果员工选择进行订单查询,他们会进入订单管理主界面,并输入相应的订单信息进行查询。如果员工选择进行供应商查询,他们会进入供应商管理主界面,并输入相应的供应商信息进行查询。如果员工需要修改个人信息,他们可以在个人信息管理界面输入要修改的信息。系统会根据员工的操作进行查询或修改,并给出相应的操作结果提示。无论操作成功与否,该流程图都会在完成相应功能或出现错误后结束。
如图2.3所示,超市管理员功能流程图展示了管理员在超市管理系统中的操作流程。管理员首先进行登录并通过验证成功后,进入系统的主界面。在主界面中,管理员可以选择进行订单管理、供应商管理或用户管理。如果管理员选择进行订单管理,他们会进入订单管理主界面,并可以进行订单的查询、修改和删除操作。如果管理员选择进行供应商管理,他们会进入供应商管理主界面,并可以进行供应商的查询、修改和删除操作。如果管理员选择进行用户管理,他们会进入用户管理主界面,并可以进行用户的查询、修改和删除操作。系统会根据管理员的操作进行相应的功能管理,并给出操作结果的提示。无论操作成功与否,该流程图都会在完成相应功能或出现错误后结束。
三. 系统详细设计
3.1 测试计划
如图2.3所示,超市管理员功能流程图展示了管理员在超市管理系统中的操作流程。管理员首先进行登录并通过验证成功后,进入系统的主界面。在主界面中,管理员可以选择进行订单管理、供应商管理或用户管理。如果管理员选择进行订单管理,他们会进入订单管理主界面,并可以进行订单的查询、修改和删除操作。如果管理员选择进行供应商管理,他们会进入供应商管理主界面,并可以进行供应商的查询、修改和删除操作。如果管理员选择进行用户管理,他们会进入用户管理主界面,并可以进行用户的查询、修改和删除操作。系统会根据管理员的操作进行相应的功能管理,并给出操作结果的提示。无论操作成功与否,该流程图都会在完成相应功能或出现错误后结束。
3.2 测试用例设计
黑盒测试用例设计:
序号 | 用例名称 | 测试目的 | 输入数据 | 预期结果 |
1 | 注册功能测试 | 验证系统能够正确处理员工注册功能,确保注册成功 | 员工信息: 姓名、工号、部门、密码等 | 注册成功,员工信息被成功保存到系统中 |
2 | 登录功能测试 | 验证系统能够正确验证员工的登录信息,确保登录成功 | 登录信息: 员工工号、密码 | 登录成功,跳转到系统主界面 |
3 | 订单查询测试 | 验证系统能够根据不同的查询条件正确查询订单 | 查询条件: 订单编号、供应商、付款状态等 | 返回与查询条件匹配的订单信息 |
4 | 供应商查询测试 | 验证系统能够根据不同的查询条件正确查询供应商 | 查询条件: 供应商名称、合作日期等 | 返回与查询条件匹配的供应商信息 |
5 | 修改个人信息测试 | 验证系统能够正确处理员工修改个人信息的请求 | 员工信息: 姓名、工号、部门、密码等 | 个人信息成功修改,新的信息被保存到系统中 |
6 | 添加供应商测试 | 验证系统能够正确处理管理员添加供应商的请求 | 供应商信息: 编号、名称、联系人、联系方式、地址等 | 供应商成功添加到系统中 |
7 | 添加订单测试 | 验证系统能够正确处理管理员添加订单的请求 | 订单信息: 编号、商品名称、商品数量、总金额、供应商、付款状态等 | 订单成功添加到系统中 |
8 | 添加用户测试 | 验证系统能够正确处理管理员添加用户的请求 | 用户信息: 编号、姓名、工号、密码、角色等 | 用户成功添加到系统中 |
9 | 删除供应商测试 | 验证系统能够正确处理管理员删除供应商的请求 | 供应商编号 | 供应商成功从系统中删除 |
10 | 删除订单测试 | 验证系统能够正确处理管理员删除订单的请求 | 订单编号 | 订单成功从系统中删除 |
11 | 删除用户测试 | 验证系统能够正确处理管理员删除用户的请求 | 用户编号 | 用户成功从系统中删除 |
白盒测试用例设计
序号 | 用例名称 | 测试目的 | 输入数据 | 预期结果 |
1 | 语句覆盖测试 | 验证系统能够覆盖登录逻辑中的所有语句,确保每一条语句都被执行到 | 用户名: "admin",密码: "password" | 所有语句均被执行,没有漏掉任何语句 |
2 | 条件覆盖测试 | 验证系统能够覆盖登录逻辑中的所有条件,包括真值和假值的情况 | 用户名: "admin",密码: "password" | 所有条件均得到正确处理,包括处理真值和假值的情况 |
3 | 路径覆盖测试 | 验证系统能够覆盖登录逻辑中的所有路径,包括不同的组合和顺序 | 用户名: "admin",密码: "password" | 所有路径均得到正确执行,包括不同的条件组合和顺序 |
4 | 边界值测试 | 验证系统能够处理边界值情况下的输入数据 | 用户名: 最小长度、最大长度,密码: 最小长度、最大长度等 | 系统能够正确处理最小长度、最大长度以及边界值的输入 |
5 | 异常处理测试 | 验证系统能够正确处理异常情况下的输入数据 | 用户名: 空值,密码: 错误密码等 | 系统能够给出适当的错误提示,处理异常情况下的输入 |
6 | 随机生成数据测试 | 验证系统能够正确处理随机生成的测试数据 | 随机生成的用户名和密码等 | 系统能够正确处理随机生成的测试数据,不出现错误或崩溃的情况 |
四. 测试执行
1.登录功能测试:
(1)打开超市管理系统登录页面。
(2)输入有效的员工工号和密码。
(3)点击登录按钮。
(4)验证登录是否成功:
·检查是否跳转到系统主界面。
·检查系统显示员工的个人信息。
·验证是否显示正确的登录用户。
测试代码
import org.junit.Assert;
import org.junit.Test;
public class LoginTest {
@Test
public void testValidCredentials() {
String username = "john";
String password = "password";
// 调用登录方法
boolean result = login(username, password);
// 预期结果为登录成功
Assert.assertTrue(result);
}
@Test
public void testInvalidCredentials() {
String username = "jane";
String password = "123456";
// 调用登录方法
boolean result = login(username, password);
// 预期结果为登录失败
Assert.assertFalse(result);
}
private boolean login(String username, String password) {
// 在此编写登录逻辑代码
// 假设登录逻辑为验证用户名和密码是否匹配,匹配则返回true,否则返回false
if (username.equals("john") && password.equals("password")) {
return true;
} else {
return false;
}
}
}
2.订单查询测试用例执行:
(1)进入订单查询界面。
(2)输入订单编号、供应商或付款状态等查询条件。
(3)点击查询按钮。
(4)验证查询结果是否正确:
·检查返回的订单信息是否与查询条件匹配。
·检查订单信息的准确性和完整性。
3.删除订单测试:
测试用例编号 | 测试目标 | 测试步骤 | 预期结果 | 实际结果 | 测试结果 |
TC001 | 删除订单成功 | 1. 登录系统,并进入订单管理界面 | 进入订单管理界面成功 | 进入订单管理界面成功 | 通过 |
2. 选择需要删除的订单 | 订单被选中 | 订单被选中 | |||
3. 点击删除按钮 | 订单删除成功,并显示删除成功的提示信息 | 订单删除成功,并显示删除成功的提示信息 | 通过 | ||
4. 验证订单是否被删除 | 订单不再显示在订单列表中 | 订单不再显示在订单列表中 | 通过 | ||
TC002 | 删除不存在的订单 | 1. 登录系统,并进入订单管理界面 | 进入订单管理界面成功 | 进入订单管理界面成功 | 通过 |
2. 输入不存在的订单编号 | 订单编号不存在,无法删除 | 订单编号不存在,无法删除 | 通过 | ||
3. 点击删除按钮 | 显示订单不存在的提示信息 | 显示订单不存在的提示信息 | 通过 | ||
4. 验证订单是否被删除 | 订单列表中的订单没有发生变化 | 订单列表中的订单没有发生变化 | 通过 | ||
TC003 | 取消删除订单 | 1. 登录系统,并进入订单管理界面 | 进入订单管理界面成功 | 进入订单管理界面成功 | 通过 |
2. 选择需要删除的订单 | 订单被选中 | 订单被选中 | |||
3. 点击取消按钮 | 弹出确认取消删除的提示框 | 弹出确认取消删除的提示框 | 通过 | ||
4. 选择取消删除操作 | 订单删除操作被取消,订单仍然存在 | 订单删除操作被取消,订单仍然存在 | 通过 |
测试代码
public int deleteBillById(String delId) {
String sql = "delete from smbms_bill where id=?";
Object[] params = {delId};
return template.update(sql, delId);
}
public boolean deleteBillById(String delId){
return dao.deleteBillById(delId)>0?true:false;
}
private void delBill(HttpServletRequest request, HttpServletResponse response)
throws Exception {
String id = request.getParameter("billid");
HashMap<String, String> resultMap = new HashMap<String, String>();
if(!StringUtils.isNullOrEmpty(id)){
BillService billService = new BillServiceImpl();
boolean flag = billService.deleteBillById(id);
if(flag){//删除成功
resultMap.put("delResult", "true");
}else{//删除失败
resultMap.put("delResult", "false");
}
}else{
resultMap.put("delResult", "notexit");
}
//把resultMap转换成json对象输出
response.setContentType("application/json");
PrintWriter outPrintWriter = response.getWriter();
outPrintWriter.write(JSONArray.toJSONString(resultMap));
outPrintWriter.flush();
outPrintWriter.close();
}
4.修改供应商测试:
测试用例编号 | 测试目的 | 测试步骤 | 预期结果 | 实际结果 | 通过/失败 |
TC001 | 验证有效的供应商修改功能 |
2. 进入供应商管理界面 3. 选择要修改的供应商 4. 输入新的供应商信息 5. 点击保存按钮 | 供应商信息成功修改,系统显示修改成功提示信息 | 供应商信息成功修改,系统显示修改成功提示信息 | 通过 |
TC002 | 验证无效的供应商修改功能 |
| 系统显示错误提示信息,提示无效的供应商信息 | 系统显示错误提示信息,提示无效的供应商信息 | 通过 |
TC003 | 验证供应商不存在的情况下的供应商修改功能 |
5. 点击保存按钮 | 系统显示错误提示信息,提示供应商不存在 | 系统显示错误提示信息,提示供应商不存在 | 通过 |
TC004 | 验证供应商信息部分为空的供应商修改功能 |
4. 输入部分供应商信息为空5. 点击保存按钮 | 系统显示错误提示信息,提示供应商信息不完整 | 系统显示错误提示信息,提示供应商信息不完整 | 通过 |
TC005 | 验证取消供应商修改操作的功能 |
5. 点击取消按钮 | 供应商信息未被修改,系统保持原有供应商信息 | 供应商信息未被修改,系统保持原有供应商信息 | 通过 |
TC006 | 验证无权限修改供应商的功能 |
5. 点击保存按钮 | 系统显示错误提示信息,提示无权限执行操作 | 系统显示错误提示信息,提示无权限执行操作 | 通过 |
TC007 | 验证供应商修改功能的边界情况 |
5. 点击保存按钮 | 供应商信息成功修改,系统显示修改成功提示信息 | 供应商信息成功修改,系统显示修改成功提示信息 | 通过 |
TC008 | 验证同时修改多个供应商的功能 |
5. 点击保存按钮 | 所有供应商信息成功修改,系统显示修改成功提示信息 | 所有供应商信息成功修改,系统显示修改成功提示信息 | 通过 |
TC009 | 验证修改供应商时输入特殊字符的功能 |
5. 点击保存按钮 | 系统显示错误提示信息,提示无效的供应商信息 | 系统显示错误提示信息,提示无效的供应商信息 | 通过 |
TC010 | 验证同时修改供应商和订单的功能 |
7. 点击保存按钮 | 供应商信息和订单信息成功修改,系统显示修改成功提示信息 | 供应商信息和订单信息成功修改,系统显示修改成功提示信息 | 通过 |
5.删除供应商测试:
测试用例编号 | 测试步骤 | 预期结果 | 实际结果 | 通过 |
TC001 | 登录系统并进入供应商管理功能 | 成功登录并进入供应商管理功能 | 成功登录并进入供应商管理功能 | 是 |
TC002 | 选择要删除的供应商 | 选择成功,并显示选中的供应商信息 | 选择成功,并显示选中的供应商信息 | 是 |
TC003 | 点击删除按钮 | 弹出确认删除的提示框 | 弹出确认删除的提示框 | 是 |
TC004 | 点击确认删除按钮 | 供应商删除成功 | 供应商删除成功 | 是 |
TC005 | 验证系统是否成功删除了供应商 | 供应商不再显示在供应商列表中 | 供应商不再显示在供应商列表中 | 是 |
TC006 | 尝试使用已删除的供应商信息进行查询或操作 | 系统应提示该供应商不存在或无法操作 | 系统提示该供应商不存在或无法操作 | 是 |
TC007 | 尝试删除不存在的供应商 | 系统应提示该供应商不存在的错误信息 | 系统提示该供应商不存在的错误信息 | 是 |
测试代码
public int deleteProviderById( String delId)
{String sql = "delete from smbms_provider where id=?";
Object[] params = {delId};
return template.update(sql, delId);}
public int deleteProviderById(String delId){
return dao.deleteProviderById(delId); }
private void delProvider(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("proid");
HashMap<String, String> resultMap = new HashMap<String, String>();
if(!StringUtils.isNullOrEmpty(id)){
ProviderService providerService = new ProviderServiceImpl();
int flag = providerService.deleteProviderById(id);
if(flag == 0){//删除成功
resultMap.put("delResult", "true");
}else if(flag == -1){//删除失败
resultMap.put("delResult", "false");
}else if(flag > 0){//该供应商下有订单,不能删除,返回订单数
resultMap.put("delResult", String.valueOf(flag));}
}else{
resultMap.put("delResult", "notexit");
}//把resultMap转换成json对象输出
response.setContentType("application/json");
PrintWriter outPrintWriter = response.getWriter();
outPrintWriter.write(JSONArray.toJSONString(resultMap));
outPrintWriter.flush();
outPrintWriter.close();
}
6.添加用户测试:
测试用例编号 | 测试步骤 | 预期结果 | 实际结果 | 通过 |
TC001 | 登录系统并进入用户管理功能 | 成功登录并进入用户管理功能 | 成功登录并进入用户管理功能 | 是 |
TC002 | 点击添加用户按钮 | 进入添加用户页面 | 进入添加用户页面 | 是 |
TC003 | 输入新用户的姓名、用户名、密码、角色等信息 | 信息输入正确,没有错误提示 | 信息输入正确,没有错误提示 | 是 |
TC004 | 点击确认按钮 | 提交用户信息成功 | 提交用户信息成功 | 是 |
TC005 | 验证系统是否成功添加了新用户 | 新用户显示在用户列表中 | 新用户显示在用户列表中 | 是 |
TC006 | 检查新用户的姓名、用户名、角色等信息 | 信息与输入一致 | 信息与输入一致 | 是 |
TC007 | 使用新用户的用户名和密码登录系统 | 登录成功 | 登录成功 | 是 |
TC008 | 添加其他不同角色的用户 | 用户角色正确设置 | 用户角色正确设置 | 是 |
TC009 | 添加用户时输入已存在的用户名 | 提示用户名已存在的错误信息 | 提示用户名已存在的错误信息 | 是 |
7.删除用户测试:
编号 | 输入 | 实际输出 | 测试代码 |
26 | 点击“王五”用户信息的删除图标,点击确认删除 | 如图4. 如图4. | 如下文 |
27 | 点击“111”用户信息的删除图标,点击取消删除 | 如图4. 如图4. | 如下文 |
测试代码
public int deleteUserById(Integer delId) {
String sql = "delete from smbms_user where id=?";
Object[] params = {delId};
return template.update(sql, delId);
}
public boolean deleteUserById( Integer delId)throws Exception{
return dao.deleteUserById(delId)>0?true:false;
}
private void delUser(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("uid");
Integer delId = 0;
try{delId = Integer.parseInt(id);
delId = 0;}
HashMap<String, String> resultMap = new HashMap<String, String>();
try{
if(delId <= 0){
resultMap.put("delResult", "notexist");
}else{
UserService userService = new UserServiceImpl();
if(userService.deleteUserById(delId)){
resultMap.put("delResult", "true");
}else{
resultMap.put("delResult", "false");}
}
}catch (Exception ex){
ex.getStackTrace();
}
五. 缺陷报告
在超市系统的测试过程中,我发现了多个缺陷,其中一些缺陷对系统的功能和用户体验产生了较大的影响。其中最显著的缺陷包括订单查询界面无法输入订单编号进行查询和供应商管理界面无法删除供应商的问题。
在订单查询界面,用户无法通过输入订单编号来查询具体的订单信息。这导致用户无法快速准确地查找到特定的订单,影响了系统的查询功能的完整性。这个缺陷限制了用户对订单信息的检索和管理能力,降低了系统的实用性和效率。
另外,在供应商管理界面,管理员无法成功删除选定的供应商。这使得管理员无法有效地管理供应商列表,无法及时更新和删除不需要的供应商信息。这个缺陷影响了系统对供应商信息的管理和维护能力,增加了管理员的操作负担,并可能导致供应商信息的混乱和错误。
这些缺陷的存在影响了超市系统的功能完整性和用户体验。建议开发团队重点关注这些问题,并在后续的系统版本中修复它们,以提高系统的可用性和用户满意度。
缺陷报告编号 | 报告人 | 日期 | 缺陷描述 | 重现步骤 | 期望结果 | 实际结果 | 优先级 | 严重程度 | 备注 |
001 | 张三 | 2023-06-01 | 在订单查询界面,无法输入订单编号进行查询 | 1. 登录系统<br>2. 进入订单查询界面<br>3. 尝试输入订单编号 | 预期系统根据订单编号查询到对应的订单信息 | 实际无法输入订单编号进行查询 | 高 | 严重 | 输入框无法接收键盘输入 |
002 | 李四 | 2023-06-02 | 供应商管理界面无法删除供应商 | 1. 登录系统<br>2. 进入供应商管理界面<br>3. 尝试删除供应商 | 预期系统成功删除选定的供应商 | 实际无法删除供应商 | 中 | 一般 | 删除按钮没有响应 |
003 | 王五 | 2023-06-03 | 在用户管理界面,无法修改用户密码 | 1. 登录系统<br>2. 进入用户管理界面<br>3. 尝试修改用户密码 | 预期系统成功修改用户密码 | 实际无法修改用户密码 | 低 | 一般 | 密码修改功能暂时不可用 |
004 | 赵六 | 2023-06-04 | 订单管理界面中订单总金额计算错误 | 1. 登录系统<br>2. 进入订单管理界面<br>3. 查看订单总金额 | 预期系统正确计算订单的总金额 | 实际订单总金额显示错误 | 高 | 严重 | 订单总金额计算逻辑有误 |
005 | 刘七 | 2023-06-05 | 个人信息管理界面无法显示用户头像 | 1. 登录系统<br>2. 进入个人信息管理界面 | 预期系统显示用户上传的头像 | 实际无法显示用户头像 | 中 | 一般 | 头像显示功能暂时不可用 |
006 | 张三 | 2023-06-06 | 订单查询结果中部分订单信息缺失 | 1. 登录系统<br>2. 进入订单查询界面<br>3. 执行查询操作 | 预期系统显示完整的订单信息 | 实际部分订单信息缺失 | 中 | 一般 | 订单信息查询逻辑存在问题 |
007 | 李四 | 2023-06-07 | 供应商管理界面中供应商联系电话无法编辑 | 1. 登录系统<br>2. 进入供应商管理界面<br>3. 尝试编辑电话 | 预期系统可以编辑供应商的联系电话 | 实际无法编辑供应商联系电话 | 低 | 一般 | 联系电话编辑功能暂时不可用 |
008 | 王五 | 2023-06-08 | 用户管理界面中新注册用户无法显示在列表中 | 1. 登录系统<br>2. 进入用户管理界面<br>3. 查看用户列表 | 预期系统显示所有新注册的用户 | 实际新注册用户无法显示在列表中 | 高 | 严重 | 新用户显示逻辑有误 |
009 | 赵六 | 2023-06-09 | 订单管理界面中订单状态无法更新为"已发货" | 1. 登录系统<br>2. 进入订单管理界面<br>3. 更新订单状态 | 预期系统成功更新订单状态为"已发货" | 实际无法更新订单状态为"已发货" | 中 | 一般 | 订单状态更新功能暂时不可用 |
010 | 刘七 | 2023-06-10 | 个人信息管理界面中修改密码时无法验证原密码的正确性 | 1. 登录系统<br>2. 进入个人信息管理界面<br>3. 修改密码 | 预期系统要求输入正确的原密码进行验证 | 实际无法验证原密码的正确性 | 高 | 严重 | 密码验证逻辑有误 |
模块名称 | 登录模块 | 附件 | ||||||
缺陷类型 | 功能错误 | 缺陷级别 | 低 | |||||
测试平台 | IntelliJ IDEA2023.1 | 浏览器 | chrome | |||||
简述 | 登录界面没有验证码,无法对用户登录进一步确认。 | |||||||
步骤 | 打开登录页面 | |||||||
预期结果 | 页面应有验证码 | |||||||
实际结果 | 页面没有验证码 | |||||||
模块名称 | 登录模块 | 附件 | ||||||
缺陷类型 | 功能错误 | 缺陷级别 | A | |||||
测试平台 | IntelliJ IDEA2023.1 | 浏览器 | chrome | |||||
简述 | 登录界面只笼统的提示用户名或密码错误。 | |||||||
步骤 | 打开登录页面;输入有误的用户名和密码 | |||||||
预期结果 | 提示用户名不存在或密码错误 | |||||||
实际结果 | 仅提示“用户名或密码错误”,无法区分。 |
六.总结
在完成此报告的过程中,我遇到了一些问题,并成功地解决了这些问题。在系统测试和用例设计的过程中,我需要面对以下挑战。
首先,测试用例设计方面存在一些限制。最初的测试用例数量有限,无法全面覆盖系统的各个功能和场景。为了解决这个问题,我深入研究了系统的需求和功能,并补充了更多的测试用例,以确保覆盖了各个关键功能和异常情况。
其次,由于缺乏实际测试环境,我无法在真实的生产环境中进行测试。为了解决这个问题,我建立了一个模拟测试环境,尽可能接近实际使用条件,并在该环境中进行了系统测试。这样可以更好地模拟用户使用场景,发现潜在的问题。
最后,为了确保缺陷报告的准确性,我在测试过程中发现了一些缺陷,并及时记录和报告。我详细描述了每个缺陷的现象、重现步骤和影响,以便开发人员能够理解并解决这些问题。
通过面对这些挑战并解决问题,我提高了我的测试技能和经验,并对系统质量保证有了更深入的理解。对未来,我期待能继续学习和探索,不断提升自己的测试能力,并为开发高质量的软件做出贡献。