- 博客(97)
- 收藏
- 关注
原创 TP商城登录系统测试报告
TP商城登录系统测试报告摘要 测试目标:验证TP商城V3.0.0登录系统在功能、性能、安全等方面的可靠性。测试周期为2025/7/10-2025/7/20。 关键结果: 手工功能测试17用例,通过率94.1%(16通过,1失败) 自动化测试13用例全部通过 发现安全机制缺失、第三方登录流程不完整等需求问题 测试范围: 用户认证流程(账号/密码/验证码) 异常处理机制(格式错误、空输入等) 安全防护(退出机制、错误提示) 主要发现: 密码传输存储加密要求未明确 第三方登录授权流程缺失 建议增加密码可见性切换功
2025-07-15 15:46:21
1046
原创 软件测试实验四
摘要:本实验通过JUnit对Calculator类进行单元测试(含异常和参数化测试),并使用QTP自动化测试Windows计算器的科学型功能(计算90度正弦值)。实践表明,JUnit能高效验证代码逻辑,QTP可覆盖复杂业务流程,但需权衡脚本开发与维护成本。自动化测试在回归测试和持续集成中展现出显著优势,为软件质量提供保障,同时推动测试标准化。实验结果证实自动化工具在提升效率和质量方面的双重价值。
2025-07-07 15:04:15
159
原创 软件测试实验三
本文介绍了三角形问题的黑盒测试方法。通过输入三个整数作为边长,程序可判断三角形类型(等边、等腰、一般)或非三角形。文章详细阐述了等价类划分过程,将输入条件分为有效等价类(能构成三角形)和无效等价类(不能构成三角形),并建立了对应的等价类表。最后设计了5个测试用例,分别验证等边三角形、等腰三角形、一般三角形,以及两种无效输入情况(非正整数和不满足三角形不等式)。该测试方法全面覆盖了各种输入情况,确保程序功能的正确性。
2025-07-07 15:02:09
584
原创 软件测试实验二
摘要:本实验针对工资计算程序进行白盒测试,该程序根据工作时长(≤40小时、40-50小时、>50小时)采用不同工资计算规则。实验步骤包括:1) Python实现工资计算函数;2) 绘制程序流程图;3) 按逻辑覆盖六标准(语句/判定/条件/判定-条件/条件组合/路径覆盖)设计测试用例。结果显示所有测试用例通过,程序输出与预期一致,各项覆盖率均达100%。实验验证了程序在不同工作时段工资计算的正确性。
2025-07-01 15:56:31
304
原创 软件测试实验一
本文首先介绍了防范SQL注入攻击的方法,包括使用参数化查询、输入校验、最小权限原则等。其次分析了电子邮箱输入框的测试等价类划分,应覆盖有效格式、无效输入及边界情况。最后针对三个网站进行了缺陷测试:oricity.com存在图片加载缓慢问题;workcard.net首页加载时间过长;roqisoft.com未适配移动端显示。测试结果均与预期不符,影响了用户体验。
2025-07-01 15:51:22
482
原创 计算方法实验六 数值积分
但是,如果子区间的数量不够多,或者函数在某些子区间上变化较大,可能会导致计算结果的误差较大。为了解决这个问题,可以增加子区间的数量,或者使用自适应方法,根据函数的变化情况来调整子区间的数量。通过这些实验,我掌握了数值积分的基本原理和计算方法,并且了解了不同方法的优缺点,这对于解决实际问题具有重要的参考价值。这种方法的优点是计算简单,适用于低次多项式的积分,但对于高次多项式的积分误差较大。在本次实验中,我们学习了三种数值积分的方法,包括差值积分法、复化积分法和复化梯形公式。评阅日期_____________
2025-05-04 23:06:18
1295
原创 测试基础笔记第十九天
借助工具、代码,模拟客户端发送请求给服务器,借助断言自动判断 预期结果和实际结果 是否一致!HTTP:(HyperText Transfer Protocol)超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议特征:支持客户端/服务器模式简单快速灵活无连接无状态**由开发人员编写,描述接口信息的文档。**开发团队按接口文档进行开发工作,并要一直维护遵守。
2025-05-04 23:03:43
1051
原创 计算方法实验五 插值多项式的求法
Newton插值算法相对于Lagrange插值算法的优点是构造插值多项式的计算过程简单,可以通过递推公式一次性得到所有的差商。在实际应用中,根据实验数据的特点和求解的需求,选择合适的插值算法进行计算,并注意处理可能出现的问题,确保插值结果的准确性和稳定性。而在求解插值的时候,需要根据需要插值的点的横坐标,计算出对应的纵坐标。2.2基于向量+矩阵进行计算考虑动态增加插值结点,比如已有x0,x1,再增加x2时,依次计算f[x1,x2],f[x0,x1,x2][ 1, 2]放到y 的第2 个元素上,。
2025-05-03 23:10:16
873
原创 测试基础笔记第十八天
pytest:python中的一种单元测试框架。为什么学习pytest?能阻止多个用例去执行方便实现参数化能够生成测试报告安装安装: pip install pytest验证: pip show pytest#导包#打开浏览器#打开页面#case02:登录失败(用户名为空)self.driver.find_element(By.LINK_TEXT, “登 录”).click()#case03:登录失败(密码为空)
2025-05-03 23:07:08
1127
原创 计算方法实验四 解线性方程组的间接方法
其次,我注意到间接方法的精度较高,能够得到比较准确的解。总体来说,间接方法是一种简单高效、精度较高的解线性方程组的方法,对于数学问题的求解也具有一定的推广价值。通过这次实验,我不仅学到了解线性方程组的间接方法,还深入了解了矩阵运算的原理和应用,对数学问题的求解能力也有了一定的提升。取三个不同初值,分别用雅可比法和高斯-塞得尔法求解,用表格记载求解过程,并分析迭代初值、迭代公式对迭代的影响。迭代法程序简单,但有时工作量较大,在有限步内,得不到精确解,适宜系数矩阵阶数较高的问题。教师签名________
2025-05-02 23:42:36
909
原创 计算方法实验三 解线性方程组的直接方法
Gauss消元法是一种基础且常用的线性方程组求解方法,它通过消元和回代的过程,将线性方程组化为一个上三角矩阵,进而求解出方程组的解。这种方法适用于各种情况下的线性方程组,但当矩阵的某个主元接近于零时,可能会导致算法的失效或数值不稳定的问题。因此,在应用Gauss消元法时,需要对矩阵的特性进行分析,避免出现这种情况。对上述算法的改进,其中列主元消去法较为常用:在第i步,从第i列的第i行至最后一行中选取绝对值最大的元素(注意,不是该列的所有元素,而是部分元素),通过行互换,将其调到主元位置,然后再做消元。
2025-05-02 23:37:58
831
原创 计算方法实验二 一元非线性方程求根的算法
根据牛顿迭代法的收敛性质,如果初始点选择得当且函数具有一定的光滑性,牛顿迭代法的收敛速度是二次的,即每次迭代的近似解的有效数字位数会翻倍。不同的迭代初值可能会导致求得的根有所不同,因此初始值的选择对于求根过程的精度和收敛性有一定影响。如何得到一个好的迭代公式,是工程需要考虑的问题。迭代效果(指迭代的敛散性、收敛的速度)与迭代初值、迭代公式的收敛性有关。迭代法求根,参数为迭代初值、迭代函数、绝对误差限、最大迭代次数,成功标志,根。迭代法求根,参数为迭代初值、迭代函数、绝对误差限、最大迭代次数,成功标志,根。
2025-05-01 00:00:55
991
原创 实验六 文件操作实验
1)以写方式打开file1,以读方式打开file2文件,利用lseek()将file1的指针定位到文件尾部,再将file2写入到file1,实现文件合并。if((p=open(argv[1],O_RDONLY))==-1) //以只读方式打开文件。通过本次操作系统文件操作实验,我对文件的打开、读写操作以及加密解密的实现有了更深入的了解。while(read(p,&ch,1)==1) //每次读一个字符到ch。// 写入解密后的字符。3)以附加方式打开file1,以读方式打开file2,实现文件合并。
2025-04-29 23:20:33
1149
原创 测试基础笔记第十六天
UI:User Interface,简称UI,用户界面是系统和用户之间进行交互和信息交换的媒介UI自动化测试:使用程序、脚本对系统界面体现的功能和数据信息展示等进行的测试技术为什么要自动化测试:大量的版本需要回归测试手工回归测试效率比较低测试工程师价值得不到体现。
2025-04-29 23:18:54
1520
原创 实验五 内存管理实验
else if(freeblock[i].state==1 && freeblock[i].size==size)//申请空间正好等于空闲空间。if(freeblock[i].state==1 && freeblock[i].size>size) //申请空间小于空闲空间。printf("缺页次数:%d 缺页率:%d/%d\n",missingCount,missingCount,pageNum);setfree()函数的功能是将释放的内存空间标记为空闲状态,并根据释放空间的位置和大小,进行合并操作。
2025-04-28 23:17:54
1084
原创 测试基础笔记第十五天
说明:集合中的数据是没有重复的, 主要应用列表中的数据去重说明:把具有独立功能的代码块组织为一个小模块,在需要的时候调用作用:对具备相同逻辑的代码进行封装, 提高代码的编写效率, 实现对代码的重用语法:def 函数名(参数1, 参数2…):函数封装的代码,可以使用传递进来的参数pass说明:1.def是英文define 的缩写2. 函数名最好能够表达函数内部封装的代码的功能, 方便后续的获取调用[见名知意]3. 函数名命名遵循标识符命名规则: 字母, 数字, 下划线, 不。
2025-04-28 23:15:15
1020
原创 实验五 内存管理实验
else if(freeblock[i].state==1 && freeblock[i].size==size)//申请空间正好等于空闲空间。if(freeblock[i].state==1 && freeblock[i].size>size) //申请空间小于空闲空间。printf("缺页次数:%d 缺页率:%d/%d\n",missingCount,missingCount,pageNum);setfree()函数的功能是将释放的内存空间标记为空闲状态,并根据释放空间的位置和大小,进行合并操作。
2025-04-27 23:05:03
1025
原创 测试基础笔记第十四天
说明:列表(list)是 Python 中使用最频繁的数据类型, 在其他语言中通常叫做数组, 专门用来存储一组数据注意:字典中的键一般都使用字符串,并且键名不能重复(如果重复原数据会被覆盖)说明:元组和列表一样,都可用于存储多个数据,不同之处在于元组的元素不能修改注意:元组中只包含一个元素时,需要在元素后面添加逗号data = (1,)
2025-04-27 22:42:01
1348
原创 实验四 进程调度实验
进程调度的目标是使系统的资源得到最优的利用,提高系统的吞吐量和响应速度。printf("\n=====================先来先服务算法FCFS=====================\n\n");//计算带权周转时间。printf("\n=====================短作业优先算法SJF=====================\n\n");printf("\n=====================时间片轮换算法RR=====================\n\n");
2025-04-26 22:54:26
963
原创 实验三 进程间通信实验
当用户在键盘上按下Ctrl+C键时,会触发SIGINT信号,从而调用信号处理函数func,将k的值设置为0,退出循环。此外,我还发现了管道在父子进程之间的传递性,即父进程可以通过管道向子进程传递信息,子进程也可以通过管道向父进程传递信息。通过这个实验,我不仅加深了对进程间通信的理解,还学会了如何使用管道来实现进程间的双向通信。在进行操作系统进程间通信的实验中,我通过使用管道来实现父进程和子进程之间的双向通信。5、在父进程中用pipe()建立一条管道线,往管道里写信息,两个子进程接收父进程发送的信息。
2025-04-25 22:38:19
821
原创 实验三 进程间通信实验
当用户在键盘上按下Ctrl+C键时,会触发SIGINT信号,从而调用信号处理函数func,将k的值设置为0,退出循环。此外,我还发现了管道在父子进程之间的传递性,即父进程可以通过管道向子进程传递信息,子进程也可以通过管道向父进程传递信息。通过这个实验,我不仅加深了对进程间通信的理解,还学会了如何使用管道来实现进程间的双向通信。在进行操作系统进程间通信的实验中,我通过使用管道来实现父进程和子进程之间的双向通信。5、在父进程中用pipe()建立一条管道线,往管道里写信息,两个子进程接收父进程发送的信息。
2025-04-24 22:28:01
888
原创 实验二 多线程编程实验
通过使用pthread库中的函数,如pthread_mutex_init()和pthread_mutex_lock()等,我可以对关键代码段进行上锁,使得同一时间只有一个线程可以访问共享资源。通过使用pthread库中的函数,如pthread_cond_init()和pthread_cond_wait()等,我可以实现线程的等待和唤醒操作,以实现线程间的同步和协作。// 创建售票员线程。线程一先执行,打印"hello",然后释放锁,线程二获取到锁,打印"world",最后两个线程结束。
2025-04-23 22:29:56
1209
原创 实验一 进程控制实验
5. 编程创建2个子进程,子进程1运行指定路径下的可执行文件(如:/home/student/welcome.out),子进程2暂停10s之后退出,父进程先用阻塞方式等待子进程1的结束,然后用非阻塞方式等待子进程2的结束,待收集到二个子进程结束的信息,父进程就返回。通过实验中的信号处理,我们可以向进程发送信号,从而实现对进程的控制。先打印父进程 然后创建第一个子进程p1,然后父进程创建第二个子进程p2,如果不想让父进程在子进程结束之前结束,可以用wait(0)让父进程等待子进程结束,之后父进程再结束。
2025-04-22 22:23:49
1081
原创 实验五:分枝限界法
算法分析: Dijkstra算法的时间复杂度为O(n^2),其中n为节点的个数。由于使用了优先队列H来优化算法,堆的插入和删除操作的时间复杂度为O(logn),因此总的时间复杂度为O(nlogn)。然后遍历该节点的相邻节点,更新其距离和前驱节点。创建一个优先队列,用于存放待扩展的节点,初始时将起始节点加入队列中。如果通过扩展节点能够获得更短的距离,则更新该节点的距离和前驱节点。初始化起始节点的距离为0,其他节点的距离为无穷大。遍历该节点的相邻节点,更新其距离和前驱节点。将更新后的节点加入优先队列中。
2025-04-21 20:08:57
1176
原创 测试基础笔记第八天
说明: MySQL 是一个关系型数据库管理统,目前属于 Oracle 旗下产品, 目前为止 MySQL 社区版是可以免费使用的特点:开源/免费/跨平台(Windows/macOS/Linux)/跨语言(Java/Python…)
2025-04-21 20:04:31
646
原创 实验四:回溯法
在每一次操作中,需要检查边的数量,因此总体的时间复杂度为O(m^n * E),其中E表示边的数量。算法的主要思想是尝试为每个顶点选择一个颜色,然后递归地为剩下的顶点选择颜色,直到所有顶点都着色完毕。设下图G=(V,E)是一连通无向图,有3种颜色,用这些颜色为G的各顶点着色,每个顶点着一种颜色,且相邻顶点颜色不同。在回溯函数中判断当前顶点是否可以安全地选择某个颜色,如果可以,则将该颜色赋给当前顶点,并继续递归地为剩下的顶点选择颜色。如果所有顶点都已经着色完毕,找到一个新的解,将解的数量加1,并打印出该解。
2025-04-20 23:32:39
785
原创 实验三:动态规划法
对于下列所描述的问题,给出相应的算法描述,并完成程序实现与时间复杂度的分析。按给定的一组测试数据对根据算法设计的程序进行调试:6个矩阵连乘积A=A1×A2×A3×A4×A5×A6,各矩阵的维数分别为:A1:10×20,A2:20×25,A3:25×15,A4:15×5,A5:5×10,A6:10×25。然后使用两个嵌套循环,从矩阵个数为2开始,依次求解m[i][j]和s[i][j],其中m[i][j]表示从第i个矩阵到第j个矩阵链的最小乘法次数,s[i][j]表示从第i个矩阵到第j个矩阵链的最优划分位置。
2025-04-19 23:22:33
713
原创 实验二:贪心算法
7.遍历剩下的活动数组,如果当前活动的开始时间晚于等于lastEnd,即活动不与已加入的活动冲突,将该活动加入最大相容子集,并更新lastEnd为该活动的结束时间。3.定义了一个活动安排函数activityArrangement,接受一个活动数组和活动个数作为参数,并按照活动结束时间排序后进行活动安排。cout << "请输入第"<<i+1<<"次活动信息(名称 开始时间 结束时间) : ";遍历活动数组的时间复杂度:在活动安排函数中,遍历了剩下的活动数组,时间复杂度为 O(n),其中n为活动个数。
2025-04-18 23:27:17
516
原创 实验一:分治与递归
在生成数组a的过程中,有两个嵌套的循环,每个循环的次数都是n/2,因此循环次数总共为n/2 × n/2 = n^2/4,所以时间复杂度为O(n^2)。另外,代码中还有一个determine函数,该函数的时间复杂度为O(logn),因为每次递归都将n除以2,直到n为偶数。首先,判断n是否为2,如果是,则直接生成对阵表。首先,通过输入参赛人数n,判断n是否合法(是否为2的幂次方),如果不合法则输出错误信息。如果n不是2,递归调用roundrob函数,将n除以2传入,并分成两个子问题,分别解决。
2025-04-18 23:25:51
970
原创 实验五 8255和LED数码管显示实验
1.实验台上的七段数码管为共阴极,码段采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
2025-04-17 22:40:10
1519
原创 实验四 中断实验
1.本实验用TPC-ZK实验系统的USB接口,USB接口实验箱固定接到了PC机主片中断控制器8259的IRQ3上,即进行中断实验时,所用中断类型号为0BH,编程时要根据0BH中断类型号设置中断矢量。中断屏蔽码,二进制表示为11110111,用于设置8259A中断控制器的中断屏蔽寄存器。
2025-04-16 22:27:58
978
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