Best way to test the Wireless performance?

Hi.
I'm curious about how to test wifi speed correctly.
I have several router and extender running in openwrt, then I use my mobile phones as the client.
It shows the phone is connected as AC 867Mbps rate.
If I use iperf3 to test the wireless speed (run iperf3 -s on my NAS then test on APP), most of device could reach 450Mbps. And the R7500 v2 could transfer about 600Mbps.
But if I use the speedtest.net to test it, almost all the AP could only make the speed at 330-370Mbps
(460-510Mbps when test on wired device)
WRT1200AC is the only AP that could get a 400+Mbps in Speedtest.net
So which way is correct to test my wireless performance?
And what result is seems to a normal value for a AC 867Mbps device?

Both tests are valid, when considering end to end results.

Speedtesting in local network means that the router CPU mainly has to handle WiFi processing only.

Speedtesting a WiFi device against an Internet service means that the router CPU has to handle WiFi, routing and firewall processing at the same time, which all take CPU cycles.

So your router CPU seems saturated.
The Linksys WRT series still has one of the most powerful non-x86 CPUs in the router market, so your WRT results seem to confirm the CPU saturation issue, since the Linksys has shown the best results. You might be able to get slightly higher results, if you separate AP and router device.

Higher routing power still tends to need x86 routers or HW-offloading capable devices.
There is this pinned thread about Gigabit Internet in the hardware section explaining more.

450 is a decent throughput for 866 2x2 AC

Thanks for replying.
I forgot to post, actually I'm using the openwrt x86 on my NAS through KVM as the gateway.
So all the test is based on it, the router I tested were all running as dump AP.
That's why I'm so curious.
I think working as dump ap should not need to handle routing and firewall. Then why the results of speedtest become so different