- 博客(47)
- 收藏
- 关注
原创 软件测试分类
对历史版本、历史功能进行测试,保证功能是符合要求的,随着版本迭代越来越多,回归测试的难度也变大,借助自动化测试来进行回归测试。集成测试完成之后,测试人员准备项目环境,将程序看成一个整体,对系统进行系统测试,保证系统功能符合产品规格说明书的要求。答1:灰盒测试没有白盒测试详细、完整,没有黑盒测试覆盖产品功能范围广,所以灰盒测试不能取代黑盒测试和白盒测试。检查系统主要功能和主要流程是否正常,评估系统是否具备可测试的条件、可测试的标准。完成单元测试之后,将模块和模块之间进行集成,按照功能来进行测试。
2023-12-25 13:30:40
366
原创 设计测试用例
水杯的形状是否符合产品说明,水杯的大小是否符合产品说明,水杯的材质是否符合产品说明,水杯颜色是否符合产品说明,水杯的外观是否完美完整。材质是否健康,材质是否容易爆炸,材质在高温的情况下是否散发毒性,材料遇到一些特殊的液体是否具有毒性。能进到的都需要进行测试,文字/输入框/图片/下拉框,文字是否存在错别字,病句,折行,折叠,重叠。水杯是否可以装满水、水杯是否能装热水、水杯是否能装一半的水,水杯不漏水、水杯是否烫手。类型:数字、字符串、…例:需求是 用户注册信息填写,姓名,邮箱,密码,确认密码,验证码。
2023-12-22 21:59:37
1403
原创 测试基础知识总结
①需求分析:站在用户的角度分析,查看需求逻辑是否正确,是否符合用户的需求和行为习惯;自动化测试是不能替代手工测试的,自动化测试一定是依靠在手工测试的基础上的。软件测试开发:主测试,开发为辅,这里的开发是指,开发效能工具(例如:自动化测试工具、代码覆盖率工具、数据构造工具),更加关注项目的质量。③用户需求往往转换成软件需求,但是不能直接把用户需求作为开发和测试人员的工作依据,因为需要考虑到用户需求的市场可行性和技术可行性。open:开发人员收到了bug,查看是否是bug,是bug,则open。
2023-12-22 17:05:49
404
原创 开发模型和测试模型
用户需求----->需求分析与系统设计------>概要设计(设计整体框架、架构)------>详细设计(模块和模块之间的详细设计)----->编码----->单元测试------>集成测试------>系统测试------>验收测试。start—>需求分析---->计划----->设计----->编码----->测试----->End(其实就是软件开发的生命周期)③不能够应对需求的变化。②增量模型:开发完A就直接上线给用户去使用,继续开发B,开发完B就又上线去给用户用,开发完C就再上线去给用户用。
2023-12-22 16:06:02
937
原创 Java锁策略
触发锁冲突的频率,HashTable是针对整个哈希表加锁,任何的增删改查操作都会触发加锁,也就都可能会有锁竞争【其实没必要把锁加的这么勤快,因为有时候不存在线程安全的问题,但是由于synchronizd是加到this上,仍然会针对同一个对象产生锁竞争,产生阻塞等待】;比较不成功,意味着owner非空,锁已经有线程持有了,此时CAS就啥都不干,直接返回false,循环继续进行,循环转的飞快,不停的尝试询问这里的锁是不是释放了。一旦锁被释放,就能第一时间拿到锁,速度更快(忙等,消耗cpu资源)。
2023-04-10 22:46:35
763
原创 Java单例模式、阻塞队列、定时器、线程池
虽然任务有很多,但是它们触发的时间是不同的,只需要有一个/一组工作线程,每次找到这些任务中最先到达时间的任务,一个线程先执行最早的任务,做完了之后再执行第二早的。其实,此处的线程不安全,只出现在首次创建对象的时候,一旦对象new好了,后续调用getSingletonLazy(),就只是单纯的读操作,就没有线程安全的问题,这个时候就没必要再加锁了。如果t1执行了①和③,此时系统调度给t2,再去判断条件,发现条件不成立,非空,直接返回实例的引用,接下来t2继续调用,就会引发线程不安全。
2023-04-07 22:23:51
617
原创 Java线程安全与等待通知
②synchronized (),括号()中表示锁对象,在针对哪个对象加锁,如果2个线程针对不同对象加锁,此时不会存在锁竞争,各自获取各自的锁即可;编译器执行代码的时候对代码进行优化,有些操作下频繁读取内存,但是读取的结果不变,则优化成只从寄存器去读,不从内存中读。注:如果某个操作对应多个cpu指令,大概率不是原子的,正是因为不是原子的,导致两个线程的指令排序存在更多的变数了。谈到优化,都得保证优化之后的结果和之前是不变的,在单线程的情况下容易保证,但是在多线程的情况下就不好说了。
2023-04-03 10:38:19
500
原创 Thread类的用法
【如果是t1线程中调用t2.join,即让t1线程等待t2先结束】,在t.join执行的时候,如果t线程还没结束,那么main线程就会阻塞等待,其他的线程不受影响。2、清空标志位为false。分析:上述t线程没有进行任何循环和sleep,意味着里面的代码会迅速执行完毕,main线程如果slwwp结束,此时t基本上就是已经执行完了的状态,那么。②run方法表示(线程启动之后要执行的逻辑):线程的入口方法,线程启动起来要执行哪些逻辑,不是让程序员调用的,而是交给系统去自动调用的。
2023-03-31 10:40:10
382
原创 Java 进程和线程概念
点击这里运行程序,实际上是idea对应的进程,创建了一个java进程,这个java进程来执行程序员写的代码,再这个java进程里面有2个线程,一个是main线程,一个是t线程,2个线程并发执行 ”每个线程是一个独立的执行流“,至于先打印t还是先打印m是不确定的,因为多个线程再cpu上调度执行的顺序是随机的。分析:创建新线程的时候,传入了一个实例化类的对象,并且这个类实现了Runnable接口重写了run方法。注意:start会创建新的线程,而run不会创建新的线程,②通过t.start创建的新的线程。
2023-03-30 18:20:07
1004
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人