LoadRunner性能测试进阶:参数化详解

需积分: 16 6 下载量 122 浏览量 更新于2024-07-23 收藏 1018KB PPT 举报
“Load Runner进阶操作.ppt - LoadRunner学习 - 性能测试 - 参数化” 在性能测试领域,LoadRunner是一款广泛使用的工具,它能够模拟大量用户并发执行任务,以此来评估系统的性能和稳定性。LoadRunner的学习不仅包括基础操作,还包括高级技巧,如参数化。参数化是LoadRunner中一个至关重要的概念,它使得脚本更加灵活、可读且易于维护。 参数化的优点在于,它可以缩短脚本的长度,通过使用参数代替硬编码的常量值,使得脚本的逻辑更加清晰,减少重复代码,同时也方便在后期对脚本进行修改和维护。在录制脚本时,LoadRunner会自动记录下操作过程中的数据,此时脚本和数据是紧密相连的。然而,为了实现不同场景的测试,我们需要不同的数据输入,这就需要将脚本中的固定数据转化为动态参数。 参数化的过程主要包括两个步骤:一是用参数替换常量值,二是设置参数的属性和数据源。在LoadRunner中,我们可以在需要参数化的字符上右键点击,选择“Replace with a Parameter”来创建或选择已有的参数。接着,我们需要定义参数的名称和类型。例如,`Filedata`是一种常用的参数类型,其数据来源于外部文件,可以手动编辑或通过DataWizard从数据库导入。 LoadRunner提供了多种内置的参数类型,如: 1. Date/Time:使用当前日期和时间作为参数值。 2. GroupName:使用执行脚本的虚拟用户(VU)所在的组名。 3. IterationName:根据脚本执行的迭代次数替换。 4. LoadGeneratorName:使用生成脚本的负载生成器名称。 5. RandomNumber:生成随机整数。 6. UniqueNumber:生成唯一的整数。 7. VuserID:使用唯一的VU ID。 8. User-Defined Function:允许用户自定义函数。 此外,`DataFile`和`Table`参数类型提供了数据池功能,可以根据预设规则从数据文件中提取数据。创建数据文件时,通常以`.dat`为后缀,放置在脚本目录下,文件内容应以空行结束,否则最后一行数据可能无法被参数使用。 在参数化脚本时,还需要关注更新方式(Update value on),这决定了参数值何时发生变化。`Selectnextrow`选项用于指定参数值在何时进行切换,可以设置为顺序、随机或唯一值。而`When out of values`选项仅在`Selectnextrow`设置为`Unique`时生效,用于处理数据池不足以满足唯一值需求的情况。 LoadRunner的参数化是提高测试脚本复用性和灵活性的关键,它使我们能够有效地管理和控制测试数据,从而更准确地模拟真实用户的行为,评估系统性能。通过深入理解和熟练应用参数化,性能测试的专业人士能够更好地利用LoadRunner这一强大的工具进行复杂场景的性能测试。

public class CategoryDaoImpl implements CategoryDao { @Override public void add(Category category){ try{ QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); String sql = "insert into category(id,name) values(?,?)"; Object params[] = {category.getId(), category.getName()}; runner.update(sql, params); } catch(Exception e){ e.printStackTrace(); throw new RuntimeException(e); } } /* (non-Javadoc) * @see dao.impl.CategoryDao#find(java.lang.String) */ @Override public Category find(String id){ try { QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); String sql = "select * from category where id=?"; return (Category)runner.query(sql, id, new BeanHandler(Category.class)); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } } /* (non-Javadoc) * @see dao.impl.CategoryDao#getAll() */ @Override public List<Category> getAll(){ try { QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); String sql = "select * from category"; return (List<Category>)runner.query(sql, new BeanListHandler(Category.class)); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } } @Override public int delete(String id) { try { QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); //执行删除的sql runner.update("delete from category where id=?",id); } catch (SQLException e) { throw new RuntimeException(e);//抛出运行异常 } return 1;//删除成功返回1表示结束 } @Override public void update(Category record) { try{ QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); String sql = "update category set name=?,where id=? "; Object params[] = { record.getName(), record.getId()}; runner.update(sql, params); } catch(Exception e){ e.printStackTrace(); throw new RuntimeException(e); } } }帮我加一下注释

2023-05-31 上传