рдЯрд┐рдбреНрдбреА рдХреЗ рд╕рд╛рде рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг

рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдорд╛рдВрдЧ рдореЗрдВ рдЗрддрдирд╛ рд╡реНрдпрд╛рдкрдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд╣реИ - рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рдзрд╛рд░рдг рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╣рд╛рде рдХреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рдЧрд┐рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЬрдм рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ - рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рд░ рдХреЛрдИ рдЬреЗрдореАрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реИ - рдпрд╣ рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдЙрдкрдХрд░рдг рд╣реИред рдореБрдЭреЗ рдЕрдкрдиреЗ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдЙрдЪреНрдЪ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╕реАрдорд╛ рдХреЗ рдХрд╛рд░рдг рдЬреЗрдПрдордЯрд░ рдХрднреА рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛, рдЬреИрд╕реЗ рд╣реА рдПрдХ рдЧреИрд░-рд╣реИрд▓реЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдФрд░ рдЕрдм, рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреА рд╕рдлрд▓рддрд╛ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдХрд░, рдореИрдВрдиреЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ - рдЯрд┐рдбреНрдбреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХрдЯ рдХреЗ рдиреАрдЪреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИрдВ, рдореИрдВрдиреЗ рдПрдХ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рд╣реИ:



рдпрд╣ рдХреНрдпрд╛ рд╣реИ


рдУрдкрди рд╕реЛрд░реНрд╕ рдЯреВрд▓ рдЬреЛ рдЖрдкрдХреЛ рдкрд╛рдЗрдерди рдХреЛрдб рдХреЗ рд╕рд╛рде рд▓реЛрдб рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рддрд░рд┐рдд рднрд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рд▓реЗрдЦрдХреЛрдВ рдХрд╛ рджрд╛рд╡рд╛ рд╣реИ, рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдмреИрдЯрд▓рдлреЗрд▓реНрдб рд╕реАрд░реАрдЬрд╝ рдСрдлрд╝ рдЧреЗрдореНрд╕ (рддреБрд░рдВрдд рдордиреЛрд░рдо) рдХреЗ рд▓рд┐рдП рдмреИрдЯрд▓реЙрдЧ рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкреЗрд╢реЗрд╡рд░реЛрдВ рд╕реЗ:

  • рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╕рд╣рд┐рдд рд╕рд░рд▓ рдкреНрд░рд▓реЗрдЦрдиред рдЖрдк рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреМрд╢рд▓ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • "рд╣реБрдб рдХреЗ рддрд╣рдд" рдЕрдиреБрд░реЛрдз рдкреБрд╕реНрддрдХрд╛рд▓рдп (рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП HTTP) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдкреНрд░рд▓реЗрдЦрди рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдзреЛрдЦрд╛ рдкрддреНрд░ рдФрд░ рдбреЗрдмрд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  • рдЕрдЬрдЧрд░ рдХрд╛ рд╕рдорд░реНрдерди - рдореБрдЭреЗ рднрд╛рд╖рд╛ рдкрд╕рдВрдж рд╣реИ
  • рдкрд┐рдЫрд▓рд╛ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд░рдирд┐рдВрдЧ рдЯреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рджреЗрддрд╛ рд╣реИ
  • рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдлреНрд▓рд╛рд╕реНрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░

Minuses рдХреА:

  • рдХреЛрдИ рдХрдмреНрдЬрд╛ рдирд╣реАрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЦреЗрд▓рдирд╛ - рд╕рднреА рд╣рд╛рде
  • рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХрд╛ рдкрд░рд┐рдгрд╛рдо - рдЖрдкрдХреЛ рдорд╕реНрддрд┐рд╖реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Postman рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ HTTP рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
  • рдиреНрдпреВрдирддрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреМрд╢рд▓ рдХреА рдЬрд░реВрд░рдд рд╣реИ
  • рд░реИрдЦрд┐рдХ рд▓реЛрдб рдореЙрдбрд▓ - рдЬреЛ рддреБрд░рдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ "рдЧреЙрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░" рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ

рдкрд░реАрдХреНрд╖рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛


рдХреЛрдИ рднреА рдкрд░реАрдХреНрд╖рдг рдПрдХ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдп рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдирд┐рдпреЛрдЬрди, рддреИрдпрд╛рд░реА, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

  • рд╕рд░реНрд╡рд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ (CPU, RAM, ROM)
  • рд╕рд░реНрд╡рд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ (рдУрдПрд╕, рд╕рд░реНрд╡рд░ рд╕рдВрд╕реНрдХрд░рдг, рдЬрд╛рд╡рд╛, .NET, рдЖрджрд┐, рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдбреЗрдЯрд╛ рдХреА рд░рд╛рд╢рд┐ рд╣реА, рд╕рд░реНрд╡рд░ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓реЙрдЧ)
  • рдиреЗрдЯрд╡рд░реНрдХ рдмреИрдВрдбрд╡рд┐рдбреНрде
  • рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░, рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдФрд░ рдбреАрдбреАрдУрдПрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐
  • рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдФрд╕рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп, рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛)

рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмреНрд▓реИрдХ-рдмреЙрдХреНрд╕ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдЖрд╡реЗрджрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрд╛рдиреЗ рдФрд░ рд▓реЙрдЧреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рдмрд┐рдирд╛, рд╣рдо рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдк рд╕рдХрддреЗ рд╣реИрдВред

рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ


рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рд░рд▓ рд╡реЗрдм рд╕рд░реНрд╡рд░ https://github.com/typicode/json-server рдХреЛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ред рдореИрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╕рднреА рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред рдореИрдВрдиреЗ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдирд▓рд╛рдЗрди рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдбреЗрдЯрд╛ рд▓рд┐рдпрд╛ - https://jsonplaceholder.typicode.com/
рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдиреЛрдбрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╕реНрдкрд╖реНрдЯ рд╕реНрдкреЙрдЗрд▓рд░ : рд╕реБрд░рдХреНрд╖рд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде - рдпрд╣ рдСрдирд▓рд╛рдЗрди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛, рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдмрд┐рд▓реНрд▓рд┐рдпреЛрдВ рдкрд░ рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рди рдХрд┐рдпрд╛ рдЬрд╛рдПред

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╛рдпрдерди рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг 3.6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдБрдЧрд╛, рд╕рд╛рде рд╣реА рдЯрд┐рдбреНрдбреЗ (рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд╕рдВрд╕реНрдХрд░рдг 0.9.0)ред рдЗрд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

python -m pip install locustio 

рд╕реНрдерд╛рдкрдирд╛ рд╡рд┐рд╡рд░рдг рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛рд░реНрд╕ рдХрд░рдирд╛


рдЖрдЧреЗ рд╣рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рд╕реАрдзрд╛ рд╣реИ:

 from locust import HttpLocust, TaskSet def login(l): l.client.post("/login", {"username":"ellen_key", "password":"education"}) def logout(l): l.client.post("/logout", {"username":"ellen_key", "password":"education"}) def index(l): l.client.get("/") def profile(l): l.client.get("/profile") class UserBehavior(TaskSet): tasks = {index: 2, profile: 1} def on_start(self): login(self) def on_stop(self): logout(self) class WebsiteUser(HttpLocust): task_set = UserBehavior min_wait = 5000 max_wait = 9000 

рд╡рд╣ рд╕рдм рд╣реИ! рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ! рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрддреЗ рд╣реИрдВред

рдЖрдпрд╛рдд рд▓рдВрдШрди, рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рдо рдПрдХ рдкрдВрдХреНрддрд┐ рд╕реЗ 2 рд▓рдЧрднрдЧ рд╕рдорд╛рди рд▓реЙрдЧрд┐рди рдФрд░ рд▓реЙрдЧрдЖрдЙрдЯ рдлрд╝рдВрдХреНрд╢рди рджреЗрдЦрддреЗ рд╣реИрдВред l.client - рдПрдХ HTTP рд╕рддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдПрдХ рд▓реЛрдб рдмрдирд╛рдПрдВрдЧреЗред рд╣рдо POST рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдиреБрд░реЛрдз рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рд╕рдорд╛рди рд╣реИред рд▓рдЧрднрдЧ - рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдо рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреВрд░реНрдг URL рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ - рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрд╡рд╛ рд╕реЗ рдЧреБрдЬрд░ рд░рд╣реЗ рд╣реИрдВред

рджреВрд╕рд░рд╛ рддрд░реНрдХ рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ - рдФрд░ рдореИрдВ рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкрд╛рдпрдерди рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдЧрдЬрдиреА рдХрд░ рд░рд╣реЗ рд╣реИрдВ

рдЖрдк рдпрд╣ рднреА рдиреЛрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - рдпрджрд┐ рдпрд╣ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдХреАрдЬрд╝) рдЗрд╕ рд╕рддреНрд░ рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЬрд╛рдПрдВрдЧреЗред рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд▓реЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдЧрд░ рд╣рдо рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдордиреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 import requests as r response=r.post(base_url+"/login",{"username":"ellen_key","password":"education"}) print(response.status_code) 

рдореИрдВрдиреЗ рдХреЗрд╡рд▓ base_url рд╡реИрд░рд┐рдПрдмрд▓ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдкреВрд░рд╛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдЧрд▓реЗ рдХреБрдЫ рдХрд╛рд░реНрдп рдХреНрд╡реЗрд░реА рд╣реИрдВ, рдЬреЛ рдПрдХ рд▓реЛрдб рдмрдирд╛рдПрдВрдЧреЗред рдлрд┐рд░ рд╕реЗ, рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдкрд░рд┐рдгрд╛рдо рддреБрд░рдВрдд рдЖрдВрдХрдбрд╝реЛрдВ рдкрд░ рдЬрд╛рдПрдВрдЧреЗред

