「All right reserved, any unauthorized reproduction or transfer is prohibitted」
3.7.3 超市结账第三回合:人性化设计的进一步探索
当小八将最新的测试报告发给收银员们后,本以为大家会为优化后的结果感到满意,却没想到收银员们纷纷反馈:“测试强度太高了,我们根本吃不消!” 在实际工作中,收银员们需要适当的休息,即使是在岗位上。因此,大家对测试结果依然持怀疑态度,要求在设计测试用例时增加休息时间。
一位收银员提议:“在现有的三个阶段基础上,增加一个休息阶段。规则是:如果一个收银员连续工作超过 30 分钟,就休息 2 分钟。” 然而,这个提议刚说完,就有人提出了反对意见:“这个休息时间只考虑了男性收银员的需求,女性收银员需要更多的休息时间,至少 5 分钟。”
经过一番坦诚而友好的讨论,小八决定采纳员工的意见:男性收银员每连续工作 30 分钟,休息 2 分钟;女性收银员每连续工作 30 分钟,休息 5 分钟。小八超市共有 2 名男性收银员和 6 名女性收银员,这一调整充分考虑了员工的实际情况。
于是,测试用例需要再次调整,改动点包括:
- 增加收银员的性别属性,并设置对应的休息时间。
- 增加收银员休息阶段,根据需求实现休息功能。
首先,在多线程任务类中增加以下属性:
/**
* 性别,1:男,2:女
*/
public int sex;
/**
* 单次休息时间,单位分钟
* 男性员工:2分钟;女性员工5分钟
*/
public int restTime;
/**
* 最大工作时间,单位分钟
*/
public int maxWorkTime;
/**
* 上一次开始工作时间,毫秒时间戳
*/
public long lastStartWorkTime;
然后,修改构造方法以初始化这些属性:
/**
* 构造方法
* @param totalNum 执行的总次数
* @param sex 性别
*/
public SupermarketCheckoutTaskThird(int totalNum, int sex) {
this.totalNum = totalNum;// 设置执行的总次数
this.costTime = new ArrayList<>(totalNum);// 初始化耗时收集集合类容量
this.sex = sex;// 设置性别
this.maxWorkTime = 30;// 设置最大工作时间
this.restTime = sex == 1 ? 2 : 5;// 设置单次休息时间
priceCostTime = new AtomicLong();// 初始化计价耗时统计
payCostTime = new AtomicLong();// 初始化支付耗时统计
packCostTime = new AtomicLong();// 初始化打包耗时统计
}
在 before()
方法中设置最近一次工作时间:
/**
* 前置处理
*/
@Override
public void before() {
super.before();
lastStartWorkTime = System.currentTimeMillis();// 设置开始工作时间
}
接下来,设计收银员休息阶段的 rest()
方法:
/**
* 休息
*/
public void rest() {
long timeMillis = System.currentTimeMillis();// 当前时间
if (timeMillis - lastStartWorkTime > maxWorkTime * 60 * 1000) {
ThreadTool.sleep(restTime * 60 * 1000);// 休息
lastStartWorkTime = System.currentTimeMillis();// 设置开始工作时间
}
}
最后,将 rest()
方法嵌入到 test()
方法中,确保收银员在工作过程中能够按时休息。
通过这次改进,小八不仅优化了测试用例,还进一步体现了对员工的关怀。技术测试的最终目的是为了提升效率和用户体验,但在这个过程中,绝不能忽视人的需求。只有让员工在舒适的状态下工作,才能真正实现效率与人性化的双赢。
FunTester 原创精华
【连载】从 Java 开始性能测试
故障测试与 Web 前端
服务端功能测试
性能测试专题
Java、Groovy、Go
白盒、工具、爬虫、UI 自动化
理论、感悟、视频
TesterHome 为用户提供「保留所有权利,禁止转载」的选项。
除非获得原作者的单独授权,任何第三方不得转载标注了「All right reserved, any unauthorized reproduction or transfer is prohibitted」的内容,否则均视为侵权。
具体请参见TesterHome 知识产权保护协议。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
No Reply at the moment.