プライベートな連絡先の最初の情報
送料メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
私が使用したシナリオは金額を計算することなので、この部分は少し面倒に感じますが、解決プロセスを示すことなく、私が遭遇したいくつかの落とし穴だけを書きます。
1. 最初に 2 つの数値の減算を書きましたが、小数精度では問題が発生しやすくなります。たとえば、この場合、1-0.01=0.989999997 ですが、真剣に考えず、何気なくいくつかの数字を書きます。この状況は BigDecimal で処理されます。
2. 計算された金額の精度の問題は解決されました。それ以外の場合、計算された金額は 1.00 であり、私が提出した金額は 1 です。文字列比較であるため、比較時に1と1が等しくない場合はエラーとなります。
3. jmeter がメッセージを返すときに、量が大きすぎる場合、科学的表記が表示されます。たとえば、返される量は 1.23456789013E9 です。通常のデジタル形式に変換する必要もあります。
当面、これら 3 つの落とし穴については、以下に具体的な計画を書きます。シナリオ: アカウントを移動する前に残高を確認し、アカウントを移動した後に残高を確認し、2 つの残高を差し引き、その差額が私の取引額であるかどうかを確認します。残高を確認するにはデータベースに接続する必要がありますが、ここでは接続せず、代わりにユーザーパラメータを使用します。クリックして、jmeter の mysql データベースへの接続について学習します。、取引前の残高は 1、取引後の残高は 0.99
- import java.math.BigDecimal;
- import java.math.RoundingMode;
-
- //动账前余额
- before=vars.get("BAL_1");
- //动账后余额
- after=vars.get("BAL_2");
-
- BigDecimal before=new BigDecimal(before);
- BigDecimal after=new BigDecimal(after);
-
- //两数相减,计算动账前后余额变化
- BigDecimal fee_new= before.subtract(after);
- //保留两位小数
- BigDecimal fee_new=fee_new.setScale(2,RoundingMode.HALF_UP);
- //转化为字符串
- String fee_new1=fee_new.toString();
-
- log.info("动账前后差值:"+fee_new1);
差分を計算し、取引金額を取得し、アサーションを追加して判断します。
以上が引き算です。足し算、引き算、掛け算、割り算を書きます。
- import java.math.BigDecimal;
-
- BigDecimal a=new BigDecimal("6");
- BigDecimal b=new BigDecimal("2");
- BigDecimal c=a.add(b);
- String c1=c.toString();
- log.info("a+b="+c1);
-
- BigDecimal c=a.subtract(b);
- String c1=c.toString();
- log.info("a-b="+c1);
-
- BigDecimal c=a.multiply(b);
- String c1=c.toString();
- log.info("a*b="+c1);
-
- BigDecimal c=a.divide(b);
- String c1=c.toString();
- log.info("a/b="+c1);
急いで書いたので科学表記法の変換を追加するのを忘れました。返された結果が科学表記法の場合、通常は変換する必要があります。
正規表現を直接使用して bal_ar を抽出し、それを処理します
- bal_ar=vars.get("bal_ar");
- BigDecimal bal_ar1=new BigDecimal(bal_ar);
- BigDecimal bal_ar1=bal_ar1.setScale(2,RoundingMode.HALF_UP);
- String bal_ar2=bal_ar1.toPlainString();
- log.info("科学计数法转化以后:"+bal_ar2);
String bal_ar2=bal_ar1.toPlainString(); この行は科学表記法を通常の値に変換します。