рдЗрд╕рдХреЗ рдмрд╛рдж UserBehavior class (рдХреНрд▓рд╛рд╕ рдХрд╛ рдирд╛рдо рдХреЛрдИ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рдХрд╛ рдЕрд░реНрде рд╣реИ, рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдЖрд╡реЗрджрди рдХреЗ рд╡реИрдХреНрдпреВрдо рдореЗрдВ рдПрдХ рдЧреЛрд▓рд╛рдХрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ред рд╣рдо рдХрд╛рд░реНрдп рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЙрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╢рдмреНрджрдХреЛрд╖ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рдХреЙрд▓ рдХреА рдЙрдирдХреА рдЖрд╡реГрддреНрддрд┐ред рдЕрдм, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреМрди рд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ - рдЙрдиреНрд╣реЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рдЧрд╛рд░рдВрдЯреА рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЗрдВрдбреЗрдХреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдФрд╕рддрди 2 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рдмрд╛рд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдкреИрд░реЗрдВрдЯ рдХреНрд▓рд╛рд╕ рдЯрд╛рд╕реНрдХрд╕реЗрдЯ рдЖрдкрдХреЛ 4 рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХреЙрд▓ рдХрд╛ рдХреНрд░рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛:

  1. рд╕реЗрдЯрдЕрдк - рдпреВрдЬрд░рдмрд╣реЗрд╡рд┐рдпрд░ (рдЯрд╛рд╕реНрдХрд╕реЗрдЯ) рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ 1 рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирд╣реАрдВ рд╣реИ
  2. on_start - рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд▓реЛрдб рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ 1 рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛
  3. рдХрд╛рд░реНрдп - рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕реНрд╡рдпрдВ
  4. on_stop - рдкрд░реАрдХреНрд╖рдг рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  5. рдЕрд╢реНрд░реБ - рдЯрд╛рд╕реНрдХрд╕реЗрдЯ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ 1 рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рднреА рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдирд╣реАрдВ рд╣реИ

рдпрд╣рд╛рдВ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ 2 рддрд░реАрдХреЗ рд╣реИрдВ: рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдлрд╝рдВрдХреНрд╢рди рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ UserBehavior рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рд╕реАрдзреЗ рддрд░реАрдХреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ:

 from locust import HttpLocust, TaskSet, task class UserBehavior(TaskSet): def on_start(self): self.client.post("/login", {"username":"ellen_key", "password":"education"}) def on_stop(self): self.client.post("/logout", {"username":"ellen_key", "password":"education"}) @task(2) def index(self): self.client.get("/") @task(1) def profile(self): self.client.get("/profile") class WebsiteUser(HttpLocust): task_set = UserBehavior min_wait = 5000 max_wait = 9000 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЙрдирдХреЗ рдХреЙрд▓ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХрд╛рд░реНрдп рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдХреА рдЧрдИ рд╣реИред рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ, рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдЕрдВрддрд┐рдо рд╡рд░реНрдЧ WebsiteUser рд╣реИ (рдХрдХреНрд╖рд╛ рдХрд╛ рдирд╛рдо рдХреЛрдИ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЙрдбрд▓ UserBehavior *** + рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рдмреАрдЪ рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордпред рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдХрд▓реНрдкрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ:



рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ


рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рдПрдВ, рдЬрд┐рд╕ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗ:

 json-server --watch sample_server/db.json 

рд╣рдо рдЙрджрд╛рд╣рд░рдг рдлрд╝рд╛рдЗрд▓ рдХреЛ рднреА рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕реЗрд╡рд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХреЗ, рд▓реЙрдЧрд┐рди рдФрд░ рд▓реЙрдЧрдЖрдЙрдЯ рдХреЛ рд╣рдЯрд╛ рд╕рдХреЗ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗрдЯ рдХрд░ рд╕рдХреЗ:

  1. рдХрд╛рдо рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдореБрдЦреНрдп рдкреГрд╖реНрда 1 рдмрд╛рд░ рдЦреЛрд▓реЗрдВ
  2. рд╕рднреА x2 рдкрджреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
  3. рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ X1 рдкрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦреЗрдВ

 from locust import HttpLocust, TaskSet, task class UserBehavior(TaskSet): def on_start(self): self.client.get("/") @task(2) def posts(self): self.client.get("/posts") @task(1) def comment(self): data = { "postId": 1, "name": "my comment", "email": "test@user.habr", "body": "Author is cool. Some text. Hello world!" } self.client.post("/comments", data) class WebsiteUser(HttpLocust): task_set = UserBehavior min_wait = 1000 max_wait = 2000 

рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдкрд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ

 locust -f my_locust_file.py --host=http://localhost:3000 

рдЬрд╣рд╛рдБ рдореЗрдЬрдмрд╛рди рдкрд░реАрдХреНрд╖рд┐рдд рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдкрддрд╛ рд╣реИред рдпрд╣ рдЙрд╕рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╕рдВрдХреЗрддрд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдкрддреЗ рдЬреЛрдбрд╝реЗ рдЬрд╛рдПрдВрдЧреЗред

рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рд▓реЛрдб рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ http: // localhost: 8089 / рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рд╕рд░реНрд╡рд░ рдкрд░ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдпрд╣рд╛рдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рдЗрд╕ URL рдкрд░ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдкрддреЗ рдЬреЛрдбрд╝реЗ рдЬрд╛рдПрдВрдЧреЗред

рд╕рд╛рде рд╣реА рдпрд╣рд╛рдБ рд╣рдо рд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЙрдирдХреА рд╡реГрджреНрдзрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдмрдЯрди рдкрд░, рд╣рдо рд▓реЛрдб рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ!



рдкрд░рд┐рдгрд╛рдо


рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рдмрд╛рдж, рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ:

  1. рдЬреИрд╕реА рдХрд┐ рдЙрдореНрдореАрдж рдереА, рд╢реБрд░реВ рдореЗрдВ 10 рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рдЧрдП
  2. рдФрд╕рддрди рдкрджреЛрдВ рдХреА рд╕реВрдЪреА рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 2 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЦреЛрд▓реА рдЧрдИ рдереА
  3. рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдФрд╕рдд рдФрд░ рдФрд╕рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рд╣реИ, рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдСрдкрд░реЗрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧреА рдбреЗрдЯрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЕрдм рдЗрд╕реЗ рд▓реЗ рд▓реЛ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВ

рджреВрд╕рд░реЗ рдЯреИрдм рдкрд░, рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рд▓реЛрдб рдЧреНрд░рд╛рдлрд╝ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рд╕рд░реНрд╡рд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд▓реЛрдб рдкрд░ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдЙрд╕рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рддреБрд░рдВрдд рдЧреНрд░рд╛рдл рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред



рддреАрд╕рд░реЗ рдЯреИрдм рдкрд░, рдЖрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ - рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рддреНрд░реБрдЯрд┐ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╕рд░реНрд╡рд░ 4XX рдпрд╛ 5XX рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдкрд╛рда рдпрд╣рд╛рдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рда рдХреЗ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рд╡рд╣ рдЕрдкрд╡рд╛рдж рдЯреИрдм рдореЗрдВ рдЖ рдЬрд╛рдПрдЧреАред рдЕрдм рддрдХ рдореБрдЭреЗ рдХреЛрдб рдореЗрдВ рдкреНрд░рд┐рдВрдЯ () рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдмрд╕реЗ рдЖрдо рддреНрд░реБрдЯрд┐ рд╣реИ - рдпрд╣ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ :)

рдЕрдВрддрд┐рдо рдЯреИрдм рдкрд░, рдЖрдк рд╕реАрдПрд╕рд╡реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рднреА рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдХреНрдпрд╛ рдпреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ? рдЪрд▓рд┐рдП рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░, рдкреНрд░рджрд░реНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ (рдпрджрд┐ рдХреЛрдИ рднреА рд╕рднреА рдореЗрдВ рдмрддрд╛рдИ рдЧрдИ рд╣реИ) рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдзреНрд╡рдирд┐ рдХрд░рддреА рд╣реИ: рдФрд╕рдд рдкреГрд╖реНрда рд▓реЛрдб рд╕рдордп (рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) рдПрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рднрд╛рд░ рдХреЗ рд╕рд╛рде рдПрди рд╕реЗрдХрдВрдб рд╕реЗ рдХрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрдпрд╛ рдХрд░реЗрдВред рдФрд░ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЯрд┐рдбреНрдбреЗ рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ - рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЕрдкреЗрдХреНрд╖рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдЧрд░ рд╣рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдб рдкрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХрдИ рд╡рд░реНрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд░реЛрдВ рдкрд░ рдХрдИ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рд▓реЗрдЦ рдкрд╕рдВрдж рдЖрдпрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ:

  • рдЬрдЯрд┐рд▓ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рджреГрд╢реНрдп рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЪрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ
  • рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг, рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЧрд░ HTTP 200 OK рдЖ рдЧрдпрд╛ рд╣реИ рддреЛ рднреА рдпрд╣ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
  • рд╕реНрдкрд╖реНрдЯ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреИрд╕реЗ рдкрд╣реБрдВрдЪреЗрдВ
  • UI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдкрд░реАрдХреНрд╖рдг
  • рд╡рд┐рддрд░рд┐рдд рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг

Source: https://habr.com/ru/post/hi430502/


All Articles